Skip to content

Commit 235ff38

Browse files
committed
Implement QAST::Var.decl_as
Same as .decl, except clones self first. This method will let us write declarations for QAST::Vars even if they're stored in variables, avoiding having to duplicate :scope/:name all the time. my $v := QAST::Var.new: :name<meow>, :scope<lexical>; $*W.cur_lexpad[0].push: $v.decl_as: 'var'; $qast.push: $v;
1 parent cfee880 commit 235ff38

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/QAST/Var.nqp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ class QAST::Var is QAST::Node does QAST::Children {
2828
$!decl := $value unless $value =:= NO_VALUE;
2929
!nqp::isnull_s($!decl) ?? $!decl !! ""
3030
}
31+
method decl_as($value) {
32+
my $clone := nqp::clone(self);
33+
$clone.decl: $value;
34+
$clone;
35+
}
3136
method slurpy($value = NO_VALUE) { $!slurpy := $value unless $value =:= NO_VALUE; $!slurpy }
3237
method default($value = NO_VALUE) { $!default_or_value := $value unless $value =:= NO_VALUE; $!default_or_value }
3338
method value($value = NO_VALUE) { $!default_or_value := $value unless $value =:= NO_VALUE; $!default_or_value }

0 commit comments

Comments
 (0)