Skip to content
← Back

src/syntax/trees/definitions/property.ghul

1
namespace Syntax.Trees.Definitions is
2
use Source
3
4
// The accessor functions are attached by add-accessors-for-
5
// properties, after the tree is parsed.
6
@suppress("field-definite-assignment")
7
class PROPERTY(
8
location: LOCATION,
9
type_expression: TypeExpressions.TypeExpression,
10
name: Identifiers.Identifier?,
11
modifiers: Modifiers.LIST,
12
read_body: Bodies.Body? public,
13
assign_argument: Identifiers.Identifier? public,
14
assign_body: Bodies.Body? public
15
): MODIFIABLE, ScopeCarrier is
16
scope: Semantic.Scope? public
17
18
read_function: Definitions.FUNCTION public
19
assign_function: Definitions.FUNCTION public
20
21
is_auto_property: bool public
22
23
super(location, modifiers)
24
25
set_type_expression(type_expression: TypeExpressions.TypeExpression) is
26
self.type_expression = type_expression
27
si
28
29
accept(visitor: Visitor) is
30
visitor.visit(self)
31
si
32
33
walk(visitor: Visitor) is
34
if !visitor.pre(self) then
35
modifiers.walk(visitor)
36
type_expression.walk(visitor)
37
38
if name? then
39
name.walk(visitor)
40
fi
41
42
if read_body? then
43
read_body.walk(visitor)
44
fi
45
46
if assign_argument? then
47
assign_argument.walk(visitor)
48
fi
49
50
if assign_body? then
51
assign_body.walk(visitor)
52
fi
53
fi
54
accept(visitor)
55
si
56
si
57
si