In perl.git, the branch sprout/sigwack has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/f8e57b8a66fa7eefd0189aa63c4ab13a42080f1e?hp=5e543eb5187b1a41e0b8b35dfdccb914b6a1c179>

- Log -----------------------------------------------------------------
commit f8e57b8a66fa7eefd0189aa63c4ab13a42080f1e
Author: Father Chrysostomos <[email protected]>
Date:   Mon Jul 25 20:19:54 2016 -0700

    Skip no-common-vars optimisation for sig aliases
-----------------------------------------------------------------------

Summary of changes:
 perly.act         | 300 +++++++++++++++++++++++++++---------------------------
 perly.h           |   2 +-
 perly.tab         |  38 +++----
 perly.y           |   4 +
 t/op/signatures.t |   7 ++
 5 files changed, 183 insertions(+), 168 deletions(-)

diff --git a/perly.act b/perly.act
index 64b4e31..3519acb 100644
--- a/perly.act
+++ b/perly.act
@@ -835,51 +835,55 @@ case 2:
                                             "follows optional parameter");
                             }
                             if ((ps[(1) - (3)].val.ival) && var)
+                            {
                                 var->op_private |= OPpARGELEM_REF;
+                                PAD_COMPNAME_GEN_set(var->op_targ,
+                                                     PERL_INT_MAX);
+                            }
 
                             (yyval.opval) = var ? newSTATEOP(0, NULL, var) : 
(OP*)NULL;
                         ;}
     break;
 
   case 108:
