Perl

NAVIGATION
CATEGORIES
REFERRENCE
LINKS
  • Change 28488: Fix a bug on setting OPpASSIGN_COMMON on a AASSIGN op when the left

    0 answers - 2712 bytes - related search similar search Add To My Delicious Add To My Stumble Upon Add To My Google Mark Add To My Facebook Add To My Digg Add To My Reddit

    Change 28488 by rgs@marais on 2006/07/05 20:00:10
    Fix a bug on setting PpASSIGN_CMMN on a AASSIGN op when the left
    side is made out a list declared with our(). In this case PpLVAL_INTR
    isn't set on the left op, so we just remove that check. Add new tests.
    Affected files
    //depot/perl/op.c#830 edit
    //depot/perl/t/op/array.t#27 edit
    Differences
    //depot/perl/op.c#830 (text)
    Index: perl/op.c
    perl/op.c#829~28465~2006-07-02 12:30:49.000000000 -0700
    perl/op.c2006-07-05 13:00:10.000000000 -0700
    @@ -3783,7 +3783,6 @@
    * to store these values, evil chicanery is done with SvCUR().
    */
    -if (!(left->op_private & PpLVAL_INTR)) {
    P *lastop = o;
    PL_generation++;
    for (curop = LINKLIST(o); curop != o; curop = LINKLIST(curop)) {
    @@ -3837,7 +3836,6 @@
    }
    if (curop != o)
    o->op_private |= PpASSIGN_CMMN;
    -}
    if (right && right->op_type == P_SPLIT) {
    P* tmpop = ((LISTP*)right)->op_first;
    if (tmpop && (tmpop->op_type == P_PUSHRE)) {
    //depot/perl/t/op/array.t#27 (xtext)
    Index: perl/t/op/array.t
    perl/t/op/array.t#26~26186~2005-11-21 19:32:04.000000000 -0800
    perl/t/op/array.t2006-07-05 13:00:10.000000000 -0700
    @@ -7,7 +7,7 @@
    require 'test.pl';
    -plan (117);
    +plan (125);
    #
    # @foo, @bar, and @ary are also used from tie-stdarray after tie-ing them
    @@ -176,7 +176,6 @@
    # try the same with my
    {
    -
    my @bee = @bee;
    is("@bee", "foo bar burbl blah");# 54
    {
    @@ -202,6 +201,29 @@
    is("@bee", "foo bar burbl blah");# 63
    }
    +# try the same with our (except that previous values aren't restored)
    +{
    + our @bee = @bee;
    + is("@bee", "foo bar burbl blah");
    + {
    +our (undef,@bee) = @bee;
    +is("@bee", "bar burbl blah");
    +{
    + our @bee = ('XXX',@bee,'YYY');
    + is("@bee", "XXX bar burbl blah YYY");
    + {
    +our @bee = our @bee = qw(foo bar burbl blah);
    +is("@bee", "foo bar burbl blah");
    +{
    + our (@bim) = our(@bee) = qw(foo bar);
    + is("@bee", "foo bar");
    + is("@bim", "foo bar");
    +}
    + }
    +}
    + }
    +}
    +
    # make sure reification behaves
    my $t = curr_test();
    sub reify { $_[1] = $t++; print "@_\n"; }
    @@ -384,4 +406,18 @@
    is ($4[8], 23);
    }
    +# more tests for AASSIGN_CMMN
    +
    +{
    + our($x,$y,$z) = (13);
    + our($y,$z) = ($x,$y);
    + is("$x $y $z", "1 1 2");
    +}
    +{
    + our($x,$y,$z) = (13);
    + (our $y, our $z) = ($x,$y);
    + is("$x $y $z", "1 1 2");
    +}
    +
    +
    "We're included by lib/Tie/Array/std.t so we need to return something true";
    End of Patch.

Re: Change 28488: Fix a bug on setting OPpASSIGN_COMMON on a AASSIGN op when the left


max 4000 letters.
Your nickname that display:
In order to stop the spam: 9 + 8 =
QUESTION ON "Perl"

EMSDN.COM