Skip to content
← Back

src/ir/values/wrapper.ghul

1
namespace IR.Values is
2
use Semantic.Types.Type;
3
4
class WRAPPER: Value is
5
has_address: bool => value!.has_address;
6
type: Type? => value!.type;
7
value: Value? public;
8
9
init(
10
value: Value
11
) is
12
super.init();
13
14
self.value = value;
15
si
16
17
init() is
18
super.init();
19
si
20
21
gen(context: IR.CONTEXT) is
22
assert value? else "generate wrapper without value";
23
24
gen(value, context);
25
si
26
27
gen_address(context: IR.CONTEXT) is
28
assert value? else "generate wrapper without value";
29
30
value!.gen_address(context);
31
si
32
33
to_string() -> string =>
34
"wrapper:[{if value? then value.type else null fi}]({value})";
35
si
36
si