-#line 760 "perly.y"
+#line 764 "perly.y"
     { parser->expect = XSIGVAR; (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 109:
-#line 762 "perly.y"
+#line 766 "perly.y"
     { parser->expect = XSIGVAR; (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 110:
-#line 768 "perly.y"
+#line 772 "perly.y"
     { (yyval.opval) = (ps[(1) - (2)].val.opval); ;}
     break;
 
   case 111:
-#line 770 "perly.y"
+#line 774 "perly.y"
     {
                          (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - 
(3)].val.opval), (ps[(3) - (3)].val.opval));
                        ;}
     break;
 
   case 112:
-#line 774 "perly.y"
+#line 778 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 113:
-#line 779 "perly.y"
+#line 783 "perly.y"
     { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 114:
-#line 781 "perly.y"
+#line 785 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 115:
-#line 785 "perly.y"
+#line 789 "perly.y"
     {
                             ENTER;
                             SAVEINT(PL_parser->sig_elems);
@@ -893,7 +897,7 @@ case 2:
     break;
 
   case 116:
-#line 797 "perly.y"
+#line 801 "perly.y"
     {
                             OP            *sigops = (ps[(3) - (4)].val.opval);
                             UNOP_AUX_item *aux;
@@ -928,32 +932,32 @@ case 2:
     break;
 
   case 118:
-#line 834 "perly.y"
+#line 838 "perly.y"
     { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 119:
-#line 839 "perly.y"
+#line 843 "perly.y"
     { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - 
(3)].val.opval)); ;}
     break;
 
   case 120:
-#line 841 "perly.y"
+#line 845 "perly.y"
     { (yyval.opval) = newLOGOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - 
(3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
     break;
 
   case 121:
-#line 843 "perly.y"
+#line 847 "perly.y"
     { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - 
(3)].val.opval)); ;}
     break;
 
   case 123:
-#line 849 "perly.y"
+#line 853 "perly.y"
     { (yyval.opval) = (ps[(1) - (2)].val.opval); ;}
     break;
 
   case 124:
-#line 851 "perly.y"
+#line 855 "perly.y"
     {
                          OP* term = (ps[(3) - (3)].val.opval);
                          (yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - 
(3)].val.opval), term);
@@ -961,21 +965,21 @@ case 2:
     break;
 
   case 126:
-#line 860 "perly.y"
+#line 864 "perly.y"
     { (yyval.opval) = op_convert_list((ps[(1) - (3)].val.ival), OPf_STACKED,
                                op_prepend_elem(OP_LIST, newGVREF((ps[(1) - 
(3)].val.ival),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
                        ;}
     break;
 
   case 127:
-#line 864 "perly.y"
+#line 868 "perly.y"
     { (yyval.opval) = op_convert_list((ps[(1) - (5)].val.ival), OPf_STACKED,
                                op_prepend_elem(OP_LIST, newGVREF((ps[(1) - 
(5)].val.ival),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
                        ;}
     break;
 
   case 128:
-#line 868 "perly.y"
+#line 872 "perly.y"
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST,
                                    op_prepend_elem(OP_LIST, scalar((ps[(1) - 
(6)].val.opval)), (ps[(5) - (6)].val.opval)),
@@ -984,7 +988,7 @@ case 2:
     break;
 
   case 129:
-#line 874 "perly.y"
+#line 878 "perly.y"
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST, scalar((ps[(1) - 
(3)].val.opval)),
                                    newMETHOP(OP_METHOD, 0, (ps[(3) - 
(3)].val.opval))));
@@ -992,7 +996,7 @@ case 2:
     break;
 
   case 130:
-#line 879 "perly.y"
+#line 883 "perly.y"
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST,
                                    op_prepend_elem(OP_LIST, (ps[(2) - 
(3)].val.opval), (ps[(3) - (3)].val.opval)),
@@ -1001,7 +1005,7 @@ case 2:
     break;
 
   case 131:
-#line 885 "perly.y"
+#line 889 "perly.y"
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST,
                                    op_prepend_elem(OP_LIST, (ps[(2) - 
(5)].val.opval), (ps[(4) - (5)].val.opval)),
@@ -1010,23 +1014,23 @@ case 2:
     break;
 
   case 132:
-#line 891 "perly.y"
+#line 895 "perly.y"
     { (yyval.opval) = op_convert_list((ps[(1) - (2)].val.ival), 0, (ps[(2) - 
(2)].val.opval)); ;}
     break;
 
   case 133:
-#line 893 "perly.y"
+#line 897 "perly.y"
     { (yyval.opval) = op_convert_list((ps[(1) - (4)].val.ival), 0, (ps[(3) - 
(4)].val.opval)); ;}
     break;
 
   case 134:
-#line 895 "perly.y"
+#line 899 "perly.y"
     { SvREFCNT_inc_simple_void(PL_compcv);
                          (yyval.opval) = newANONATTRSUB((ps[(2) - 
(3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); ;}
     break;
 
   case 135:
-#line 898 "perly.y"
+#line 902 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                 op_append_elem(OP_LIST,
                                   op_prepend_elem(OP_LIST, (ps[(4) - 
(5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
@@ -1034,18 +1038,18 @@ case 2:
     break;
 
   case 138:
-#line 913 "perly.y"
+#line 917 "perly.y"
     { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), 
scalar((ps[(3) - (5)].val.opval))); ;}
     break;
 
   case 139:
-#line 915 "perly.y"
+#line 919 "perly.y"
     { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), 
scalar((ps[(3) - (4)].val.opval)));
                        ;}
     break;
 
   case 140:
-#line 918 "perly.y"
+#line 922 "perly.y"
     { (yyval.opval) = newBINOP(OP_AELEM, 0,
                                        ref(newAVREF((ps[(1) - 
(5)].val.opval)),OP_RV2AV),
                                        scalar((ps[(4) - (5)].val.opval)));
@@ -1053,7 +1057,7 @@ case 2:
     break;
 
   case 141:
-#line 923 "perly.y"
+#line 927 "perly.y"
     { (yyval.opval) = newBINOP(OP_AELEM, 0,
                                        ref(newAVREF((ps[(1) - 
(4)].val.opval)),OP_RV2AV),
                                        scalar((ps[(3) - (4)].val.opval)));
@@ -1061,78 +1065,78 @@ case 2:
     break;
 
   case 142:
-#line 928 "perly.y"
+#line 932 "perly.y"
     { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), 
jmaybe((ps[(3) - (5)].val.opval)));
                        ;}
     break;
 
   case 143:
-#line 931 "perly.y"
+#line 935 "perly.y"
     { (yyval.opval) = newBINOP(OP_HELEM, 0,
                                        ref(newHVREF((ps[(1) - 
(6)].val.opval)),OP_RV2HV),
                                        jmaybe((ps[(4) - (6)].val.opval))); ;}
     break;
 
   case 144:
-#line 935 "perly.y"
+#line 939 "perly.y"
     { (yyval.opval) = newBINOP(OP_HELEM, 0,
                                        ref(newHVREF((ps[(1) - 
(5)].val.opval)),OP_RV2HV),
                                        jmaybe((ps[(3) - (5)].val.opval))); ;}
     break;
 
   case 145:
-#line 939 "perly.y"
+#line 943 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   newCVREF(0, scalar((ps[(1) - 
(4)].val.opval)))); ;}
     break;
 
   case 146:
-#line 942 "perly.y"
+#line 946 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   op_append_elem(OP_LIST, (ps[(4) - 
(5)].val.opval),
                                       newCVREF(0, scalar((ps[(1) - 
(5)].val.opval))))); ;}
     break;
 
   case 147:
