diff options
author | Hans Bolinder <[email protected]> | 2019-04-17 13:20:56 +0200 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2019-05-07 08:25:03 +0200 |
commit | 77cbe3b6ced0ca42cf3ec5c8ca0333d9418a0372 (patch) | |
tree | 5e5e5f8785e10647ac62fb026134925ad64b053f /lib/dialyzer/test/indent_SUITE_data/src/trec.erl | |
parent | b0a7495c44ebf6741714948bdf5c0cb9593ec953 (diff) | |
download | otp-77cbe3b6ced0ca42cf3ec5c8ca0333d9418a0372.tar.gz otp-77cbe3b6ced0ca42cf3ec5c8ca0333d9418a0372.tar.bz2 otp-77cbe3b6ced0ca42cf3ec5c8ca0333d9418a0372.zip |
dialyzer: Add test cases with indentation
A smallish selection of already existing tests, run with
the indentation option.
Diffstat (limited to 'lib/dialyzer/test/indent_SUITE_data/src/trec.erl')
-rw-r--r-- | lib/dialyzer/test/indent_SUITE_data/src/trec.erl | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/dialyzer/test/indent_SUITE_data/src/trec.erl b/lib/dialyzer/test/indent_SUITE_data/src/trec.erl new file mode 100644 index 0000000000..516358f7c6 --- /dev/null +++ b/lib/dialyzer/test/indent_SUITE_data/src/trec.erl @@ -0,0 +1,39 @@ +%% +%% The current treatment of typed records leaves much to be desired. +%% These are not made up examples; I have cases like that the branch +%% of the HiPE compiler with types in records. I get very confusing +%% warnings which require a lot of effort to find their cause and why +%% a function has no local return. +%% +-module(trec). +-export([test/0, mk_foo_exp/2]). + +-record(foo, {a :: integer() | 'undefined', b :: [atom()]}). + +%% +%% For these functions we currently get the following warnings: +%% 1. Function test/0 has no local return +%% 2. The call trec:mk_foo_loc(42,any()) will fail since it differs +%% in argument position 1 from the success typing arguments: +%% ('undefined',atom()) +%% 3. Function mk_foo_loc/2 has no local return +%% +%% Arguably, the second warning is not what most users have in mind when +%% they wrote the type declarations in the 'foo' record, so no doubt +%% they'll find it confusing. But note that it is also quite confusing! +%% Many users may be wondering: How come there is a success typing for a +%% function that has no local return? Running typer on this module +%% reveals a success typing for this function that is interesting indeed. +%% +test() -> + mk_foo_loc(42, some_mod:some_function()). + +mk_foo_loc(A, B) -> + #foo{a = A, b = [A,B]}. + +%% +%% For this function we used to get a "has no local return" warning +%% but we got no reason. This has now been fixed. +%% +mk_foo_exp(A, B) when is_integer(A) -> + #foo{a = A, b = [A,B]}. |