crystal icon indicating copy to clipboard operation
crystal copied to clipboard

Compiler: indent `begin` `Expression`s that are direct node children

Open HertzDevil opened this issue 1 year ago • 0 comments

Fixes #12361. The full list of affected nodes are:

macro show(x)
  {% p x %}
  {% puts "" %}
end

show(if 1; begin; 2; end; else; begin; 3; end; end)
show(while 1; begin; 2; end; end)
show(case 1; when 2; begin; 3; end; else; begin; 4; end; end)
show(select; when foo; begin; 1; end; else; begin; 2; end; end)
show(begin; begin; 1; end; rescue; begin; 2; end; else; begin; 3; end; ensure; begin; 4; end; end)

show(class Foo; begin; 1; end; end)
show(module Foo; begin; 1; end; end)

show(def foo; begin; 1; end; end)
show(-> { begin; 1; end })
show(foo { begin; 1; end })
if 1
begin
    2
  endelse
begin
    3
  endend

while 1
begin
    2
  endend

case 1
when 2
begin
    3
  endelse
begin
    4
  endend

select
when foo
begin
    1
  endelse
begin
    2
  endend


begin
begin
    1
  endrescue
begin
    2
  endelse
begin
    3
  endensure
begin
    4
  endend

class Foo
begin
    1
  endend

module Foo
begin
    1
  endend

def foo
begin
    1
  endend

-> do
begin
    1
  endend

foo do
begin
    1
  endend

External funs are also affected but they already emitted an extra newline in the fun body.

HertzDevil avatar Aug 06 '22 18:08 HertzDevil