diff options
Diffstat (limited to 'lib/stdlib')
| -rw-r--r-- | lib/stdlib/doc/src/binary.xml | 4 | ||||
| -rw-r--r-- | lib/stdlib/src/erl_internal.erl | 8 | ||||
| -rw-r--r-- | lib/stdlib/src/erl_lint.erl | 20 | ||||
| -rw-r--r-- | lib/stdlib/test/erl_lint_SUITE.erl | 62 | ||||
| -rw-r--r-- | lib/stdlib/test/erl_lint_SUITE_data/predef.erl | 4 | 
5 files changed, 28 insertions, 70 deletions
diff --git a/lib/stdlib/doc/src/binary.xml b/lib/stdlib/doc/src/binary.xml index 2410f1f9b8..0fde763bfb 100644 --- a/lib/stdlib/doc/src/binary.xml +++ b/lib/stdlib/doc/src/binary.xml @@ -5,7 +5,7 @@    <header>      <copyright>        <year>2009</year> -      <year>2013</year> +      <year>2014</year>        <holder>Ericsson AB, All Rights Reserved</holder>      </copyright>      <legalnotice> @@ -450,7 +450,7 @@ store(Binary, GBSet) ->        </code>        <p>In this example, we chose to copy the binary content before -      inserting it in the <c>gb_set()</c> if it references a binary more than +      inserting it in the <c>gb_sets:set()</c> if it references a binary more than        twice the size of the data we're going to keep. Of course        different rules for when copying will apply to different        programs.</p> diff --git a/lib/stdlib/src/erl_internal.erl b/lib/stdlib/src/erl_internal.erl index 5e6391da1f..e523b6b476 100644 --- a/lib/stdlib/src/erl_internal.erl +++ b/lib/stdlib/src/erl_internal.erl @@ -540,7 +540,6 @@ old_bif(Name, A) when is_atom(Name), is_integer(A) -> false.  is_type(any, 0) -> true;  is_type(arity, 0) -> true; -is_type(array, 0) -> true; % To be removed.  is_type(atom, 0) -> true;  is_type(binary, 0) -> true;  is_type(bitstring, 0) -> true; @@ -548,12 +547,8 @@ is_type(bool, 0) -> true;  is_type(boolean, 0) -> true;  is_type(byte, 0) -> true;  is_type(char, 0) -> true; -is_type(dict, 0) -> true; % To be removed. -is_type(digraph, 0) -> true; % To be removed.  is_type(float, 0) -> true;  is_type(function, 0) -> true; -is_type(gb_set, 0) -> true; % To be removed. -is_type(gb_tree, 0) -> true; % To be removed.  is_type(identifier, 0) -> true;  is_type(integer, 0) -> true;  is_type(iodata, 0) -> true; @@ -581,12 +576,9 @@ is_type(number, 0) -> true;  is_type(pid, 0) -> true;  is_type(port, 0) -> true;  is_type(pos_integer, 0) -> true; -is_type(queue, 0) -> true; % To be removed.  is_type(reference, 0) -> true; -is_type(set, 0) -> true; % To be removed.  is_type(string, 0) -> true;  is_type(term, 0) -> true; -is_type(tid, 0) -> true; % To be removed.  is_type(timeout, 0) -> true;  is_type(tuple, 0) -> true;  is_type(_, _) -> false. diff --git a/lib/stdlib/src/erl_lint.erl b/lib/stdlib/src/erl_lint.erl index 10ed9c27e1..f34c3b5c7b 100644 --- a/lib/stdlib/src/erl_lint.erl +++ b/lib/stdlib/src/erl_lint.erl @@ -2852,23 +2852,9 @@ is_newly_introduced_builtin_type({Name, _}) when is_atom(Name) -> false.  is_obsolete_builtin_type(TypePair) ->      obsolete_builtin_type(TypePair) =/= no. -%% Obsolete in OTP 17.0. -obsolete_builtin_type({array, 0}) -> -    {deprecated, {array, array, 1}, "OTP 18.0"}; -obsolete_builtin_type({dict, 0}) -> -    {deprecated, {dict, dict, 2}, "OTP 18.0"}; -obsolete_builtin_type({digraph, 0}) -> -    {deprecated, {digraph, graph}, "OTP 18.0"}; -obsolete_builtin_type({gb_set, 0}) -> -    {deprecated, {gb_sets, set, 1}, "OTP 18.0"}; -obsolete_builtin_type({gb_tree, 0}) -> -    {deprecated, {gb_trees, tree, 2}, "OTP 18.0"}; -obsolete_builtin_type({queue, 0}) -> -    {deprecated, {queue, queue, 1}, "OTP 18.0"}; -obsolete_builtin_type({set, 0}) -> -    {deprecated, {sets, set, 1}, "OTP 18.0"}; -obsolete_builtin_type({tid, 0}) -> -    {deprecated, {ets, tid}, "OTP 18.0"}; +%% To keep Dialyzer silent... +obsolete_builtin_type({1, 255}) -> +    {deprecated, {2, 255}, ""};  obsolete_builtin_type({Name, A}) when is_atom(Name), is_integer(A) -> no.  %% spec_decl(Line, Fun, Types, State) -> State. diff --git a/lib/stdlib/test/erl_lint_SUITE.erl b/lib/stdlib/test/erl_lint_SUITE.erl index 5db0631f58..ca91d94213 100644 --- a/lib/stdlib/test/erl_lint_SUITE.erl +++ b/lib/stdlib/test/erl_lint_SUITE.erl @@ -2648,10 +2648,9 @@ otp_11872(Config) when is_list(Config) ->              t() ->                  1.           ">>, -    {error,[{6,erl_lint,{undefined_type,{product,0}}}], -     [{8,erl_lint,{new_builtin_type,{map,0}}}, -      {8,erl_lint, -       {deprecated_builtin_type,{dict,0},{dict,dict,2}, "OTP 18.0"}}]} = +    {error,[{6,erl_lint,{undefined_type,{product,0}}}, +            {8,erl_lint,{undefined_type,{dict,0}}}], +           [{8,erl_lint,{new_builtin_type,{map,0}}}]} =          run_test2(Config, Ts, []),      ok. @@ -3334,8 +3333,8 @@ format_warn(Config) when is_list(Config) ->      ok.  format_level(Level, Count, Config) -> -    ?line W = get_compilation_warnings(Config, "format", -                                       [{warn_format, Level}]), +    ?line W = get_compilation_result(Config, "format", +                                     [{warn_format, Level}]),      %% Pick out the 'format' warnings.      ?line FW = lists:filter(fun({_Line, erl_lint, {format_error, _}}) -> true;                                 (_) -> false @@ -3519,42 +3518,22 @@ bin_syntax_errors(Config) ->      ok.  predef(doc) -> -    "OTP-10342: Predefined types: array(), digraph(), and so on"; +    "OTP-10342: No longer predefined types: array(), digraph(), and so on";  predef(suite) -> [];  predef(Config) when is_list(Config) -> -    W = get_compilation_warnings(Config, "predef", []), +    W = get_compilation_result(Config, "predef", []),      [] = W, -    W2 = get_compilation_warnings(Config, "predef2", []), -    Tag = deprecated_builtin_type, -    [{7,erl_lint,{Tag,{array,0},{array,array,1},"OTP 18.0"}}, -     {12,erl_lint,{Tag,{dict,0},{dict,dict,2},"OTP 18.0"}}, -     {17,erl_lint,{Tag,{digraph,0},{digraph,graph},"OTP 18.0"}}, -     {27,erl_lint,{Tag,{gb_set,0},{gb_sets,set,1},"OTP 18.0"}}, -     {32,erl_lint,{Tag,{gb_tree,0},{gb_trees,tree,2},"OTP 18.0"}}, -     {37,erl_lint,{Tag,{queue,0},{queue,queue,1},"OTP 18.0"}}, -     {42,erl_lint,{Tag,{set,0},{sets,set,1},"OTP 18.0"}}, -     {47,erl_lint,{Tag,{tid,0},{ets,tid},"OTP 18.0"}}] = W2, -    Ts = [{otp_10342_1, -           <<"-compile(nowarn_deprecated_type). - -              -spec t(dict()) -> non_neg_integer(). - -              t(D) -> -                  erlang:phash2(D, 3000). -             ">>, -           {[nowarn_unused_function]}, -           []}, -         {otp_10342_2, -           <<"-spec t(dict()) -> non_neg_integer(). - -              t(D) -> -                  erlang:phash2(D, 3000). -             ">>, -           {[nowarn_unused_function]}, -           {warnings,[{1,erl_lint, -                       {deprecated_builtin_type,{dict,0},{dict,dict,2}, -                        "OTP 18.0"}}]}}], -    [] = run(Config, Ts), +    %% dict(), digraph() and so on were removed in Erlang/OTP 18.0. +    E2 = get_compilation_result(Config, "predef2", []), +    Tag = undefined_type, +    {[{7,erl_lint,{Tag,{array,0}}}, +      {12,erl_lint,{Tag,{dict,0}}}, +      {17,erl_lint,{Tag,{digraph,0}}}, +      {27,erl_lint,{Tag,{gb_set,0}}}, +      {32,erl_lint,{Tag,{gb_tree,0}}}, +      {37,erl_lint,{Tag,{queue,0}}}, +      {42,erl_lint,{Tag,{set,0}}}, +      {47,erl_lint,{Tag,{tid,0}}}],[]} = E2,      ok.  maps(Config) -> @@ -3763,9 +3742,9 @@ run(Config, Tests) ->          end,      lists:foldl(F, [], Tests). -%% Compiles a test file and returns the list of warnings. +%% Compiles a test file and returns the list of warnings/errors. -get_compilation_warnings(Conf, Filename, Warnings) -> +get_compilation_result(Conf, Filename, Warnings) ->      ?line DataDir = ?datadir,      ?line File = filename:join(DataDir, Filename),      {ok,Bin} = file:read_file(File++".erl"), @@ -3774,6 +3753,7 @@ get_compilation_warnings(Conf, Filename, Warnings) ->      Test = lists:nthtail(Start+Length, FileS),      case run_test(Conf, Test, Warnings) of          {warnings, Ws} -> Ws; +        {errors,Es,Ws} -> {Es,Ws};          [] -> []      end. diff --git a/lib/stdlib/test/erl_lint_SUITE_data/predef.erl b/lib/stdlib/test/erl_lint_SUITE_data/predef.erl index ee9073aa67..3cb7bf40f1 100644 --- a/lib/stdlib/test/erl_lint_SUITE_data/predef.erl +++ b/lib/stdlib/test/erl_lint_SUITE_data/predef.erl @@ -5,8 +5,8 @@  -export_type([array/0, digraph/0, gb_set/0]). -%% Before Erlang/OTP 17.0 local re-definitions of pre-defined opaque -%% types were ignored but did not generate any warning. +%% Since Erlang/OTP 18.0 array() and so on are no longer pre-defined, +%% so there is nothing special about them at all.  -opaque array() :: atom().  -opaque digraph() :: atom().  -opaque gb_set() :: atom().  | 
