Skip to content
← Back

src/syntax/trees/definitions/variant.ghul

1
namespace Syntax.Trees.Definitions is
2
use Source;
3
4
use Logging;
5
6
class VARIANT: Classy is
7
description_for_walk: string => "variant";
8
9
fields: Variables.LIST;
10
11
is_default: bool public;
12
13
init(
14
location: LOCATION,
15
name: Identifiers.Identifier,
16
fields: Variables.LIST,
17
modifiers: Modifiers.LIST
18
)
19
is
20
super.init(
21
location,
22
name,
23
null,
24
null,
25
modifiers,
26
Definitions.LIST(LOCATION.internal, System.Array.empty`[Definitions.Definition]())
27
);
28
29
self.fields = fields;
30
si
31
32
set_arguments(arguments: TypeExpressions.LIST) is
33
self.arguments = arguments;
34
si
35
36
set_fields(fields: Variables.LIST) is
37
self.fields = fields;
38
si
39
40
accept(visitor: Visitor) is
41
visitor.visit(self);
42
si
43
44
_walk(visitor: Visitor) is
45
if !visitor.pre(self) then
46
name.walk(visitor);
47
48
if arguments? then
49
arguments.walk(visitor);
50
fi
51
52
modifiers.walk(visitor);
53
54
fields.walk(visitor);
55
56
body.walk(visitor);
57
fi
58
59
accept(visitor);
60
si
61
si
62
si