From 90a948d7cf7f188b5461c2a7bb25a656ec681966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn-Egil=20Dahlberg?= Date: Tue, 11 Mar 2014 14:50:46 +0100 Subject: compiler: Validate Map src Reject all expressions that are known to fail. Emit 'badarg' for those expressions. Ex. []#{ a => 1} Is not a valid map update expression. --- lib/compiler/src/cerl.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/compiler/src/cerl.erl') diff --git a/lib/compiler/src/cerl.erl b/lib/compiler/src/cerl.erl index 744ebc7aca..9024999d7f 100644 --- a/lib/compiler/src/cerl.erl +++ b/lib/compiler/src/cerl.erl @@ -1585,9 +1585,9 @@ map_val(#c_map{var = M}) -> M. ann_c_map(As,Es) -> - ann_c_map(As, #c_literal{val=[]}, Es). + ann_c_map(As, #c_literal{val=#{}}, Es). -ann_c_map(As,#c_literal{val=[]}=M,Es) -> +ann_c_map(As,#c_literal{val=Mval}=M,Es) when is_map(Mval), map_size(Mval) =:= 0 -> Pairs = [[K,V]||#c_map_pair{key=K,val=V}<-Es], IsLit = lists:foldl(fun(Pair,Res) -> Res andalso is_lit_list(Pair) -- cgit v1.2.3