-#line 947 "perly.y"
+#line 951 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   op_append_elem(OP_LIST, (ps[(3) - 
(4)].val.opval),
                                               newCVREF(0, scalar((ps[(1) - 
(4)].val.opval))))); ;}
     break;
 
   case 148:
-#line 951 "perly.y"
+#line 955 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   newCVREF(0, scalar((ps[(1) - 
(3)].val.opval)))); ;}
     break;
 
   case 149:
-#line 954 "perly.y"
+#line 958 "perly.y"
     { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - 
(6)].val.opval)); ;}
     break;
 
   case 150:
-#line 956 "perly.y"
+#line 960 "perly.y"
     { (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - 
(4)].val.opval)); ;}
     break;
 
   case 151:
-#line 958 "perly.y"
+#line 962 "perly.y"
     { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL); ;}
     break;
 
   case 152:
-#line 963 "perly.y"
+#line 967 "perly.y"
     { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), 
(ps[(2) - (3)].val.ival), (ps[(3) - (3)].val.opval)); ;}
     break;
 
   case 153:
-#line 965 "perly.y"
+#line 969 "perly.y"
     { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - 
(3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
     break;
 
   case 154:
-#line 967 "perly.y"
+#line 971 "perly.y"
     {   if ((ps[(2) - (3)].val.ival) != OP_REPEAT)
                                scalar((ps[(1) - (3)].val.opval));
                            (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 
0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
@@ -1140,94 +1144,94 @@ case 2:
     break;
 
   case 155:
-#line 972 "perly.y"
+#line 976 "perly.y"
     { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - 
(3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
     break;
 
   case 156:
-#line 974 "perly.y"
+#line 978 "perly.y"
     { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - 
(3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
     break;
 
   case 157:
-#line 976 "perly.y"
+#line 980 "perly.y"
     { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - 
(3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
     break;
 
   case 158:
-#line 978 "perly.y"
+#line 982 "perly.y"
     { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - 
(3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
     break;
 
   case 159:
-#line 980 "perly.y"
+#line 984 "perly.y"
     { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - 
(3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
     break;
 
   case 160:
-#line 982 "perly.y"
+#line 986 "perly.y"
     { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - 
(3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
     break;
 
   case 161:
-#line 984 "perly.y"
+#line 988 "perly.y"
     { (yyval.opval) = newRANGE((ps[(2) - (3)].val.ival), scalar((ps[(1) - 
(3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
     break;
 
   case 162:
-#line 986 "perly.y"
+#line 990 "perly.y"
     { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - 
(3)].val.opval)); ;}
     break;
 
   case 163:
-#line 988 "perly.y"
+#line 992 "perly.y"
     { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - 
(3)].val.opval)); ;}
     break;
 
   case 164:
-#line 990 "perly.y"
+#line 994 "perly.y"
     { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - 
(3)].val.opval)); ;}
     break;
 
   case 165:
-#line 992 "perly.y"
+#line 996 "perly.y"
     { (yyval.opval) = bind_match((ps[(2) - (3)].val.ival), (ps[(1) - 
(3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
     break;
 
   case 166:
-#line 997 "perly.y"
+#line 1001 "perly.y"
     { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - 
(2)].val.opval))); ;}
     break;
 
   case 167:
-#line 999 "perly.y"
+#line 1003 "perly.y"
     { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
     break;
 
   case 168:
-#line 1002 "perly.y"
+#line 1006 "perly.y"
     { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); ;}
     break;
 
   case 169:
-#line 1004 "perly.y"
+#line 1008 "perly.y"
     { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, scalar((ps[(2) - 
(2)].val.opval))); ;}
     break;
 
   case 170:
-#line 1006 "perly.y"
+#line 1010 "perly.y"
     { (yyval.opval) = newUNOP(OP_POSTINC, 0,
                                        op_lvalue(scalar((ps[(1) - 
(2)].val.opval)), OP_POSTINC)); ;}
     break;
 
   case 171:
-#line 1009 "perly.y"
+#line 1013 "perly.y"
     { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
                                        op_lvalue(scalar((ps[(1) - 
(2)].val.opval)), OP_POSTDEC));;}
     break;
 
   case 172:
-#line 1012 "perly.y"
+#line 1016 "perly.y"
     { (yyval.opval) = op_convert_list(OP_JOIN, 0,
                                       op_append_elem(
                                        OP_LIST,
@@ -1241,45 +1245,45 @@ case 2:
     break;
 
   case 173:
-#line 1023 "perly.y"
+#line 1027 "perly.y"
     { (yyval.opval) = newUNOP(OP_PREINC, 0,
                                        op_lvalue(scalar((ps[(2) - 
(2)].val.opval)), OP_PREINC)); ;}
     break;
 
   case 174:
-#line 1026 "perly.y"
+#line 1030 "perly.y"
     { (yyval.opval) = newUNOP(OP_PREDEC, 0,
                                        op_lvalue(scalar((ps[(2) - 
(2)].val.opval)), OP_PREDEC)); ;}
     break;
 
   case 175:
-#line 1033 "perly.y"
+#line 1037 "perly.y"
     { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval)); ;}
     break;
 
   case 176:
-#line 1035 "perly.y"
+#line 1039 "perly.y"
     { (yyval.opval) = newANONLIST((OP*)NULL);;}
     break;
 
   case 177:
-#line 1037 "perly.y"
+#line 1041 "perly.y"
     { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval)); ;}
     break;
 
   case 178:
-#line 1039 "perly.y"
+#line 1043 "perly.y"
     { (yyval.opval) = newANONHASH((OP*)NULL); ;}
     break;
 
   case 179:
-#line 1041 "perly.y"
+#line 1045 "perly.y"
     { SvREFCNT_inc_simple_void(PL_compcv);
                          (yyval.opval) = newANONATTRSUB((ps[(2) - 
(5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - 
(5)].val.opval)); ;}
     break;
 
   case 180:
-#line 1044 "perly.y"
+#line 1048 "perly.y"
     {
                          OP *body;
                          if (parser->copline > (line_t)(ps[(6) - 
(8)].val.ival))
@@ -1292,87 +1296,87 @@ case 2:
     break;
 
   case 181:
-#line 1058 "perly.y"
+#line 1062 "perly.y"
     { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), (ps[(1) - 
(2)].val.ival));;}
     break;
 
   case 182:
-#line 1060 "perly.y"
+#line 1064 "perly.y"
     { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - 
(2)].val.opval)));;}
     break;
 
   case 187:
-#line 1068 "perly.y"
+#line 1072 "perly.y"
     { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - 
(5)].val.opval), (ps[(5) - (5)].val.opval)); ;}
     break;
 
   case 188:
-#line 1070 "perly.y"
+#line 1074 "perly.y"
     { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[(2) - (2)].val.opval)); ;}
     break;
 
   case 189:
-#line 1072 "perly.y"
+#line 1076 "perly.y"
     { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[(3) - 
(3)].val.opval),1)); ;}
     break;
 
   case 190:
