diff options
| author | Anthony Ramine <[email protected]> | 2014-03-11 00:39:21 +0100 | 
|---|---|---|
| committer | Björn-Egil Dahlberg <[email protected]> | 2014-03-18 14:39:28 +0100 | 
| commit | ca39d2c98507963f461adb78975e5adf35d6aafe (patch) | |
| tree | eeb6419e1ef637baae9608c4dbe08b3da5567304 /lib/compiler | |
| parent | aab1afa8a63081f2c30f83ebe8b6caaac979795c (diff) | |
| download | otp-ca39d2c98507963f461adb78975e5adf35d6aafe.tar.gz otp-ca39d2c98507963f461adb78975e5adf35d6aafe.tar.bz2 otp-ca39d2c98507963f461adb78975e5adf35d6aafe.zip  | |
Properly collect variables in map expressions in v3_core
Reported-by: José Valim
Diffstat (limited to 'lib/compiler')
| -rw-r--r-- | lib/compiler/src/v3_core.erl | 2 | ||||
| -rw-r--r-- | lib/compiler/test/map_SUITE.erl | 12 | 
2 files changed, 12 insertions, 2 deletions
diff --git a/lib/compiler/src/v3_core.erl b/lib/compiler/src/v3_core.erl index 082809b8a0..04210ae243 100644 --- a/lib/compiler/src/v3_core.erl +++ b/lib/compiler/src/v3_core.erl @@ -2206,6 +2206,8 @@ lit_vars(Lit) -> lit_vars(Lit, []).  lit_vars(#c_cons{hd=H,tl=T}, Vs) -> lit_vars(H, lit_vars(T, Vs));  lit_vars(#c_tuple{es=Es}, Vs) -> lit_list_vars(Es, Vs); +lit_vars(#c_map{arg=V,es=Es}, Vs) -> lit_vars(V, lit_list_vars(Es, Vs)); +lit_vars(#c_map_pair{key=K,val=V}, Vs) -> lit_vars(K, lit_vars(V, Vs));  lit_vars(#c_var{name=V}, Vs) -> add_element(V, Vs);   lit_vars(_, Vs) -> Vs.				%These are atomic diff --git a/lib/compiler/test/map_SUITE.erl b/lib/compiler/test/map_SUITE.erl index b7e27afef1..90eae6fb4f 100644 --- a/lib/compiler/test/map_SUITE.erl +++ b/lib/compiler/test/map_SUITE.erl @@ -43,7 +43,8 @@  	%% errors in 17.0-rc1  	t_update_values/1, -        t_expand_map_update/1 +        t_expand_map_update/1, +        t_export/1      ]).  suite() -> []. @@ -70,7 +71,8 @@ all() -> [  	%% errors in 17.0-rc1  	t_update_values, -        t_expand_map_update +        t_expand_map_update, +        t_export      ].  groups() -> []. @@ -285,6 +287,12 @@ t_expand_map_update(Config) when is_list(Config) ->      #{<<"hello">> := <<"les gens">>} = M,      ok. +t_export(Config) when is_list(Config) -> +    Raclette = id(#{}), +    case brie of brie -> Fromage = Raclette end, +    Raclette = Fromage#{}, +    ok. +  check_val(#{val1:=V1, val2:=V2},V1,V2) -> ok.  get_val(#{ "wazzup" := _, val := V}) -> V;  | 
