diff options
author | Hans Bolinder <[email protected]> | 2014-01-28 15:38:49 +0100 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2014-01-28 15:38:49 +0100 |
commit | a0119e4bff42f3ef38df6c9e8bdd1ba40eb49887 (patch) | |
tree | 944b2bb9a333591ff6e4cde694386616407b62f5 /lib/dialyzer/test/opaque_SUITE_data/src/simple/is_rec.erl | |
parent | 127cd6d32a8f5e3ffd56b13ea8f333eeffa253a2 (diff) | |
parent | 7db0bb7ae867ea5de893914a89c51dc0369b5790 (diff) | |
download | otp-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.erl | 65 |
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 |