crystal
crystal copied to clipboard
Compiler: indent `begin` `Expression`s that are direct node children
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.