diff --git a/lib/stdlib/src/erl_eval.erl b/lib/stdlib/src/erl_eval.erl index 2b8a22c318a..0b5e6cf5e5f 100644 --- a/lib/stdlib/src/erl_eval.erl +++ b/lib/stdlib/src/erl_eval.erl @@ -465,10 +465,10 @@ expr({record_field,Anno,{var,_,Src0},{M,N},{atom,_,K}}, Bs, _Lf, Ef, RBs, _FUVs) end; _ -> apply_error({unbound,Src0}, ?STACKTRACE, Anno, Bs, Ef, RBs) end; -expr({record_field,Anno,{var,_,Src0},N,{atom,_,K}}, Bs, _Lf, Ef, RBs, _FUVs) -> +expr({record_field,Anno,{var,_,Src0},[],{atom,_,K}}, Bs, _Lf, Ef, RBs, _FUVs) -> case binding(Src0, Bs) of {value, Src1} -> - case is_record(Src1, N) of + case is_record(Src1) of true -> Val = records:get(K, Src1), ret_expr(Val, Bs, RBs); @@ -477,10 +477,10 @@ expr({record_field,Anno,{var,_,Src0},N,{atom,_,K}}, Bs, _Lf, Ef, RBs, _FUVs) -> end; _ -> apply_error({unbound,Src0}, ?STACKTRACE, Anno, Bs, Ef, RBs) end; -expr({record_field,Anno,{var,_,Src0},[],{atom,_,K}}, Bs, _Lf, Ef, RBs, _FUVs) -> +expr({record_field,Anno,{var,_,Src0},N,{atom,_,K}}, Bs, _Lf, Ef, RBs, _FUVs) -> case binding(Src0, Bs) of {value, Src1} -> - case is_record(Src1) of + case is_record(Src1, N) of true -> Val = records:get(K, Src1), ret_expr(Val, Bs, RBs); diff --git a/lib/stdlib/test/shell_SUITE.erl b/lib/stdlib/test/shell_SUITE.erl index 032d249e49e..065132c5aa0 100644 --- a/lib/stdlib/test/shell_SUITE.erl +++ b/lib/stdlib/test/shell_SUITE.erl @@ -419,8 +419,12 @@ shell_attribute_test(Config) -> {expect, ~S"\Q#shell_default:native{i = 42,j = 99}\E"}, {putline, ~S"Rec#native.i."}, {expect, ~S"\Q42\E"}, + {putline, ~S"Rec#_.i."}, + {expect, ~S"\Q42\E"}, {putline, ~S"Rec#native{j=100}."}, {expect, ~S"\Q#shell_default:native{i = 42,j = 100}\E"}, + {putline, ~S"Rec#_{j=100}."}, + {expect, ~S"\Q#shell_default:native{i = 42,j = 100}\E"}, {putline, ~S"#native{z=99}."}, {expect, ~S"\Q* 1:9: field z undefined in record native\E"} ],[],"", ["-kernel","shell_history","enabled",