-#line 1074 "perly.y"
+#line 1078 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 191:
-#line 1076 "perly.y"
+#line 1080 "perly.y"
     { (yyval.opval) = localize((ps[(2) - (2)].val.opval),0); ;}
     break;
 
   case 192:
-#line 1078 "perly.y"
+#line 1082 "perly.y"
     { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); ;}
     break;
 
   case 193:
-#line 1080 "perly.y"
+#line 1084 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 194:
-#line 1082 "perly.y"
+#line 1086 "perly.y"
     { (yyval.opval) = sawparens(newNULLLIST()); ;}
     break;
 
   case 195:
-#line 1084 "perly.y"
+#line 1088 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 196:
-#line 1086 "perly.y"
+#line 1090 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 197:
-#line 1088 "perly.y"
+#line 1092 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 198:
-#line 1090 "perly.y"
+#line 1094 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 199:
-#line 1092 "perly.y"
+#line 1096 "perly.y"
     { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), 
OP_AV2ARYLEN));;}
     break;
 
   case 200:
-#line 1094 "perly.y"
+#line 1098 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 201:
-#line 1096 "perly.y"
+#line 1100 "perly.y"
     { (yyval.opval) = op_prepend_elem(OP_ASLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_ASLICE, 0,
@@ -1385,7 +1389,7 @@ case 2:
     break;
 
   case 202:
-#line 1106 "perly.y"
+#line 1110 "perly.y"
     { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_KVASLICE, 0,
@@ -1398,7 +1402,7 @@ case 2:
     break;
 
   case 203:
-#line 1116 "perly.y"
+#line 1120 "perly.y"
     { (yyval.opval) = op_prepend_elem(OP_HSLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_HSLICE, 0,
@@ -1411,7 +1415,7 @@ case 2:
     break;
 
   case 204:
-#line 1126 "perly.y"
+#line 1130 "perly.y"
     { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_KVHSLICE, 0,
@@ -1424,23 +1428,23 @@ case 2:
     break;
 
   case 205:
-#line 1136 "perly.y"
+#line 1140 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 206:
-#line 1138 "perly.y"
+#line 1142 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - 
(1)].val.opval))); ;}
     break;
 
   case 207:
-#line 1140 "perly.y"
+#line 1144 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - 
(3)].val.opval)));
                        ;}
     break;
 
   case 208:
