diff options
author | Hans Bolinder <[email protected]> | 2015-06-15 13:05:06 +0200 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2015-06-15 13:05:06 +0200 |
commit | 56e3ade9d8396cba5508b0de557a1bd574c37b69 (patch) | |
tree | 3df65950661a78026aa2334fd26dd5ff75382942 /lib/dialyzer/test/opaque_SUITE_data/src/para/para4.erl | |
parent | 26ed9f0e4a23985b7a0fbf7d9a38142edaf5c1aa (diff) | |
parent | d65264ca24c966402876aa6f9127be8810310255 (diff) | |
download | otp-56e3ade9d8396cba5508b0de557a1bd574c37b69.tar.gz otp-56e3ade9d8396cba5508b0de557a1bd574c37b69.tar.bz2 otp-56e3ade9d8396cba5508b0de557a1bd574c37b69.zip |
Merge branch 'hb/dialyzer/fix_opaque_types/OTP-12493'
* hb/dialyzer/fix_opaque_types/OTP-12493:
dialyzer: Fix a minor bug concerning opaque types
dialyzer: Modify warning for comparison of opaque types
dialyzer: Modify the handling of parametrized opaque types
Diffstat (limited to 'lib/dialyzer/test/opaque_SUITE_data/src/para/para4.erl')
-rw-r--r-- | lib/dialyzer/test/opaque_SUITE_data/src/para/para4.erl | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/lib/dialyzer/test/opaque_SUITE_data/src/para/para4.erl b/lib/dialyzer/test/opaque_SUITE_data/src/para/para4.erl new file mode 100644 index 0000000000..b9794672a9 --- /dev/null +++ b/lib/dialyzer/test/opaque_SUITE_data/src/para/para4.erl @@ -0,0 +1,134 @@ +-module(para4). + +-compile(export_all). + +-export_type([d_atom/0, d_integer/0, d_tuple/0, d_all/0]). + +-export_type([t/1]). + +-type ai() :: atom() | integer(). + +-type d(T) :: dict:dict(T, T). + +-opaque d_atom() :: d(atom()). +-opaque d_integer() :: d(integer()). +-opaque d_tuple() :: d(tuple()). +-opaque d_all() :: d(ai()). + +b(D) -> + a(D) ++ i(D). + +-spec a(d_atom()) -> [{atom(), atom()}]. % Invalid type spec + +a(D) -> + c(D). + +-spec i(d_integer()) -> [{integer(), integer()}]. % Invalid type spec + +i(D) -> + c(D). + +-spec t(d_tuple()) -> [{tuple(), tuple()}]. % Invalid type spec. + +t(D) -> + c(D). + +-spec c(d_all()) -> [{ai(), ai()}]. + +c(D) -> + dict:to_list(D). + + + + +-opaque t(A) :: {A, A}. + +adt_tt5() -> + I1 = adt_y1(), + I2 = adt_y3(), + I1 =:= I2. + +adt_tt6() -> + I1 = adt_y2(), + I2 = adt_y3(), + I1 =:= I2. + +adt_tt7() -> + I1 = adt_t1(), + I2 = adt_t3(), + I1 =:= I2. % opaque attempt + +adt_tt8() -> + I1 = adt_t2(), + I2 = adt_t3(), + I1 =:= I2. % opaque attempt + +adt_tt9() -> + I1 = adt_int2(), + I2 = adt_int4(), + I1 =:= I2. % opaque attempt + +adt_tt10() -> + I1 = adt_int2(), + I2 = adt_int2_4(), + I1 =:= I2. % opaque attempt + +adt_tt11() -> + I1 = adt_int5_7(), + I2 = adt_int2_4(), + I1 =:= I2. % opaque attempt + +adt_tt12() -> + I1 = adt_un1_2(), + I2 = adt_un3_4(), + I1 =:= I2. % opaque attempt + +adt_tt13() -> + I1 = adt_tup(), + I2 = adt_tup2(), + I1 =:= I2. % opaque attempt + +y3() -> + {a, 3}. + +adt_t1() -> + para4_adt:t1(). + +adt_t2() -> + para4_adt:t2(). + +adt_t3() -> + para4_adt:t3(). + +adt_y1() -> + para4_adt:y1(). + +adt_y2() -> + para4_adt:y2(). + +adt_y3() -> + para4_adt:y3(). + +adt_int2() -> + para4_adt:int2(). + +adt_int4() -> + para4_adt:int4(). + +adt_int2_4() -> + para4_adt:int2_4(). + +adt_int5_7() -> + para4_adt:int5_7(). + +adt_un1_2() -> + para4_adt:un1_2(). + +adt_un3_4() -> + para4_adt:un3_4(). + +adt_tup() -> + para4_adt:tup(). + +adt_tup2() -> + para4_adt:tup2(). |