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