Skip to content

Commit 26a8bc1

Browse files
committed
Sort out compile time value handling, so Rakudo can do it without using annotations.
1 parent ffe1cba commit 26a8bc1

File tree

4 files changed

+36
-2
lines changed

4 files changed

+36
-2
lines changed

src/QAST/CompileTimeValue.nqp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# Composed or mixed in to any node that also has a compile-time known value.
22
role QAST::CompileTimeValue {
3-
has $!value;
4-
method value(*@value) { $!value := @value[0] if @value; $!value }
3+
has $!compile_time_value;
4+
5+
method has_compile_time_value() {
6+
1
7+
}
8+
9+
method compile_time_value() {
10+
$!compile_time_value
11+
}
12+
13+
method set_compile_time_value($value) {
14+
$!compile_time_value := $value
15+
}
516
}

src/QAST/Node.nqp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@ class QAST::Node {
5050
}
5151
}
5252

53+
method has_compile_time_value() {
54+
0
55+
}
56+
57+
method set_compile_time_value($value) {
58+
self.HOW.mixin(self, QAST::CompileTimeValue);
59+
self.set_compile_time_value($value);
60+
}
61+
5362
method list() { @!array }
5463
method pop() { nqp::pop(self.list) }
5564
method push($value) { nqp::push(self.list, $value) }

src/QAST/WVal.nqp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
class QAST::WVal is QAST::Node does QAST::CompileTimeValue {
2+
method value(*@value) {
3+
@value
4+
?? self.set_compile_time_value(@value[0])
5+
!! self.compile_time_value()
6+
}
27
}

src/QAST/Want.nqp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,11 @@
11
class QAST::Want is QAST::Node {
2+
method has_compile_time_value() {
3+
nqp::istype(self[0], QAST::Node)
4+
?? self[0].has_compile_time_value()
5+
!! 0
6+
}
7+
8+
method compile_time_value() {
9+
self[0].compile_time_value()
10+
}
211
}

0 commit comments

Comments
 (0)