@@ -419,16 +419,16 @@ class NQPCursor does NQPCursorRole {
419
419
420
420
method ! INTERPOLATE ($ var ) {
421
421
if pir::does($ var , ' array' ) {
422
- my $ maxlen := -1.0 ;
422
+ my $ maxlen := -1 ;
423
423
my $ cur := self . ' !cursor_start' ();
424
- my $ pos := + $ cur . from ;
424
+ my $ pos := nqp ::getattr_i( $ cur , $ ? CLASS , ' $! from' ) ;
425
425
my $ tgt := $ cur . target;
426
- my $ eos := + pir::length($ tgt );
426
+ my $ eos := pir::length($ tgt );
427
427
for $ var {
428
428
if pir::is_invokable__IP($ _ ) {
429
429
my $ res := $ _ (self );
430
430
if $ res {
431
- my $ adv := + $ res . pos ;
431
+ my $ adv := nqp ::getattr_i( $ res , $ ? CLASS , ' $! pos' ) ;
432
432
$ adv := $ adv - $ pos ;
433
433
$ maxlen := $ adv if $ adv > $ maxlen ;
434
434
}
@@ -439,15 +439,15 @@ class NQPCursor does NQPCursorRole {
439
439
&& pir:: substr ($ tgt , $ pos , $ len ) eq $ _ ;
440
440
}
441
441
}
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 ;
444
444
}
445
445
else {
446
446
return $ var (self ) if pir::is_invokable__IP($ var );
447
447
my $ cur := self . ' !cursor_start' ();
448
- my $ pos := + $ cur . from ;
448
+ my $ pos := nqp ::getattr_i( $ cur , $ ? CLASS , ' $! from' ) ;
449
449
my $ tgt := $ cur . target;
450
- my $ len := + pir::length($ var );
450
+ my $ len := pir::length($ var );
451
451
my $ adv := $ pos + $ len ;
452
452
return $ cur if $ adv > pir::length($ tgt )
453
453
|| pir:: substr ($ tgt , $ pos , $ len ) ne $ var ;
0 commit comments