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


    $ perl6 -v
    This is Rakudo version 2017.03-20-g027aa54 built on MoarVM version 
2017.03-7-g029d121
    implementing Perl 6.c.
    
    $ perl6 -e 'state $x = 42; dd $x'
    Int $x = 42
    
    $ perl6 -e 'state $x := 42; dd $x'
    Mu


I also have a small snippet where the `state` declaration uses assignment, but 
later
in the code a binding is used for the same variable. The result of the routine 
changes,
based on whether it's a binding or an assignment (also, I believe the result 
with binding
is incorrect:

    use MONKEY;
    sub z {
        my @found;
        for $^v.pairs {
            my $value  := .value;
            state $max = $value;
            my $cmp;
            nqp::if(
                nqp::iseq_i( ($cmp := $value cmp $max), 1 ),
    
                ### CHANGING FROM $max := to $max = BELOW CHANGES RESULT
                nqp::stmts((@found = $_), ($max := $value)),
                nqp::if(
                    nqp::iseq_i($cmp, 0),
                    @found.push: $_
                )
            )
        }
        @found.List
    }
    
    dd z (1, 2, 65, -6, 4);

Reply via email to