diff options
author | Björn-Egil Dahlberg <[email protected]> | 2014-05-09 17:59:12 +0200 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2014-05-09 17:59:12 +0200 |
commit | 1c817ecd054780551bcbe8b5a0e30bea2b3da04e (patch) | |
tree | e1a57c1592b3662cc785f4770e210140593a9986 /lib/hipe/test/maps_SUITE_data/maps_update_exact.erl | |
parent | 659213c7facb71410fe990d5099abf3019c58b3e (diff) | |
parent | f6d5234c391a0ba834337c3e92ee5fb377834a32 (diff) | |
download | otp-1c817ecd054780551bcbe8b5a0e30bea2b3da04e.tar.gz otp-1c817ecd054780551bcbe8b5a0e30bea2b3da04e.tar.bz2 otp-1c817ecd054780551bcbe8b5a0e30bea2b3da04e.zip |
Merge branch 'ks/hipe-map-support/OTP-11900' into maint
* ks/hipe-map-support/OTP-11900:
Add five new test files for maps in the HiPE test suite
Copy the tests for maps from the compiler application to a new HiPE test suite
Translate the put_map_assoc and put_map_exact BEAM instructions to ICode
Translate the has_map_fields and get_map_elements BEAM instructions to ICode
Diffstat (limited to 'lib/hipe/test/maps_SUITE_data/maps_update_exact.erl')
-rw-r--r-- | lib/hipe/test/maps_SUITE_data/maps_update_exact.erl | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/hipe/test/maps_SUITE_data/maps_update_exact.erl b/lib/hipe/test/maps_SUITE_data/maps_update_exact.erl new file mode 100644 index 0000000000..6e5acb3283 --- /dev/null +++ b/lib/hipe/test/maps_SUITE_data/maps_update_exact.erl @@ -0,0 +1,32 @@ +-module(maps_update_exact). +-export([test/0]). + +test() -> + M0 = id(#{1=>a,2=>b,3.0=>c,4=>d,5=>e}), + + M1 = M0#{1:=42,2:=100,4:=[a,b,c]}, + #{1:=42,2:=100,3.0:=c,4:=[a,b,c],5:=e} = M1, + M1 = M0#{1:=wrong,1=>42,2=>wrong,2:=100,4:=[a,b,c]}, + + M2 = M0#{3.0:=new}, + #{1:=a,2:=b,3.0:=new,4:=d,5:=e} = M2, + M2 = M0#{3.0=>wrong,3.0:=new}, + true = M2 =/= M0#{3=>right,3.0:=new}, + #{ 3 := right, 3.0 := new } = M0#{3=>right,3.0:=new}, + + M3 = id(#{ 1 => val}), + #{1 := update2,1.0 := new_val4} = M3#{ + 1.0 => new_val1, 1 := update, 1=> update3, + 1 := update2, 1.0 := new_val2, 1.0 => new_val3, + 1.0 => new_val4 }, + + %% Errors cases. + {'EXIT',{badarg,_}} = (catch ((id(nil))#{ a := b })), + {'EXIT',{badarg,_}} = (catch M0#{nonexisting:=val}), + {'EXIT',{badarg,_}} = (catch M0#{1.0:=v,1.0=>v2}), + {'EXIT',{badarg,_}} = (catch M0#{42.0:=v,42:=v2}), + {'EXIT',{badarg,_}} = (catch M0#{42=>v1,42.0:=v2,42:=v3}), + ok. + +%% Use this function to avoid compile-time evaluation of an expression. +id(I) -> I. |