Skip to content

Commit 151695b

Browse files
author
José Valim
committed
Add tests for nested whens
1 parent 2d8259b commit 151695b

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

lib/elixir/test/elixir/kernel/quote_test.exs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,9 @@ defmodule Kernel.QuoteTest do
115115
test :when do
116116
assert {:->,_,[{[{:when,_,[1,2,3,4]}],_,5}]} = quote(do: (1, 2, 3 when 4 -> 5))
117117
assert {:->,_,[{[{:when,_,[1,2,3,4]}],_,5}]} = quote(do: ((1, 2, 3) when 4 -> 5))
118+
119+
assert {:->,_,[{[{:when,_,[1,2,3,{:when,_,[4,5]}]}],_,6}]} =
120+
quote(do: ((1, 2, 3) when 4 when 5 -> 6))
118121
end
119122

120123
test :stab do

lib/elixir/test/erlang/function_test.erl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,20 @@ function_call_with_multiline_test() ->
109109
function_call_with_tabs_test() ->
110110
{3, _} = eval("a = fn a, b -> a + b end; a .\n\t(1,2)").
111111

112+
function_call_with_args_and_nested_when_test() ->
113+
{Fun, _} = eval("fn a, b when a == 1 when b == 2 -> a + b end"),
114+
3 = Fun(1, 2),
115+
2 = Fun(0, 2),
116+
1 = Fun(1, 0),
117+
?assertError(function_clause, Fun(0, 0)).
118+
119+
function_call_with_parens_args_and_nested_when_test() ->
120+
{Fun, _} = eval("fn\n(a, b) when a == 1 when b == 2 -> a + b\nend"),
121+
3 = Fun(1, 2),
122+
2 = Fun(0, 2),
123+
1 = Fun(1, 0),
124+
?assertError(function_clause, Fun(0, 0)).
125+
112126
%% Partial application
113127

114128
require_partial_application_test() ->

0 commit comments

Comments
 (0)