diff options
author | Björn-Egil Dahlberg <[email protected]> | 2014-01-13 18:05:00 +0100 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2014-01-29 11:08:48 +0100 |
commit | 5b4b6c9b6bd1cf258841004f2e11bb2a82ebfe24 (patch) | |
tree | 380181058a169355343424f64e0feccda64f60ec /lib/compiler/src/v3_core.erl | |
parent | 1f6c5e88f4f387cc27c9affbdf1ceaae7cfdcfd3 (diff) | |
download | otp-5b4b6c9b6bd1cf258841004f2e11bb2a82ebfe24.tar.gz otp-5b4b6c9b6bd1cf258841004f2e11bb2a82ebfe24.tar.bz2 otp-5b4b6c9b6bd1cf258841004f2e11bb2a82ebfe24.zip |
compiler: Squash #c_map_pair_*{} to #c_map_pair{}
Simplify compiler internals and parsing of core format.
Diffstat (limited to 'lib/compiler/src/v3_core.erl')
-rw-r--r-- | lib/compiler/src/v3_core.erl | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/compiler/src/v3_core.erl b/lib/compiler/src/v3_core.erl index b5fb65ff08..e30bfa729c 100644 --- a/lib/compiler/src/v3_core.erl +++ b/lib/compiler/src/v3_core.erl @@ -712,13 +712,13 @@ map_pair_list(Es, St) -> {K,Ep0,St1} = safe(K0, St0), {V,Ep1,St2} = safe(V0, St1), A = lineno_anno(L, St2), - Pair = #c_map_pair_assoc{anno=A,key=K,val=V}, + Pair = #c_map_pair{op=#c_literal{val=assoc},anno=A,key=K,val=V}, {[Pair|Ces],Ep0 ++ Ep1 ++ Esp,St2}; ({map_field_exact,L,K0,V0}, {Ces,Esp,St0}) -> {K,Ep0,St1} = safe(K0, St0), {V,Ep1,St2} = safe(V0, St1), A = lineno_anno(L, St2), - Pair = #c_map_pair_exact{anno=A,key=K,val=V}, + Pair = #c_map_pair{op=#c_literal{val=exact},anno=A,key=K,val=V}, {[Pair|Ces],Ep0 ++ Ep1 ++ Esp,St2} end, {[],[],St}, Es). @@ -1520,7 +1520,8 @@ pattern({map_field_exact,L,K,V}, St) -> _ -> pattern(K,St) end, - #c_map_pair_exact{anno=lineno_anno(L, St), + #c_map_pair{anno=lineno_anno(L, St), + op=#c_literal{val=exact}, key=Key, val=pattern(V, St)}; pattern({bin,L,Ps}, St) -> @@ -1871,9 +1872,9 @@ upattern(#c_tuple{es=Es0}=Tuple, Ks, St0) -> upattern(#c_map{es=Es0}=Map, Ks, St0) -> {Es1,Esg,Esv,Eus,St1} = upattern_list(Es0, Ks, St0), {Map#c_map{es=Es1},Esg,Esv,Eus,St1}; -upattern(#c_map_pair_exact{val=V0}=MapPair, Ks, St0) -> +upattern(#c_map_pair{op=#c_literal{val=exact},val=V0}=MapPair, Ks, St0) -> {V,Vg,Vv,Vu,St1} = upattern(V0, Ks, St0), - {MapPair#c_map_pair_exact{val=V},Vg,Vv,Vu,St1}; + {MapPair#c_map_pair{val=V},Vg,Vv,Vu,St1}; upattern(#c_binary{segments=Es0}=Bin, Ks, St0) -> {Es1,Esg,Esv,Eus,St1} = upat_bin(Es0, Ks, St0), {Bin#c_binary{segments=Es1},Esg,Esv,Eus,St1}; @@ -2204,9 +2205,7 @@ is_simple(#c_cons{hd=H,tl=T}) -> is_simple(H) andalso is_simple(T); is_simple(#c_tuple{es=Es}) -> is_simple_list(Es); is_simple(#c_map{es=Es}) -> is_simple_list(Es); -is_simple(#c_map_pair_assoc{key=K,val=V}) -> - is_simple(K) andalso is_simple(V); -is_simple(#c_map_pair_exact{key=K,val=V}) -> +is_simple(#c_map_pair{key=K,val=V}) -> is_simple(K) andalso is_simple(V); is_simple(_) -> false. |