diff --git a/lib/stdlib/src/erl_lint.erl b/lib/stdlib/src/erl_lint.erl index 16571d410395..afb2c994718f 100644 --- a/lib/stdlib/src/erl_lint.erl +++ b/lib/stdlib/src/erl_lint.erl @@ -5278,7 +5278,7 @@ check_record_info_call(_Anno,_Aa,[{atom,Ai,Info},{atom,_An,Name}], St) -> true -> case St#lint.records of #{Name := {_,tuple,_}} -> - St; + used_record(Name, St); #{} -> add_error(Ai, native_record_illegal_record_info, St) end; diff --git a/lib/stdlib/test/erl_lint_SUITE.erl b/lib/stdlib/test/erl_lint_SUITE.erl index 6c6a854c9b3f..624e12132982 100644 --- a/lib/stdlib/test/erl_lint_SUITE.erl +++ b/lib/stdlib/test/erl_lint_SUITE.erl @@ -5695,9 +5695,10 @@ illegal_zip_generator(Config) -> ok. -%% GH-9694. Only record_info/2 should be checked for illegal_record_info record_info_0(Config) -> - Ts = [{record_info_0, + Ts = [%% GH-9694. Only record_info/2 should be checked for + %% illegal_record_info + {record_info_0, <<"-export([f/0]). record_info() -> ok. f() -> record_info(). @@ -5710,6 +5711,14 @@ record_info_0(Config) -> g() -> record_info(ok). ">>, [], + []}, + %% ERIERL-1345: record_info/2 should mark tuple records as used + {record_info_2, + <<"-export([h/0]). + -record(rec,{a,b,c}). + h() -> record_info(fields, rec). + ">>, + [], []} ], [] = run(Config, Ts),