Skip to content

Commit

Permalink
added .evaluate_unquotes method to QAST nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
Carl Masak committed Aug 25, 2012
1 parent 8fac254 commit c223607
Show file tree
Hide file tree
Showing 11 changed files with 77 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/QAST/IVal.nqp
Expand Up @@ -5,4 +5,8 @@ class QAST::IVal is QAST::Node {
method substitute_inline_placeholders(@fillers) {
self
}

method evaluate_unquotes(@unquotes) {
self
}
}
4 changes: 4 additions & 0 deletions src/QAST/NVal.nqp
Expand Up @@ -5,4 +5,8 @@ class QAST::NVal is QAST::Node {
method substitute_inline_placeholders(@fillers) {
self
}

method evaluate_unquotes(@unquotes) {
self
}
}
4 changes: 4 additions & 0 deletions src/QAST/Node.nqp
Expand Up @@ -110,4 +110,8 @@ class QAST::Node {
method substitute_inline_placeholders(@fillers) {
nqp::die(self.HOW.name(self) ~ " does not support inlining");
}

method evaluate_unquotes(@unquotes) {
nqp::die(self.HOW.name(self) ~ " does not support evaluating unquotes");
}
}
11 changes: 11 additions & 0 deletions src/QAST/Op.nqp
Expand Up @@ -17,4 +17,15 @@ class QAST::Op is QAST::Node {
}
$result
}

method evaluate_unquotes(@unquotes) {
my $result := pir::repr_clone__PP(self);
my $i := 0;
my $elems := +@(self);
while $i < $elems {
$result[$i] := self[$i].evaluate_unquotes(@unquotes);
$i := $i + 1;
}
$result
}
}
4 changes: 4 additions & 0 deletions src/QAST/SVal.nqp
Expand Up @@ -5,4 +5,8 @@ class QAST::SVal is QAST::Node {
method substitute_inline_placeholders(@fillers) {
self
}

method evaluate_unquotes(@unquotes) {
self
}
}
11 changes: 11 additions & 0 deletions src/QAST/Stmt.nqp
Expand Up @@ -13,4 +13,15 @@ class QAST::Stmt is QAST::Node {
}
$result
}

method evaluate_unquotes(@unquotes) {
my $result := pir::repr_clone__PP(self);
my $i := 0;
my $elems := +@(self);
while $i < $elems {
$result[$i] := self[$i].evaluate_unquotes(@unquotes);
$i := $i + 1;
}
$result
}
}
11 changes: 11 additions & 0 deletions src/QAST/Stmts.nqp
Expand Up @@ -13,4 +13,15 @@ class QAST::Stmts is QAST::Node {
}
$result
}

method evaluate_unquotes(@unquotes) {
my $result := pir::repr_clone__PP(self);
my $i := 0;
my $elems := +@(self);
while $i < $elems {
$result[$i] := self[$i].evaluate_unquotes(@unquotes);
$i := $i + 1;
}
$result
}
}
9 changes: 9 additions & 0 deletions src/QAST/Unquote.nqp
@@ -1,2 +1,11 @@
class QAST::Unquote is QAST::Node {
has int $!position;

method position(*@value) {
@value ?? ($!position := @value[0]) !! $!position
}

method evaluate_unquotes(@unquotes) {
@unquotes[$!position];
}
}
4 changes: 4 additions & 0 deletions src/QAST/Var.nqp
Expand Up @@ -14,4 +14,8 @@ class QAST::Var is QAST::Node {
method substitute_inline_placeholders(@fillers) {
self
}

method evaluate_unquotes(@unquotes) {
self
}
}
4 changes: 4 additions & 0 deletions src/QAST/WVal.nqp
Expand Up @@ -8,4 +8,8 @@ class QAST::WVal is QAST::Node does QAST::CompileTimeValue {
method substitute_inline_placeholders(@fillers) {
self
}

method evaluate_unquotes(@unquotes) {
self
}
}
11 changes: 11 additions & 0 deletions src/QAST/Want.nqp
Expand Up @@ -19,4 +19,15 @@ class QAST::Want is QAST::Node {
}
$result
}

method evaluate_unquotes(@unquotes) {
my $result := pir::repr_clone__PP(self);
my $i := 0;
my $elems := +@(self);
while $i < $elems {
$result[$i] := self[$i].evaluate_unquotes(@unquotes);
$i := $i + 2;
}
$result
}
}

0 comments on commit c223607

Please sign in to comment.