diff options
author | Björn Gustavsson <[email protected]> | 2012-01-26 10:43:49 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2012-01-26 10:43:49 +0100 |
commit | 0ea66a32ea84121bd0b7a8e7aed743b2c4593ec6 (patch) | |
tree | 744ceaaa73408578a26171118a9aa09ac8311144 /lib/stdlib/src/erl_expand_records.erl | |
parent | 716f6e4c99dd03ee48087bbebe37bfb42c08835e (diff) | |
parent | 9d2a2e3db06e861045e51ca3cc8adb9cf8fc467d (diff) | |
download | otp-0ea66a32ea84121bd0b7a8e7aed743b2c4593ec6.tar.gz otp-0ea66a32ea84121bd0b7a8e7aed743b2c4593ec6.tar.bz2 otp-0ea66a32ea84121bd0b7a8e7aed743b2c4593ec6.zip |
Merge branch 'maint'
* maint:
Update primary bootstrap
erl_lint: Disallow call to is_record/3 if there is a local is_record/3
Fix crash in trace_info({M,F,A}, Flags) when M:F/A has native code
Ensure that generated record operations don't call local functions
Diffstat (limited to 'lib/stdlib/src/erl_expand_records.erl')
-rw-r--r-- | lib/stdlib/src/erl_expand_records.erl | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/stdlib/src/erl_expand_records.erl b/lib/stdlib/src/erl_expand_records.erl index 20fd247cea..1c69a131f9 100644 --- a/lib/stdlib/src/erl_expand_records.erl +++ b/lib/stdlib/src/erl_expand_records.erl @@ -452,8 +452,10 @@ conj([], _E) -> conj([{{Name,_Rp},L,R,Sz} | AL], E) -> NL = neg_line(L), T1 = {op,NL,'orelse', - {call,NL,{atom,NL,is_record},[R,{atom,NL,Name},{integer,NL,Sz}]}, - {atom,NL,fail}}, + {call,NL, + {remote,NL,{atom,NL,erlang},{atom,NL,is_record}}, + [R,{atom,NL,Name},{integer,NL,Sz}]}, + {atom,NL,fail}}, T2 = case conj(AL, none) of empty -> T1; C -> {op,NL,'and',C,T1} @@ -581,7 +583,9 @@ strict_get_record_field(Line, R, {atom,_,F}=Index, Name, St0) -> ExpRp = erl_lint:modify_line(ExpR, fun(_L) -> 0 end), RA = {{Name,ExpRp},Line,ExpR,length(Fs)+1}, St2 = St1#exprec{strict_ra = [RA | St1#exprec.strict_ra]}, - {{call,Line,{atom,Line,element},[I,ExpR]},St2} + {{call,Line, + {remote,Line,{atom,Line,erlang},{atom,Line,element}}, + [I,ExpR]},St2} end. record_pattern(I, I, Var, Sz, Line, Acc) -> @@ -593,7 +597,9 @@ record_pattern(_, _, _, _, _, Acc) -> reverse(Acc). sloppy_get_record_field(Line, R, Index, Name, St) -> Fs = record_fields(Name, St), I = index_expr(Line, Index, Name, Fs), - expr({call,Line,{atom,Line,element},[I,R]}, St). + expr({call,Line, + {remote,Line,{atom,Line,erlang},{atom,Line,element}}, + [I,R]}, St). strict_record_tests([strict_record_tests | _]) -> true; strict_record_tests([no_strict_record_tests | _]) -> false; @@ -710,7 +716,8 @@ record_setel(R, Name, Fs, Us0) -> {'case',Lr,R, [{clause,Lr,[{tuple,Lr,[{atom,Lr,Name} | Wildcards]}],[], [foldr(fun ({I,Lf,Val}, Acc) -> - {call,Lf,{atom,Lf,setelement},[I,Acc,Val]} end, + {call,Lf,{remote,Lf,{atom,Lf,erlang}, + {atom,Lf,setelement}},[I,Acc,Val]} end, R, Us)]}, {clause,NLr,[{var,NLr,'_'}],[], [call_error(NLr, {tuple,NLr,[{atom,NLr,badrecord},{atom,NLr,Name}]})]}]}. |