blob: e82dcd5f38bace47655052539bc7b30fe0dae518 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
%%---------------------------------------------------------------------------
%% Test that tries some combinations of using more than one opaque data type
%% in the same function(s).
%%----------------------------------------------------------------------------
-module(mixed_opaque_use).
-export([ok1/1, ok2/0, wrong1/0]).
-define(REC, mixed_opaque_rec_adt).
-define(QUEUE, mixed_opaque_queue_adt).
%% Currently returning unions of opaque types is considered OK
ok1(Type) ->
case Type of
queue -> ?QUEUE:new();
rec -> ?REC:new()
end.
%% Constructing a queue of records is OK
ok2() ->
Q0 = ?QUEUE:new(),
R0 = ?REC:new(),
Q1 = ?QUEUE:add(R0, Q0),
{R1,_Q2} = ?QUEUE:dequeue(Q1),
?REC:get_a(R1).
%% But of course calling a function expecting some opaque type
%% with some other opaque typs is not OK
wrong1() ->
Q = ?QUEUE:new(),
?REC:get_a(Q).
|