-#line 1143 "perly.y"
+#line 1147 "perly.y"
     {
                          (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST, (ps[(3) - 
(4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
@@ -1448,129 +1452,129 @@ case 2:
     break;
 
   case 209:
-#line 1148 "perly.y"
+#line 1152 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                            op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), 
scalar((ps[(2) - (3)].val.opval))));
                        ;}
     break;
 
   case 210:
-#line 1152 "perly.y"
+#line 1156 "perly.y"
     { (yyval.opval) = newSVREF((ps[(1) - (4)].val.opval)); ;}
     break;
 
   case 211:
-#line 1154 "perly.y"
+#line 1158 "perly.y"
     { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); ;}
     break;
 
   case 212:
-#line 1156 "perly.y"
+#line 1160 "perly.y"
     { (yyval.opval) = newHVREF((ps[(1) - (4)].val.opval)); ;}
     break;
 
   case 213:
-#line 1158 "perly.y"
+#line 1162 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
                                       scalar(newCVREF((ps[(3) - 
(4)].val.ival),(ps[(1) - (4)].val.opval)))); ;}
     break;
 
   case 214:
-#line 1161 "perly.y"
+#line 1165 "perly.y"
     { (yyval.opval) = newGVREF(0,(ps[(1) - (4)].val.opval)); ;}
     break;
 
   case 215:
-#line 1163 "perly.y"
+#line 1167 "perly.y"
     { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), OPf_SPECIAL);
                            PL_hints |= HINT_BLOCK_SCOPE; ;}
     break;
 
   case 216:
-#line 1166 "perly.y"
+#line 1170 "perly.y"
     { (yyval.opval) = newLOOPEX((ps[(1) - (2)].val.ival),(ps[(2) - 
(2)].val.opval)); ;}
     break;
 
   case 217:
-#line 1168 "perly.y"
+#line 1172 "perly.y"
     { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); ;}
     break;
 
   case 218:
-#line 1170 "perly.y"
+#line 1174 "perly.y"
     { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); ;}
     break;
 
   case 219:
-#line 1172 "perly.y"
+#line 1176 "perly.y"
     { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - 
(2)].val.opval)); ;}
     break;
 
   case 220:
-#line 1174 "perly.y"
+#line 1178 "perly.y"
     { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - 
(2)].val.opval)); ;}
     break;
 
   case 221:
-#line 1176 "perly.y"
+#line 1180 "perly.y"
     { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.ival) ? OPf_SPECIAL 
: 0); ;}
     break;
 
   case 222:
-#line 1178 "perly.y"
+#line 1182 "perly.y"
     { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.ival) ? 
OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval)); ;}
     break;
 
   case 223:
-#line 1180 "perly.y"
+#line 1184 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - 
(1)].val.opval))); ;}
     break;
 
   case 224:
-#line 1182 "perly.y"
+#line 1186 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                            op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), 
scalar((ps[(1) - (2)].val.opval)))); ;}
     break;
 
   case 225:
-#line 1185 "perly.y"
+#line 1189 "perly.y"
     { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); ;}
     break;
 
   case 226:
