We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 126a5a6 commit 28367d9Copy full SHA for 28367d9
lib/elixir/src/elixir_translator.erl
@@ -86,14 +86,19 @@ translate({'try', Meta, [Clauses]}, RS) when is_list(Clauses) ->
86
Catch = [Tuple || { X, _ } = Tuple <- Clauses, X == 'rescue' orelse X == 'catch'],
87
{ TCatch, SC } = elixir_try:clauses(Meta, Catch, mergec(S, SB)),
88
89
- After = proplists:get_value('after', Clauses, nil),
90
- { TAfter, SA } = translate(After, mergec(S, SC)),
+ case lists:keyfind('after', 1, Clauses) of
+ { 'after', After } ->
91
+ { TBlock, SA } = translate(After, mergec(S, SC)),
92
+ TAfter = unblock(TBlock);
93
+ false ->
94
+ { TAfter, SA } = { [], mergec(S, SC) }
95
+ end,
96
97
Else = elixir_clauses:get_pairs(else, Clauses),
98
{ TElse, SE } = elixir_clauses:clauses(Meta, Else, mergec(S, SA)),
99
100
SF = (mergec(S, SE))#elixir_scope{noname=RS#elixir_scope.noname},
- { { 'try', ?line(Meta), unblock(TDo), TElse, TCatch, unblock(TAfter) }, SF };
101
+ { { 'try', ?line(Meta), unblock(TDo), TElse, TCatch, TAfter }, SF };
102
103
%% Receive
104
lib/elixir/test/erlang/control_test.erl
@@ -291,3 +291,6 @@ optimized_oror_test() ->
291
[{atom,0,done}]},
292
{clause,1,[{var,1,Var}],[],[{var,1,Var}]}]
293
} = to_erl("is_list([]) || :done").
294
+
295
+no_after_in_try_test() ->
296
+ { 'try', _, [_], [_], _, [] } = to_erl("try do :foo.bar() else _ -> :ok end").
0 commit comments