Skip to content

Commit 14a9298

Browse files
committed
Couple of fixes; passes all of the regex interpolation tests now.
1 parent 0fbc43b commit 14a9298

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/QRegex/Cursor.nqp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -419,16 +419,16 @@ class NQPCursor does NQPCursorRole {
419419

420420
method !INTERPOLATE($var) {
421421
if pir::does($var, 'array') {
422-
my $maxlen := -1.0;
422+
my $maxlen := -1;
423423
my $cur := self.'!cursor_start'();
424-
my $pos := +$cur.from;
424+
my $pos := nqp::getattr_i($cur, $?CLASS, '$!from');
425425
my $tgt := $cur.target;
426-
my $eos := +pir::length($tgt);
426+
my $eos := pir::length($tgt);
427427
for $var {
428428
if pir::is_invokable__IP($_) {
429429
my $res := $_(self);
430430
if $res {
431-
my $adv := +$res.pos;
431+
my $adv := nqp::getattr_i($res, $?CLASS, '$!pos');
432432
$adv := $adv - $pos;
433433
$maxlen := $adv if $adv > $maxlen;
434434
}
@@ -439,15 +439,15 @@ class NQPCursor does NQPCursorRole {
439439
&& pir::substr($tgt, $pos, $len) eq $_;
440440
}
441441
}
442-
return $cur if $maxlen < 0;
443-
return $cur.'!cursor_pass'($pos + $maxlen, '');
442+
$cur.'!cursor_pass'($pos + $maxlen, '') if $maxlen >= 0;
443+
return $cur;
444444
}
445445
else {
446446
return $var(self) if pir::is_invokable__IP($var);
447447
my $cur := self.'!cursor_start'();
448-
my $pos := +$cur.from;
448+
my $pos := nqp::getattr_i($cur, $?CLASS, '$!from');
449449
my $tgt := $cur.target;
450-
my $len := +pir::length($var);
450+
my $len := pir::length($var);
451451
my $adv := $pos + $len;
452452
return $cur if $adv > pir::length($tgt)
453453
|| pir::substr($tgt, $pos, $len) ne $var;

0 commit comments

Comments
 (0)