-#line 1187 "perly.y"
+#line 1191 "perly.y"
     { (yyval.opval) = newOP((ps[(1) - (3)].val.ival), 0);;}
     break;
 
   case 227:
-#line 1189 "perly.y"
+#line 1193 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 228:
-#line 1191 "perly.y"
+#line 1195 "perly.y"
     { (yyval.opval) = (ps[(1) - (3)].val.opval); ;}
     break;
 
   case 229:
-#line 1193 "perly.y"
+#line 1197 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - 
(1)].val.opval))); ;}
     break;
 
   case 230:
-#line 1195 "perly.y"
+#line 1199 "perly.y"
     { (yyval.opval) = ((ps[(1) - (3)].val.ival) == OP_NOT)
                           ? newUNOP((ps[(1) - (3)].val.ival), 0, 
newSVOP(OP_CONST, 0, newSViv(0)))
                           : newOP((ps[(1) - (3)].val.ival), OPf_SPECIAL); ;}
     break;
 
   case 231:
-#line 1199 "perly.y"
+#line 1203 "perly.y"
     { (yyval.opval) = newUNOP((ps[(1) - (4)].val.ival), 0, (ps[(3) - 
(4)].val.opval)); ;}
     break;
 
   case 232:
-#line 1201 "perly.y"
+#line 1205 "perly.y"
     {
                            if (   (ps[(1) - (1)].val.opval)->op_type != 
OP_TRANS
                                && (ps[(1) - (1)].val.opval)->op_type != 
OP_TRANSR
@@ -1584,12 +1588,12 @@ case 2:
     break;
 
   case 233:
-#line 1212 "perly.y"
+#line 1216 "perly.y"
     { (yyval.opval) = pmruntime((ps[(1) - (6)].val.opval), (ps[(4) - 
(6)].val.opval), (ps[(5) - (6)].val.opval), 1, (ps[(2) - (6)].val.ival)); ;}
     break;
 
   case 236:
-#line 1216 "perly.y"
+#line 1220 "perly.y"
     {
                          (yyval.opval) = newLISTOP(OP_DIE, 0, 
newOP(OP_PUSHMARK, 0),
                                newSVOP(OP_CONST, 0, 
newSVpvs("Unimplemented")));
@@ -1597,151 +1601,151 @@ case 2:
     break;
 
   case 238:
-#line 1225 "perly.y"
+#line 1229 "perly.y"
     { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - 
(3)].val.opval)); ;}
     break;
 
   case 239:
-#line 1227 "perly.y"
+#line 1231 "perly.y"
     { (yyval.opval) = localize((ps[(2) - (2)].val.opval),1); ;}
     break;
 
   case 240:
-#line 1229 "perly.y"
+#line 1233 "perly.y"
     { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[(3) - 
(4)].val.opval),(ps[(4) - (4)].val.opval))); ;}
     break;
 
   case 241:
-#line 1234 "perly.y"
+#line 1238 "perly.y"
     { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); ;}
     break;
 
   case 242:
-#line 1236 "perly.y"
+#line 1240 "perly.y"
     { (yyval.opval) = sawparens(newNULLLIST()); ;}
     break;
 
   case 243:
-#line 1239 "perly.y"
+#line 1243 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 244:
-#line 1241 "perly.y"
+#line 1245 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 245:
-#line 1243 "perly.y"
+#line 1247 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 246:
-#line 1248 "perly.y"
+#line 1252 "perly.y"
     { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 247:
-#line 1250 "perly.y"
+#line 1254 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 248:
-#line 1254 "perly.y"
+#line 1258 "perly.y"
     { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 249:
-#line 1256 "perly.y"
+#line 1260 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 250:
-#line 1260 "perly.y"
+#line 1264 "perly.y"
     { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 251:
-#line 1262 "perly.y"
+#line 1266 "perly.y"
     { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
     break;
 
   case 252:
-#line 1268 "perly.y"
+#line 1272 "perly.y"
     { parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;}
     break;
 
   case 260:
-#line 1285 "perly.y"
+#line 1289 "perly.y"
     { (yyval.opval) = newCVREF((ps[(1) - (2)].val.ival),(ps[(2) - 
(2)].val.opval)); ;}
     break;
 
   case 261:
-#line 1289 "perly.y"
+#line 1293 "perly.y"
     { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval)); ;}
     break;
 
   case 262:
-#line 1293 "perly.y"
+#line 1297 "perly.y"
     { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
                          if ((yyval.opval)) (yyval.opval)->op_private |= 
(ps[(1) - (2)].val.ival);
                        ;}
     break;
 
   case 263:
-#line 1299 "perly.y"
+#line 1303 "perly.y"
     { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
                          if ((yyval.opval)) (yyval.opval)->op_private |= 
(ps[(1) - (2)].val.ival);
                        ;}
     break;
 
   case 264:
-#line 1305 "perly.y"
+#line 1309 "perly.y"
     { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); ;}
     break;
 
   case 265:
-#line 1307 "perly.y"
+#line 1311 "perly.y"
     { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); ;}
     break;
 
   case 266:
