# New Ticket Created by   
# Please include the string:  [perl #131739]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/Ticket/Display.html?id=131739 >


Guys,

Here is a one liner to illustrate a possible bug trying to redefine the
operator '>' and I think any other operator with the '<' or '<'
characters.

 perl6 -e 'multi infix:«>»( $left, $right --> Bool) is
equiv(&infix:«>») { ... }'
===SORRY!=== Error while compiling -e
Routine given to equiv does not appear to be an operator
at -e:1

I think the error lies here in SETTINGS:


# next three sub would belong to traits.pm if PseudoStash were
available
# so early in the setting compunit
multi sub trait_mod:<is>(Routine $r, Str :$equiv!) {
    if (my $i = nqp::index($r.name, ':')) > 0 {
        my \nm ='&' ~ nqp::substr($r.name, 0, $i+1) ~ '<' ~
nqp::escape($equiv) ~ '>';
        trait_mod:<is>($r, equiv => ::(nm));
        return;
    }
    die "Routine given to equiv does not appear to be an operator";;
}

multi sub trait_mod:<is>(Routine $r, Str :$tighter!) {
    if (my $i = nqp::index($r.name, ':')) > 0 {
        my \nm ='&' ~ nqp::substr($r.name, 0, $i+1) ~ '<' ~
nqp::escape($tighter) ~ '>';
        trait_mod:<is>($r, tighter => ::(nm));
        return;
    }
    die "Routine given to tighter does not appear to be an operator";;
}

multi sub trait_mod:<is>(Routine $r, Str :$looser!) {
    if (my $i = nqp::index($r.name, ':')) > 0 {
        my \nm ='&' ~ nqp::substr($r.name, 0, $i+1) ~ '<' ~
nqp::escape($looser) ~ '>';
        trait_mod:<is>($r, looser => ::(nm));
        return;
    }
    die "Routine given to looser does not appear to be an operator";;



Using:
perl6 -version
This is Rakudo version 2016.11 built on MoarVM version 2016.11
implementing Perl 6.c.

OS is Fedora 24.

Regards,

Andrew N Parker

Reply via email to