diff options
author | Stavros Aronis <[email protected]> | 2014-03-21 17:06:24 +0100 |
---|---|---|
committer | Stavros Aronis <[email protected]> | 2014-03-24 16:23:13 +0100 |
commit | a360c3e6cdcc54fe040a1aef157eb1489ab4bdb3 (patch) | |
tree | 8dd11283daddce3156abc0af6fd198ebeac598a3 /lib/dialyzer/test/small_SUITE_data | |
parent | 73af231f1a22083031df49ba19fdfd4f6b434a10 (diff) | |
download | otp-a360c3e6cdcc54fe040a1aef157eb1489ab4bdb3.tar.gz otp-a360c3e6cdcc54fe040a1aef157eb1489ab4bdb3.tar.bz2 otp-a360c3e6cdcc54fe040a1aef157eb1489ab4bdb3.zip |
Don't 'opaque-decorate' a success typing using an incompatible spec
Without this patch Dialyzer crashes when analyzing the supplemented test case.
Diffstat (limited to 'lib/dialyzer/test/small_SUITE_data')
3 files changed, 15 insertions, 0 deletions
diff --git a/lib/dialyzer/test/small_SUITE_data/results/invalid_spec_2 b/lib/dialyzer/test/small_SUITE_data/results/invalid_spec_2 new file mode 100644 index 0000000000..4565112ea0 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/results/invalid_spec_2 @@ -0,0 +1,2 @@ + +scala_user.erl:5: Invalid type specification for function scala_user:is_list/2. The success typing is (maybe_improper_list() | tuple(),_) -> boolean() diff --git a/lib/dialyzer/test/small_SUITE_data/src/invalid_spec_2/scala_data.erl b/lib/dialyzer/test/small_SUITE_data/src/invalid_spec_2/scala_data.erl new file mode 100644 index 0000000000..c26787fe24 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/invalid_spec_2/scala_data.erl @@ -0,0 +1,5 @@ +-module(scala_data). + +-export_type([data/0]). + +-opaque data() :: {'data', term()}. diff --git a/lib/dialyzer/test/small_SUITE_data/src/invalid_spec_2/scala_user.erl b/lib/dialyzer/test/small_SUITE_data/src/invalid_spec_2/scala_user.erl new file mode 100644 index 0000000000..4e981f3b74 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/invalid_spec_2/scala_user.erl @@ -0,0 +1,8 @@ +-module(scala_user). + +-export([is_list/2]). + +-spec is_list(atom(), scala_data:data()) -> boolean(). + +is_list( List,Data) when is_list(List) -> true; +is_list(Tuple,Data) when is_tuple(Tuple) -> false. |