-#line 1311 "perly.y"
+#line 1315 "perly.y"
     { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval)); ;}
     break;
 
   case 268:
-#line 1316 "perly.y"
+#line 1320 "perly.y"
     { (yyval.opval) = newAVREF((ps[(1) - (3)].val.opval)); ;}
     break;
 
   case 270:
-#line 1321 "perly.y"
+#line 1325 "perly.y"
     { (yyval.opval) = newHVREF((ps[(1) - (3)].val.opval)); ;}
     break;
 
   case 272:
-#line 1326 "perly.y"
+#line 1330 "perly.y"
     { (yyval.opval) = newGVREF(0,(ps[(1) - (3)].val.opval)); ;}
     break;
 
   case 273:
-#line 1331 "perly.y"
+#line 1335 "perly.y"
     { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
     break;
 
   case 274:
-#line 1333 "perly.y"
+#line 1337 "perly.y"
     { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
     break;
 
   case 275:
-#line 1335 "perly.y"
+#line 1339 "perly.y"
     { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); ;}
     break;
 
   case 276:
-#line 1338 "perly.y"
+#line 1342 "perly.y"
     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
@@ -1752,6 +1756,6 @@ case 2:
     
 
 /* Generated from:
- * 0ee7d81677747af4b7756814989f8c18b68df823b26fc39364347fb91fa2ab8f perly.y
+ * 1387a6ecf51aac999c376bcc53060bfa44c439c56cddf6979173151db9df320d perly.y
  * 3e1dff60f26df8933d7aed0c0e87177a0f022c14800c0707eb62a7db4196ac98 
regen_perly.pl
  * ex: set ro: */
diff --git a/perly.h b/perly.h
index b754ad1..4e45f46 100644
--- a/perly.h
+++ b/perly.h
@@ -258,6 +258,6 @@ typedef union YYSTYPE
 
 
 /* Generated from:
- * 0ee7d81677747af4b7756814989f8c18b68df823b26fc39364347fb91fa2ab8f perly.y
+ * 1387a6ecf51aac999c376bcc53060bfa44c439c56cddf6979173151db9df320d perly.y
  * 3e1dff60f26df8933d7aed0c0e87177a0f022c14800c0707eb62a7db4196ac98 
regen_perly.pl
  * ex: set ro: */
diff --git a/perly.tab b/perly.tab
index bb21668..b15aa62 100644
--- a/perly.tab
+++ b/perly.tab
@@ -211,24 +211,24 @@ static const yytype_uint16 yyrline[] =
      537,   548,   549,   555,   561,   562,   567,   570,   574,   579,
      583,   587,   588,   592,   598,   603,   608,   609,   614,   615,
      620,   621,   623,   628,   630,   642,   643,   648,   650,   654,
-     674,   675,   677,   681,   682,   684,   686,   693,   759,   761,
-     767,   769,   773,   779,   780,   785,   784,   833,   834,   838,
-     840,   842,   844,   848,   850,   855,   859,   863,   867,   873,
-     878,   884,   890,   892,   895,   894,   905,   906,   910,   914,
-     917,   922,   927,   930,   934,   938,   941,   946,   950,   953,
-     955,   957,   962,   964,   966,   971,   973,   975,   977,   979,
-     981,   983,   985,   987,   989,   991,   996,   998,  1001,  1003,
-    1005,  1008,  1011,  1022,  1025,  1032,  1034,  1036,  1038,  1040,
-    1043,  1057,  1059,  1063,  1064,  1065,  1066,  1067,  1069,  1071,
-    1073,  1075,  1077,  1079,  1081,  1083,  1085,  1087,  1089,  1091,
-    1093,  1095,  1105,  1115,  1125,  1135,  1137,  1139,  1142,  1147,
-    1151,  1153,  1155,  1157,  1160,  1162,  1165,  1167,  1169,  1171,
-    1173,  1175,  1177,  1179,  1181,  1184,  1186,  1188,  1190,  1192,
-    1194,  1198,  1201,  1200,  1213,  1214,  1215,  1220,  1224,  1226,
-    1228,  1233,  1235,  1238,  1240,  1242,  1247,  1249,  1254,  1255,
-    1260,  1261,  1267,  1271,  1272,  1273,  1276,  1277,  1280,  1281,
-    1284,  1288,  1292,  1298,  1304,  1306,  1310,  1314,  1315,  1319,
-    1320,  1324,  1325,  1330,  1332,  1334,  1337
+     674,   675,   677,   681,   682,   684,   686,   693,   763,   765,
+     771,   773,   777,   783,   784,   789,   788,   837,   838,   842,
+     844,   846,   848,   852,   854,   859,   863,   867,   871,   877,
+     882,   888,   894,   896,   899,   898,   909,   910,   914,   918,
+     921,   926,   931,   934,   938,   942,   945,   950,   954,   957,
+     959,   961,   966,   968,   970,   975,   977,   979,   981,   983,
+     985,   987,   989,   991,   993,   995,  1000,  1002,  1005,  1007,
+    1009,  1012,  1015,  1026,  1029,  1036,  1038,  1040,  1042,  1044,
+    1047,  1061,  1063,  1067,  1068,  1069,  1070,  1071,  1073,  1075,
+    1077,  1079,  1081,  1083,  1085,  1087,  1089,  1091,  1093,  1095,
+    1097,  1099,  1109,  1119,  1129,  1139,  1141,  1143,  1146,  1151,
+    1155,  1157,  1159,  1161,  1164,  1166,  1169,  1171,  1173,  1175,
+    1177,  1179,  1181,  1183,  1185,  1188,  1190,  1192,  1194,  1196,
+    1198,  1202,  1205,  1204,  1217,  1218,  1219,  1224,  1228,  1230,
+    1232,  1237,  1239,  1242,  1244,  1246,  1251,  1253,  1258,  1259,
+    1264,  1265,  1271,  1275,  1276,  1277,  1280,  1281,  1284,  1285,
+    1288,  1292,  1296,  1302,  1308,  1310,  1314,  1318,  1319,  1323,
+    1324,  1328,  1329,  1334,  1336,  1338,  1341
 };
 #endif
 
