aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/test/small_tests_SUITE_data/src/my_sofs.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dialyzer/test/small_tests_SUITE_data/src/my_sofs.erl')
-rw-r--r--lib/dialyzer/test/small_tests_SUITE_data/src/my_sofs.erl83
1 files changed, 0 insertions, 83 deletions
diff --git a/lib/dialyzer/test/small_tests_SUITE_data/src/my_sofs.erl b/lib/dialyzer/test/small_tests_SUITE_data/src/my_sofs.erl
deleted file mode 100644
index 32252071d2..0000000000
--- a/lib/dialyzer/test/small_tests_SUITE_data/src/my_sofs.erl
+++ /dev/null
@@ -1,83 +0,0 @@
-%% Program showing the problems with record field accesses.
-
--module(my_sofs).
--export([ordset_of_sets/3, is_equal/2]).
-
--define(TAG, 'Set').
--define(ORDTAG, 'OrdSet').
-
--record(?TAG, {data = [], type = type}).
--record(?ORDTAG, {orddata = {}, ordtype = type}).
-
--define(LIST(S), (S)#?TAG.data).
--define(TYPE(S), (S)#?TAG.type).
--define(SET(L, T), #?TAG{data = L, type = T}).
--define(IS_SET(S), record(S, ?TAG)).
-
-%% Ordered sets and atoms:
--define(ORDDATA(S), (S)#?ORDTAG.orddata).
--define(ORDTYPE(S), (S)#?ORDTAG.ordtype).
--define(ORDSET(L, T), #?ORDTAG{orddata = L, ordtype = T}).
--define(IS_ORDSET(S), record(S, ?ORDTAG)).
-
-%% When IS_SET is true:
--define(ANYTYPE, '_').
--define(REL_TYPE(I, R), element(I, R)).
--define(SET_OF(X), [X]).
-
-is_equal(S1, S2) when ?IS_SET(S1), ?IS_SET(S2) ->
- case match_types(?TYPE(S1), ?TYPE(S2)) of
- true -> ?LIST(S1) == ?LIST(S2);
- false -> erlang:error(type_mismatch, [S1, S2])
- end;
-is_equal(S1, S2) when ?IS_ORDSET(S1), ?IS_ORDSET(S2) ->
- case match_types(?TYPE(S1), ?TYPE(S2)) of
- true -> ?ORDDATA(S1) == ?ORDDATA(S2);
- false -> erlang:error(type_mismatch, [S1, S2])
- end;
-is_equal(S1, S2) when ?IS_SET(S1), ?IS_ORDSET(S2) ->
- erlang:error(type_mismatch, [S1, S2]);
-is_equal(S1, S2) when ?IS_ORDSET(S1), ?IS_SET(S2) ->
- erlang:error(type_mismatch, [S1, S2]).
-
-%% Type = OrderedSetType
-%% | SetType
-%% | atom() except '_'
-%% OrderedSetType = {Type, ..., Type}
-%% SetType = [ElementType] % list of exactly one element
-%% ElementType = '_' % any type (implies empty set)
-%% | Type
-
-ordset_of_sets([S | Ss], L, T) when ?IS_SET(S) ->
- ordset_of_sets(Ss, [?LIST(S) | L], [[?TYPE(S)] | T]);
-ordset_of_sets([S | Ss], L, T) when ?IS_ORDSET(S) ->
- ordset_of_sets(Ss, [?LIST(S) | L], [?ORDTYPE(S) | T]);
-ordset_of_sets([], L, T) ->
- ?ORDSET(list_to_tuple(lists:reverse(L)), list_to_tuple(lists:reverse(T)));
-ordset_of_sets(_, _L, _T) ->
- error.
-
-%% inlined.
-match_types(T, T) -> true;
-match_types(Type1, Type2) -> match_types1(Type1, Type2).
-
-match_types1(Atom, Atom) when is_atom(Atom) ->
- true;
-match_types1(?ANYTYPE, _) ->
- true;
-match_types1(_, ?ANYTYPE) ->
- true;
-match_types1(?SET_OF(Type1), ?SET_OF(Type2)) ->
- match_types1(Type1, Type2);
-match_types1(T1, T2) when tuple(T1), tuple(T2), size(T1) =:= size(T2) ->
- match_typesl(size(T1), T1, T2);
-match_types1(_T1, _T2) ->
- false.
-
-match_typesl(0, _T1, _T2) ->
- true;
-match_typesl(N, T1, T2) ->
- case match_types1(?REL_TYPE(N, T1), ?REL_TYPE(N, T2)) of
- true -> match_typesl(N-1, T1, T2);
- false -> false
- end.