@@ -1075,7 +1075,7 @@ defmodule Code.Formatter do
10751075 defp local_to_algebra ( fun , meta , args , context , state ) when is_atom ( fun ) do
10761076 skip_parens =
10771077 cond do
1078- not Keyword . get ( meta , :no_parens , false ) -> :required
1078+ not Keyword . get ( meta , :no_parens , false ) -> :skip_if_only_do_end
10791079 local_without_parens? ( fun , args , state ) -> :skip_unless_many_args
10801080 true -> :skip_if_do_end
10811081 end
@@ -1093,9 +1093,10 @@ defmodule Code.Formatter do
10931093 { doc , state }
10941094 end
10951095
1096- # parens may one of:
1096+ # parens may be one of:
10971097 #
10981098 # * :skip_unless_many_args - skips parens unless we are the argument context
1099+ # * :skip_if_only_do_end - skip parens if we are do-end and the only arg
10991100 # * :skip_if_do_end - skip parens if we are do-end
11001101 # * :required - never skip parens
11011102 #
@@ -1111,11 +1112,16 @@ defmodule Code.Formatter do
11111112
11121113 if blocks = do_end_blocks ( last , state ) do
11131114 { call_doc , state } =
1114- if rest == [ ] do
1115- { " do" , state }
1116- else
1117- no_parens? = parens != :required
1118- call_args_to_algebra_no_blocks ( meta , rest , no_parens? , list_to_keyword? , " do" , state )
1115+ case rest do
1116+ [ ] when parens == :required ->
1117+ { "() do" , state }
1118+
1119+ [ ] ->
1120+ { " do" , state }
1121+
1122+ _ ->
1123+ no_parens? = parens not in [ :required , :skip_if_only_do_end ]
1124+ call_args_to_algebra_no_blocks ( meta , rest , no_parens? , list_to_keyword? , " do" , state )
11191125 end
11201126
11211127 { blocks_doc , state } = do_end_blocks_to_algebra ( blocks , state )
0 commit comments