@@ -1241,6 +1241,6 @@ static const toketypes yy_type_tab[] =
 };
 
 /* Generated from:
- * 0ee7d81677747af4b7756814989f8c18b68df823b26fc39364347fb91fa2ab8f perly.y
+ * 1387a6ecf51aac999c376bcc53060bfa44c439c56cddf6979173151db9df320d perly.y
  * 3e1dff60f26df8933d7aed0c0e87177a0f022c14800c0707eb62a7db4196ac98 
regen_perly.pl
  * ex: set ro: */
diff --git a/perly.y b/perly.y
index bb2a8b9..06e8583 100644
--- a/perly.y
+++ b/perly.y
@@ -748,7 +748,11 @@ sigscalarelem:
                                             "follows optional parameter");
                             }
                             if ($1 && var)
+                            {
                                 var->op_private |= OPpARGELEM_REF;
+                                PAD_COMPNAME_GEN_set(var->op_targ,
+                                                     PERL_INT_MAX);
+                            }
 
                             $$ = var ? newSTATEOP(0, NULL, var) : (OP*)NULL;
                         }
diff --git a/t/op/signatures.t b/t/op/signatures.t
index c767d0b..fdc9e23 100644
--- a/t/op/signatures.t
+++ b/t/op/signatures.t
@@ -1393,6 +1393,13 @@ like $@, qr/^Assigned value is not a HASH reference at /,
 eval 'sub (\\\$a) {}';  # That’s a double backslash.
 like $@, qr/syntax error/, '(\\\$a) not allowed';
 
+sub (\$x=\my $y) {
+    $x = 3;
+    ($x, my $z) = (1, $y);
+    is $z, 3, 'list assignment after aliasing via signature';
+}->();
+
+
 done_testing;
 
 1;

--
Perl5 Master Repository

Reply via email to