aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dialyzer')
-rw-r--r--lib/dialyzer/test/small_SUITE_data/results/union_paren7
-rw-r--r--lib/dialyzer/test/small_SUITE_data/src/union_paren.erl24
2 files changed, 31 insertions, 0 deletions
diff --git a/lib/dialyzer/test/small_SUITE_data/results/union_paren b/lib/dialyzer/test/small_SUITE_data/results/union_paren
new file mode 100644
index 0000000000..3a3526df89
--- /dev/null
+++ b/lib/dialyzer/test/small_SUITE_data/results/union_paren
@@ -0,0 +1,7 @@
+
+union_paren.erl:12: Function t2/0 has no local return
+union_paren.erl:13: The call union_paren:t2(3.14) breaks the contract (integer() | atom()) -> integer()
+union_paren.erl:19: Function t3/0 has no local return
+union_paren.erl:20: The pattern 3.14 can never match the type atom() | integer()
+union_paren.erl:5: Function t1/0 has no local return
+union_paren.erl:6: The call union_paren:t1(3.14) breaks the contract ((A::integer()) | (B::atom())) -> integer()
diff --git a/lib/dialyzer/test/small_SUITE_data/src/union_paren.erl b/lib/dialyzer/test/small_SUITE_data/src/union_paren.erl
new file mode 100644
index 0000000000..4691a57d98
--- /dev/null
+++ b/lib/dialyzer/test/small_SUITE_data/src/union_paren.erl
@@ -0,0 +1,24 @@
+-module(union_paren).
+
+-compile(export_all).
+
+t1() ->
+ t1(3.14).
+
+-spec t1((A :: integer()) | (B :: atom())) -> integer().
+t1(A) ->
+ fy:bar(A).
+
+t2() ->
+ t2(3.14).
+
+-spec t2(integer() | atom()) -> integer().
+t2(A) ->
+ fy:bar(A).
+
+t3() ->
+ 3.14 = t3(foo).
+
+-spec t3(_) -> (I :: integer()) | (A :: atom()).
+t3(A) when is_atom(A) -> A;
+t3(I) when is_integer(I) -> I.