Skip to content

Commit 1be56d4

Browse files
author
Carl Masak
committed
intermediate code for debugging
For some reason, this hangs inside src/QAST/Unquote.nqp
1 parent 1f54496 commit 1be56d4

File tree

9 files changed

+74
-0
lines changed

9 files changed

+74
-0
lines changed

src/QAST/IVal.nqp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
class QAST::IVal is QAST::Node {
22
has int $!value;
33
method value(*@value) { $!value := @value[0] if @value; $!value }
4+
5+
method evaluate_unquotes(@unquotes) {
6+
self
7+
}
48
}

src/QAST/Node.nqp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,8 @@ class QAST::Node {
100100
(%uniques{$prefix} := 1);
101101
$prefix ~ '_' ~ $id
102102
}
103+
104+
method evaluate_unquotes(@unquotes) {
105+
nqp::die(self.HOW.name(self) ~ " does not support evaluating unquotes");
106+
}
103107
}

src/QAST/Op.nqp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,16 @@ class QAST::Op is QAST::Node {
66
method name(*@value) { $!name := @value[0] if @value; $!name || "" }
77
method op(*@value) { $!op := @value[0] if @value; $!op }
88
method childorder(*@value) { $!childorder := @value[0] if @value; $!childorder || "" }
9+
10+
method evaluate_unquotes(@unquotes) {
11+
say('op');
12+
my $result := pir::repr_clone__PP(self);
13+
my $i := 0;
14+
my $elems := +@(self);
15+
while $i < $elems {
16+
$result[$i] := self[$i].evaluate_unquotes(@unquotes);
17+
$i := $i + 1;
18+
}
19+
$result
20+
}
921
}

src/QAST/Stmt.nqp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,16 @@ class QAST::Stmt is QAST::Node {
22
has $!resultchild;
33

44
method resultchild(*@value) { $!resultchild := @value[0] if @value; $!resultchild }
5+
6+
method evaluate_unquotes(@unquotes) {
7+
say('stmt');
8+
my $result := pir::repr_clone__PP(self);
9+
my $i := 0;
10+
my $elems := +@(self);
11+
while $i < $elems {
12+
$result[$i] := self[$i].evaluate_unquotes(@unquotes);
13+
$i := $i + 1;
14+
}
15+
$result
16+
}
517
}

src/QAST/Stmts.nqp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,16 @@ class QAST::Stmts is QAST::Node {
22
has $!resultchild;
33

44
method resultchild(*@value) { $!resultchild := @value[0] if @value; $!resultchild }
5+
6+
method evaluate_unquotes(@unquotes) {
7+
say('stmts');
8+
my $result := pir::repr_clone__PP(self);
9+
my $i := 0;
10+
my $elems := +@(self);
11+
while $i < $elems {
12+
$result[$i] := self[$i].evaluate_unquotes(@unquotes);
13+
$i := $i + 1;
14+
}
15+
$result
16+
}
517
}

src/QAST/Unquote.nqp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,12 @@
11
class QAST::Unquote is QAST::Node {
2+
has int $!position;
3+
4+
method position(*@value) {
5+
@value ?? ($!position := @value[0]) !! $!position
6+
}
7+
8+
method evaluate_unquotes(@unquotes) {
9+
say('unquote');
10+
@unquotes[$!position];
11+
}
212
}

src/QAST/Var.nqp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,8 @@ class QAST::Var is QAST::Node {
1010
method decl(*@value) { $!decl := @value[0] if @value; $!decl }
1111
method slurpy(*@value) { $!slurpy := @value[0] if @value; $!slurpy }
1212
method default(*@value) { $!default := @value[0] if @value; $!default }
13+
14+
method evaluate_unquotes(@unquotes) {
15+
self
16+
}
1317
}

src/QAST/WVal.nqp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,8 @@ class QAST::WVal is QAST::Node does QAST::CompileTimeValue {
44
?? self.set_compile_time_value(@value[0])
55
!! self.compile_time_value()
66
}
7+
8+
method evaluate_unquotes(@unquotes) {
9+
self
10+
}
711
}

src/QAST/Want.nqp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,16 @@ class QAST::Want is QAST::Node {
88
method compile_time_value() {
99
self[0].compile_time_value()
1010
}
11+
12+
method evaluate_unquotes(@unquotes) {
13+
say('want');
14+
my $result := pir::repr_clone__PP(self);
15+
my $i := 0;
16+
my $elems := +@(self);
17+
while $i < $elems {
18+
$result[$i] := self[$i].evaluate_unquotes(@unquotes);
19+
$i := $i + 2;
20+
}
21+
$result
22+
}
1123
}

0 commit comments

Comments
 (0)