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 e70d972 commit 8d50e1fCopy full SHA for 8d50e1f
lib/elixir/src/elixir_with.erl
@@ -45,7 +45,7 @@ expand(Meta, Args, E) ->
45
46
{ECases, EC} = lists:mapfoldl(fun expand/2, E, Cases),
47
{EDoExpr, _} = elixir_exp:expand(DoExpr, EC),
48
- {EElseExpr, _} = expand_else(ElseExpr, E),
+ {EElseExpr, _} = expand_else(Meta, ElseExpr, E),
49
{{with, Meta, ECases ++ [[{do, EDoExpr} | EElseExpr]]}, E}.
50
51
expand({'<-', Meta, [Left, Right]}, E) ->
@@ -55,11 +55,14 @@ expand({'<-', Meta, [Left, Right]}, E) ->
55
expand(X, E) ->
56
elixir_exp:expand(X, E).
57
58
-expand_else(KV, E) when is_list(KV) ->
+expand_else(_Meta, KV, E) when is_list(KV) ->
59
{[{do, EClauses}], EC} = elixir_exp_clauses:'case'([], [{do, KV}], E),
60
{[{else, EClauses}], EC};
61
-expand_else(nil, E) ->
62
- {[], E}.
+expand_else(_Meta, nil, E) ->
+ {[], E};
63
+expand_else(Meta, _KV, E) ->
64
+ Message = "expected -> clauses for else in with",
65
+ elixir_errors:compile_error(Meta, ?m(E, file), Message, []).
66
67
%% Translation
68
lib/elixir/test/elixir/kernel/with_test.exs
@@ -75,6 +75,12 @@ defmodule Kernel.WithTest do
75
end
76
77
78
+ test "invalid else form" do
79
+ assert_raise CompileError, "nofile:1: expected -> clauses for else in with", fn ->
80
+ Code.eval_quoted(quote do: with(_ <- true, do: :ok, else: :error))
81
+ end
82
83
+
84
defp four() do
85
4
86
0 commit comments