aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/test/opaque_SUITE_data/src/recrec/core_parse.hrl
blob: 5823622f05ccf0e315590ffd37b9f5063be5dcfd (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
%%
%% %CopyrightBegin%
%% 
%% Copyright Ericsson AB 1999-2016. All Rights Reserved.
%% 
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%%     http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%% 
%% %CopyrightEnd%
%%
%% Purpose : Core Erlang syntax trees as records.

%% It would be nice to incorporate some generic functions as well but
%% this could make including this file difficult.

%% Note: the annotation list is *always* the first record field.
%% Thus it is possible to define the macros:
%% -define(get_ann(X), element(2, X)).
%% -define(set_ann(X, Y), setelement(2, X, Y)).

%% The record definitions appear alphabetically

-record(c_alias, {anno=[] :: cerl:anns(),
		  var     :: cerl:c_var(),
		  pat     :: cerl:cerl()}).

-record(c_apply, {anno=[] :: cerl:anns(),
		  op      :: cerl:c_var(),
		  args    :: [cerl:cerl()]}).

-record(c_binary, {anno=[]  :: cerl:anns(),
		   segments :: [cerl:c_bitstr()]}).

-record(c_bitstr, {anno=[], val,	% val :: Tree,
		   size,	       	% size :: Tree,
		   unit,	       	% unit :: Tree,
		   type,	       	% type :: Tree,
		   flags}).	       	% flags :: Tree

-record(c_call, {anno=[], module,	% module :: cerl:cerl(),
		 name,			% name :: cerl:cerl(),
		 args}).		% args :: [cerl:cerl()]

-record(c_case, {anno=[] :: cerl:anns(),
		 arg     :: cerl:cerl(),
		 clauses :: [cerl:cerl()]}).

-record(c_catch, {anno=[] :: cerl:anns(), body :: cerl:cerl()}).

-record(c_clause, {anno=[] :: cerl:anns(),
		   pats,    % :: [cerl:cerl()],	% pats :: [Tree],
		   guard,   % :: cerl:cerl(),		% guard :: Tree,
		   body}).  % :: cerl:cerl()}).		% body :: Tree

-record(c_cons, {anno=[] :: cerl:anns(),
		 hd      :: cerl:cerl(),
		 tl      :: cerl:cerl()}).

-record(c_fun, {anno=[] :: cerl:anns(),
		vars    :: [cerl:c_var()],
		body    :: cerl:cerl()}).

-record(c_let, {anno=[] :: cerl:anns(),
		vars    :: [cerl:c_var()],
		arg     :: cerl:cerl(),
		body    :: cerl:cerl()}).

-record(c_letrec, {anno=[] :: cerl:anns(),
		   defs    :: cerl:defs(),
		   body    :: cerl:cerl()}).

-record(c_literal, {anno=[] :: cerl:anns(), val :: cerl:litval()}).

-record(c_map, {anno=[] :: cerl:anns(),
		arg=#c_literal{val=#{}} :: cerl:c_var() | cerl:c_literal(),
		es :: [cerl:c_map_pair()],
		is_pat=false :: boolean()}).

-record(c_map_pair, {anno=[] :: cerl:anns(),
	             op, %:: #c_literal{val::'assoc'} | #c_literal{val::'exact'},
		     key,
		     val}).

-record(c_module, {anno=[] :: cerl:anns(),
		   name    :: cerl:c_literal(),
		   exports :: [cerl:c_var()],
		   attrs   :: cerl:attrs(),
		   defs    :: cerl:defs()}).

-record(c_primop, {anno=[] :: cerl:anns(),
		   name    :: cerl:c_literal(),
		   args    :: [cerl:cerl()]}).

-record(c_receive, {anno=[]:: cerl:anns(),
                    clauses,	% clauses :: [Tree],
		    timeout,		% timeout :: Tree,
		    action}).		% action :: Tree

-record(c_seq, {anno=[] :: cerl:anns(),
                arg,		% arg :: cerl:cerl(),
		body}).			% body :: cerl:cerl()

-record(c_try, {anno=[], arg,		% arg :: cerl:cerl(),
		vars,			% vars :: [cerl:c_var()],
		body,			% body :: cerl:cerl(),
		evars,			% evars :: [cerl:c_var()],
		handler}).		% handler :: cerl:cerl()

-record(c_tuple, {anno=[] :: cerl:anns(), es :: [cerl:cerl()]}).

-record(c_values, {anno=[] :: cerl:anns(), es :: [cerl:cerl()]}).

-record(c_var, {anno=[] :: cerl:anns(), name :: cerl:var_name()}).