diff options
author | John Högberg <john@erlang.org> | 2023-03-17 12:00:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-17 12:00:47 +0100 |
commit | b75de648ff72ca22825b6cb6858bbea1ded1dd73 (patch) | |
tree | f0eb824719281c55aea1edbe422a69eace6f8da1 /lib/stdlib | |
parent | 6d813a9f804997bc173632d1e187cb4356fad83a (diff) | |
parent | 15dfc32530ac0aade2702dd7265a71272c5ab431 (diff) | |
download | erlang-b75de648ff72ca22825b6cb6858bbea1ded1dd73.tar.gz |
Merge pull request #7023 from jhogberg/john/stdlib/dont-warn-on-underspecified-opaques/OTP-18518
erl_lint: Stop raising warnings for underspecified opaques
Diffstat (limited to 'lib/stdlib')
-rw-r--r-- | lib/stdlib/src/erl_lint.erl | 18 | ||||
-rw-r--r-- | lib/stdlib/test/erl_lint_SUITE.erl | 8 |
2 files changed, 1 insertions, 25 deletions
diff --git a/lib/stdlib/src/erl_lint.erl b/lib/stdlib/src/erl_lint.erl index 959c04184a..f8d629c02c 100644 --- a/lib/stdlib/src/erl_lint.erl +++ b/lib/stdlib/src/erl_lint.erl @@ -484,9 +484,6 @@ format_error({deprecated_builtin_type, {Name, Arity}, format_error({not_exported_opaque, {TypeName, Arity}}) -> io_lib:format("opaque type ~tw~s is not exported", [TypeName, gen_type_paren(Arity)]); -format_error({underspecified_opaque, {TypeName, Arity}}) -> - io_lib:format("opaque type ~tw~s is underspecified and therefore meaningless", - [TypeName, gen_type_paren(Arity)]); format_error({bad_dialyzer_attribute,Term}) -> io_lib:format("badly formed dialyzer attribute: ~tw", [Term]); format_error({bad_dialyzer_option,Term}) -> @@ -2906,16 +2903,7 @@ type_def(Attr, Anno, TypeName, ProtoType, Args, St0) -> true -> add_error(Anno, {redefine_type, TypePair}, St0); false -> - St1 = case - Attr =:= opaque andalso - is_underspecified(ProtoType, Arity) - of - true -> - Warn = {underspecified_opaque, TypePair}, - add_warning(Anno, Warn, St0); - false -> St0 - end, - StoreType(St1) + StoreType(St0) end end. @@ -2936,10 +2924,6 @@ warn_redefined_builtin_type(Anno, TypePair, #lint{compile=Opts}=St) -> St end. -is_underspecified({type,_,term,[]}, 0) -> true; -is_underspecified({type,_,any,[]}, 0) -> true; -is_underspecified(_ProtType, _Arity) -> false. - check_type(Types, St) -> {SeenVars, St1} = check_type_1(Types, maps:new(), St), maps:fold(fun(Var, {seen_once, Anno}, AccSt) -> diff --git a/lib/stdlib/test/erl_lint_SUITE.erl b/lib/stdlib/test/erl_lint_SUITE.erl index 3d5f081cc5..834eb23335 100644 --- a/lib/stdlib/test/erl_lint_SUITE.erl +++ b/lib/stdlib/test/erl_lint_SUITE.erl @@ -2938,14 +2938,6 @@ otp_10436(Config) when is_list(Config) -> {warnings,[{{4,14},erl_lint,{not_exported_opaque,{t2,0}}}, {{4,14},erl_lint,{unused_type,{t2,0}}}]} = run_test2(Config, Ts, []), - Ts2 = <<"-module(otp_10436_2). - -export_type([t1/0, t2/0]). - -opaque t1() :: term(). - -opaque t2() :: any(). - ">>, - {warnings,[{{3,15},erl_lint,{underspecified_opaque,{t1,0}}}, - {{4,15},erl_lint,{underspecified_opaque,{t2,0}}}]} = - run_test2(Config, Ts2, []), ok. %% OTP-11254. M:F/A could crash the linter. |