aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/test/opaque_SUITE_data/src/simple/is_rec.erl
diff options
context:
space:
mode:
authorHans Bolinder <[email protected]>2014-01-28 15:38:49 +0100
committerHans Bolinder <[email protected]>2014-01-28 15:38:49 +0100
commita0119e4bff42f3ef38df6c9e8bdd1ba40eb49887 (patch)
tree944b2bb9a333591ff6e4cde694386616407b62f5 /lib/dialyzer/test/opaque_SUITE_data/src/simple/is_rec.erl
parent127cd6d32a8f5e3ffd56b13ea8f333eeffa253a2 (diff)
parent7db0bb7ae867ea5de893914a89c51dc0369b5790 (diff)
downloadotp-a0119e4bff42f3ef38df6c9e8bdd1ba40eb49887.tar.gz
otp-a0119e4bff42f3ef38df6c9e8bdd1ba40eb49887.tar.bz2
otp-a0119e4bff42f3ef38df6c9e8bdd1ba40eb49887.zip
Merge branch 'hb/dialyzer/opaque_types_fixes/OTP-10397'
* hb/dialyzer/opaque_types_fixes/OTP-10397: [dialyzer] Re-work the handling of opaque types
Diffstat (limited to 'lib/dialyzer/test/opaque_SUITE_data/src/simple/is_rec.erl')
-rw-r--r--lib/dialyzer/test/opaque_SUITE_data/src/simple/is_rec.erl65
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/dialyzer/test/opaque_SUITE_data/src/simple/is_rec.erl b/lib/dialyzer/test/opaque_SUITE_data/src/simple/is_rec.erl
new file mode 100644
index 0000000000..2b157483bc
--- /dev/null
+++ b/lib/dialyzer/test/opaque_SUITE_data/src/simple/is_rec.erl
@@ -0,0 +1,65 @@
+-module(is_rec).
+
+-export([ri1/0, ri11/0, ri13/0, ri14/0, ri2/0, ri3/0, ri4/0, ri5/0,
+ ri6/0, ri7/0, ri8/0]).
+
+-record(r, {f1 :: integer()}).
+
+ri1() ->
+ A = simple1_adt:d1(),
+ is_record(A, r). % opaque term 1
+
+ri11() ->
+ A = simple1_adt:d1(),
+ I = '1-3'(),
+ is_record(A, r, I). % opaque term 1
+
+ri13() ->
+ A = simple1_adt:d1(),
+ if is_record(A, r) -> true end. % breaks the opaqueness
+
+ri14() ->
+ A = simple1_adt:d1(),
+ if is_record({A, 1}, r) -> true end. % breaks the opaqueness
+
+-type '1-3-t'() :: 1..3.
+
+-spec '1-3'() -> '1-3-t'().
+
+'1-3'() ->
+ random:uniform(3).
+
+
+-spec 'Atom'() -> atom().
+
+'Atom'() ->
+ a.
+
+ri2() ->
+ A = simple1_adt:d1(),
+ R = 'Atom'(),
+ is_record(A, R). % opaque term 1
+
+ri3() ->
+ A = simple1_adt:d1(),
+ is_record(A, A, 1). % opaque term 2
+
+ri4() ->
+ A = simple1_adt:d1(),
+ is_record(A, hipp:hopp(), 1). % opaque term 1
+
+ri5() ->
+ A = simple1_adt:d1(),
+ is_record(A, A, hipp:hopp()). % opaque term 2
+
+ri6() ->
+ A = simple1_adt:d1(),
+ if is_record(A, r) -> true end. % breaks opaqueness
+
+ri7() ->
+ A = simple1_adt:d1(),
+ if is_record({r, A}, r) -> true end. % A violates #r{}
+
+ri8() ->
+ A = simple1_adt:d1(),
+ is_record({A, 1}, r). % opaque term 1