Skip to content

Commit 899659e

Browse files
committed
Move QAST versions of quote_EXPR and quote_delimited up into HLL::Actions, eliminating them from NQP::Actions.
1 parent 6b8b4a6 commit 899659e

File tree

2 files changed

+19
-67
lines changed

2 files changed

+19
-67
lines changed

src/HLL/Actions.pm

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -95,22 +95,19 @@ class HLL::Actions {
9595
method quote_EXPR($/) {
9696
my $past := $<quote_delimited>.ast;
9797
if %*QUOTEMOD<w> {
98-
if PAST::Node.ACCEPTS($past) {
99-
$/.CURSOR.panic("Can't form :w list from non-constant strings (yet)");
100-
}
101-
else {
102-
my @words := HLL::Grammar::split_words($/, $past);
98+
if nqp::istype($past, QAST::SVal) {
99+
my @words := HLL::Grammar::split_words($/, $past.value);
103100
if +@words != 1 {
104-
$past := PAST::Op.new( :pasttype('list'), :node($/) );
105-
for @words { $past.push($_); }
101+
$past := QAST::Op.new( :op('list'), :node($/) );
102+
for @words { $past.push(QAST::SVal.new( :value($_) )); }
106103
}
107104
else {
108-
$past := ~@words[0];
105+
$past := QAST::SVal.new( :value(~@words[0]) );
109106
}
110107
}
111-
}
112-
if !PAST::Node.ACCEPTS($past) {
113-
$past := PAST::Val.new( :value(~$past) );
108+
else {
109+
$/.CURSOR.panic("Can't form :w list from non-constant strings (yet)");
110+
}
114111
}
115112
make $past;
116113
}
@@ -120,22 +117,26 @@ class HLL::Actions {
120117
my $lastlit := '';
121118
for $<quote_atom> {
122119
my $ast := $_.ast;
123-
if !PAST::Node.ACCEPTS($ast) {
120+
if !nqp::istype($ast, QAST::Node) {
124121
$lastlit := $lastlit ~ $ast;
125122
}
126-
elsif $ast.isa(PAST::Val) {
123+
elsif nqp::istype($ast, QAST::SVal) {
127124
$lastlit := $lastlit ~ $ast.value;
128125
}
129126
else {
130-
if $lastlit gt '' { @parts.push($lastlit); }
131-
@parts.push($ast);
127+
if $lastlit gt '' {
128+
@parts.push(QAST::SVal.new( :value($lastlit) ));
129+
}
130+
@parts.push(nqp::istype($ast, QAST::Node)
131+
?? $ast
132+
!! QAST::SVal.new( :value($ast) ));
132133
$lastlit := '';
133134
}
134135
}
135-
if $lastlit gt '' { @parts.push($lastlit); }
136-
my $past := @parts ?? @parts.shift !! '';
136+
if $lastlit gt '' { @parts.push(QAST::SVal.new( :value($lastlit) )); }
137+
my $past := @parts ?? @parts.shift !! QAST::SVal.new( :value('') );
137138
while @parts {
138-
$past := PAST::Op.new( $past, @parts.shift, :pirop('concat') );
139+
$past := QAST::Op.new( $past, @parts.shift, :op('concat') );
139140
}
140141
make $past;
141142
}

src/NQP/Actions.pm

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1317,55 +1317,6 @@ class NQP::Actions is HLL::Actions {
13171317
QAST::NVal.new( :value($value) ) !!
13181318
QAST::IVal.new( :value($value) );
13191319
}
1320-
1321-
method quote_EXPR($/) {
1322-
my $past := $<quote_delimited>.ast;
1323-
if %*QUOTEMOD<w> {
1324-
if nqp::istype($past, QAST::SVal) {
1325-
my @words := HLL::Grammar::split_words($/, $past.value);
1326-
if +@words != 1 {
1327-
$past := QAST::Op.new( :op('list'), :node($/) );
1328-
for @words { $past.push(QAST::SVal.new( :value($_) )); }
1329-
}
1330-
else {
1331-
$past := QAST::SVal.new( :value(~@words[0]) );
1332-
}
1333-
}
1334-
else {
1335-
$/.CURSOR.panic("Can't form :w list from non-constant strings (yet)");
1336-
}
1337-
}
1338-
make $past;
1339-
}
1340-
1341-
method quote_delimited($/) {
1342-
my @parts;
1343-
my $lastlit := '';
1344-
for $<quote_atom> {
1345-
my $ast := $_.ast;
1346-
if !nqp::istype($ast, QAST::Node) {
1347-
$lastlit := $lastlit ~ $ast;
1348-
}
1349-
elsif nqp::istype($ast, QAST::SVal) {
1350-
$lastlit := $lastlit ~ $ast.value;
1351-
}
1352-
else {
1353-
if $lastlit gt '' {
1354-
@parts.push(QAST::SVal.new( :value($lastlit) ));
1355-
}
1356-
@parts.push(nqp::istype($ast, QAST::Node)
1357-
?? $ast
1358-
!! QAST::SVal.new( :value($ast) ));
1359-
$lastlit := '';
1360-
}
1361-
}
1362-
if $lastlit gt '' { @parts.push(QAST::SVal.new( :value($lastlit) )); }
1363-
my $past := @parts ?? @parts.shift !! QAST::SVal.new( :value('') );
1364-
while @parts {
1365-
$past := QAST::Op.new( $past, @parts.shift, :op('concat') );
1366-
}
1367-
make $past;
1368-
}
13691320

13701321
method quote:sym<apos>($/) { make $<quote_EXPR>.ast; }
13711322
method quote:sym<dblq>($/) { make $<quote_EXPR>.ast; }

0 commit comments

Comments
 (0)