diff --git a/MANIFEST b/MANIFEST index 3b20666b2113..2ecec777eba2 100644 --- a/MANIFEST +++ b/MANIFEST @@ -6007,6 +6007,7 @@ t/class/accessor.t See if accessor methods work t/class/class.t See if class declarations work t/class/construct.t See if class constructors work t/class/destruct.t See if class destruction works +t/class/EndsWithADJUST.pm Helper module for test for GH#23758 in t/class/phasers.t t/class/field.t See if class field declarations work t/class/gh22169.t Test defining a class that previously failed to define t/class/gh23511.t Test defining a reader after a strict 'vars' violation diff --git a/perly.act b/perly.act index e052adcce1e1..9a93e9f2bd1a 100644 --- a/perly.act +++ b/perly.act @@ -379,12 +379,13 @@ case 2: /* @1: %empty */ break; } (yyval.opval) = NULL; + parser->parsed_sub = 1; } break; case 44: /* barestmt: KW_PACKAGE BAREWORD BAREWORD PERLY_SEMICOLON */ -#line 436 "perly.y" +#line 437 "perly.y" { package((ps[-1].val.opval)); if ((ps[-2].val.opval)) @@ -395,7 +396,7 @@ case 2: /* @1: %empty */ break; case 45: /* barestmt: KW_CLASS BAREWORD BAREWORD subattrlist PERLY_SEMICOLON */ -#line 443 "perly.y" +#line 444 "perly.y" { package((ps[-2].val.opval)); if ((ps[-3].val.opval)) @@ -410,13 +411,13 @@ case 2: /* @1: %empty */ break; case 46: /* $@13: %empty */ -#line 454 "perly.y" +#line 455 "perly.y" { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ } break; case 47: /* barestmt: KW_USE_or_NO startsub $@13 BAREWORD BAREWORD optlistexpr PERLY_SEMICOLON */ -#line 458 "perly.y" +#line 459 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); utilize((ps[-6].val.ival), (ps[-5].val.ival), (ps[-3].val.opval), (ps[-2].val.opval), (ps[-1].val.opval)); @@ -427,7 +428,7 @@ case 2: /* @1: %empty */ break; case 48: /* barestmt: KW_IF PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock else */ -#line 465 "perly.y" +#line 466 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newCONDOP(0, (ps[-3].val.opval), op_scope((ps[-1].val.opval)), (ps[0].val.opval))); @@ -437,7 +438,7 @@ case 2: /* @1: %empty */ break; case 49: /* barestmt: KW_UNLESS PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock else */ -#line 471 "perly.y" +#line 472 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newCONDOP(0, (ps[-3].val.opval), (ps[0].val.opval), op_scope((ps[-1].val.opval)))); @@ -447,7 +448,7 @@ case 2: /* @1: %empty */ break; case 50: /* barestmt: KW_GIVEN PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock */ -#line 477 "perly.y" +#line 478 "perly.y" { (yyval.opval) = block_end((ps[-3].val.ival), newGIVENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)), 0)); parser->copline = (line_t)(ps[-5].val.ival); @@ -456,19 +457,19 @@ case 2: /* @1: %empty */ break; case 51: /* barestmt: KW_WHEN PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock */ -#line 482 "perly.y" +#line 483 "perly.y" { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); } break; case 52: /* barestmt: KW_DEFAULT block */ -#line 484 "perly.y" +#line 485 "perly.y" { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); } break; case 53: /* barestmt: KW_WHILE PERLY_PAREN_OPEN remember texpr PERLY_PAREN_CLOSE mintro mblock cont */ -#line 486 "perly.y" +#line 487 "perly.y" { (yyval.opval) = block_end((ps[-5].val.ival), newWHILEOP(0, 1, NULL, @@ -479,7 +480,7 @@ case 2: /* @1: %empty */ break; case 54: /* barestmt: KW_UNTIL PERLY_PAREN_OPEN remember iexpr PERLY_PAREN_CLOSE mintro mblock cont */ -#line 493 "perly.y" +#line 494 "perly.y" { (yyval.opval) = block_end((ps[-5].val.ival), newWHILEOP(0, 1, NULL, @@ -490,19 +491,19 @@ case 2: /* @1: %empty */ break; case 55: /* $@14: %empty */ -#line 500 "perly.y" +#line 501 "perly.y" { parser->expect = XTERM; } break; case 56: /* $@15: %empty */ -#line 502 "perly.y" +#line 503 "perly.y" { parser->expect = XTERM; } break; case 57: /* barestmt: KW_FOR PERLY_PAREN_OPEN remember mnexpr PERLY_SEMICOLON $@14 texpr PERLY_SEMICOLON $@15 mintro mnexpr PERLY_PAREN_CLOSE mblock */ -#line 505 "perly.y" +#line 506 "perly.y" { OP *initop = (ps[-9].val.opval); OP *forop = newWHILEOP(0, 1, NULL, @@ -521,7 +522,7 @@ case 2: /* @1: %empty */ break; case 58: /* barestmt: KW_FOR KW_MY remember my_scalar PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 520 "perly.y" +#line 521 "perly.y" { (yyval.opval) = block_end((ps[-6].val.ival), newFOROP(0, (ps[-5].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); parser->copline = (line_t)(ps[-8].val.ival); @@ -530,7 +531,7 @@ case 2: /* @1: %empty */ break; case 59: /* barestmt: KW_FOR KW_MY remember PERLY_PAREN_OPEN my_list_of_scalars PERLY_PAREN_CLOSE PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 525 "perly.y" +#line 526 "perly.y" { if ((ps[-6].val.opval)->op_type == OP_PADSV) /* degenerate case of 1 var: for my ($x) .... @@ -543,7 +544,7 @@ case 2: /* @1: %empty */ break; case 60: /* barestmt: KW_FOR scalar PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 534 "perly.y" +#line 535 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0, op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); @@ -553,13 +554,13 @@ case 2: /* @1: %empty */ break; case 61: /* @16: %empty */ -#line 540 "perly.y" +#line 541 "perly.y" { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); } break; case 62: /* barestmt: KW_FOR my_refgen remember my_var @16 PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 542 "perly.y" +#line 543 "perly.y" { (yyval.opval) = block_end( (ps[-7].val.ival), @@ -576,7 +577,7 @@ case 2: /* @1: %empty */ break; case 63: /* barestmt: KW_FOR REFGEN refgen_topic PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 555 "perly.y" +#line 556 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP( 0, op_lvalue(newUNOP(OP_REFGEN, 0, @@ -588,7 +589,7 @@ case 2: /* @1: %empty */ break; case 64: /* barestmt: KW_FOR PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 563 "perly.y" +#line 564 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0, NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); @@ -598,7 +599,7 @@ case 2: /* @1: %empty */ break; case 65: /* $@17: %empty */ -#line 569 "perly.y" +#line 570 "perly.y" { if(!(ps[0].val.opval)) { yyerror("catch block requires a (VAR)"); @@ -609,7 +610,7 @@ case 2: /* @1: %empty */ break; case 66: /* barestmt: KW_TRY mblock KW_CATCH remember catch_paren $@17 mblock finally */ -#line 576 "perly.y" +#line 577 "perly.y" { (yyval.opval) = newTRYCATCHOP(0, (ps[-6].val.opval), (ps[-3].val.opval), block_end((ps[-4].val.ival), op_scope((ps[-1].val.opval)))); @@ -621,7 +622,7 @@ case 2: /* @1: %empty */ break; case 67: /* barestmt: block cont */ -#line 584 "perly.y" +#line 585 "perly.y" { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, NULL, @@ -631,7 +632,7 @@ case 2: /* @1: %empty */ break; case 68: /* $@18: %empty */ -#line 590 "perly.y" +#line 591 "perly.y" { package((ps[-2].val.opval)); if ((ps[-3].val.opval)) { @@ -642,7 +643,7 @@ case 2: /* @1: %empty */ break; case 69: /* barestmt: KW_PACKAGE BAREWORD BAREWORD PERLY_BRACE_OPEN remember $@18 stmtseq PERLY_BRACE_CLOSE */ -#line 597 "perly.y" +#line 598 "perly.y" { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, NULL, @@ -654,7 +655,7 @@ case 2: /* @1: %empty */ break; case 70: /* $@19: %empty */ -#line 605 "perly.y" +#line 606 "perly.y" { package((ps[-3].val.opval)); @@ -670,7 +671,7 @@ case 2: /* @1: %empty */ break; case 71: /* barestmt: KW_CLASS BAREWORD BAREWORD subattrlist PERLY_BRACE_OPEN remember $@19 stmtseq PERLY_BRACE_CLOSE */ -#line 617 "perly.y" +#line 618 "perly.y" { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, NULL, @@ -682,7 +683,7 @@ case 2: /* @1: %empty */ break; case 72: /* barestmt: fielddecl PERLY_SEMICOLON */ -#line 625 "perly.y" +#line 626 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } @@ -690,7 +691,7 @@ case 2: /* @1: %empty */ break; case 73: /* barestmt: sideff PERLY_SEMICOLON */ -#line 629 "perly.y" +#line 630 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } @@ -698,7 +699,7 @@ case 2: /* @1: %empty */ break; case 74: /* barestmt: KW_DEFER mblock */ -#line 633 "perly.y" +#line 634 "perly.y" { (yyval.opval) = newDEFEROP(0, op_scope((ps[0].val.opval))); } @@ -706,7 +707,7 @@ case 2: /* @1: %empty */ break; case 75: /* barestmt: YADAYADA PERLY_SEMICOLON */ -#line 637 "perly.y" +#line 638 "perly.y" { /* diag_listed_as: Unimplemented */ (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0), @@ -716,7 +717,7 @@ case 2: /* @1: %empty */ break; case 76: /* barestmt: PERLY_SEMICOLON */ -#line 643 "perly.y" +#line 644 "perly.y" { (yyval.opval) = NULL; parser->copline = NOLINE; @@ -725,7 +726,7 @@ case 2: /* @1: %empty */ break; case 77: /* formline: THING formarg */ -#line 651 "perly.y" +#line 652 "perly.y" { OP *list; if ((ps[0].val.opval)) { OP *term = (ps[0].val.opval); @@ -744,62 +745,62 @@ case 2: /* @1: %empty */ break; case 79: /* formarg: FORMLBRACK stmtseq FORMRBRACK */ -#line 670 "perly.y" +#line 671 "perly.y" { (yyval.opval) = op_unscope((ps[-1].val.opval)); } break; case 81: /* sideff: error */ -#line 678 "perly.y" +#line 679 "perly.y" { (yyval.opval) = NULL; } break; case 82: /* sideff: expr */ -#line 680 "perly.y" +#line 681 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 83: /* sideff: expr KW_IF condition */ -#line 682 "perly.y" +#line 683 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); } break; case 84: /* sideff: expr KW_UNLESS condition */ -#line 684 "perly.y" +#line 685 "perly.y" { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); } break; case 85: /* sideff: expr KW_WHILE condition */ -#line 686 "perly.y" +#line 687 "perly.y" { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); } break; case 86: /* sideff: expr KW_UNTIL iexpr */ -#line 688 "perly.y" +#line 689 "perly.y" { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); } break; case 87: /* sideff: expr KW_FOR condition */ -#line 690 "perly.y" +#line 691 "perly.y" { (yyval.opval) = newFOROP(0, NULL, (ps[0].val.opval), (ps[-2].val.opval), NULL); parser->copline = (line_t)(ps[-1].val.ival); } break; case 88: /* sideff: expr KW_WHEN condition */ -#line 693 "perly.y" +#line 694 "perly.y" { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); } break; case 90: /* else: KW_ELSE mblock */ -#line 700 "perly.y" +#line 701 "perly.y" { ((ps[0].val.opval))->op_flags |= OPf_PARENS; (yyval.opval) = op_scope((ps[0].val.opval)); @@ -808,7 +809,7 @@ case 2: /* @1: %empty */ break; case 91: /* else: KW_ELSIF PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock else */ -#line 705 "perly.y" +#line 706 "perly.y" { parser->copline = (line_t)(ps[-5].val.ival); (yyval.opval) = newCONDOP(0, newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)), @@ -819,25 +820,25 @@ case 2: /* @1: %empty */ break; case 93: /* cont: KW_CONTINUE block */ -#line 717 "perly.y" +#line 718 "perly.y" { (yyval.opval) = op_scope((ps[0].val.opval)); } break; case 94: /* finally: %empty */ -#line 722 "perly.y" +#line 723 "perly.y" { (yyval.opval) = NULL; } break; case 95: /* finally: KW_FINALLY block */ -#line 724 "perly.y" +#line 725 "perly.y" { (yyval.opval) = op_scope((ps[0].val.opval)); } break; case 96: /* mintro: %empty */ -#line 729 "perly.y" +#line 730 "perly.y" { (yyval.ival) = (PL_min_intro_pending && PL_max_intro_pending >= PL_min_intro_pending); intro_my(); } @@ -845,7 +846,7 @@ case 2: /* @1: %empty */ break; case 99: /* texpr: %empty */ -#line 741 "perly.y" +#line 742 "perly.y" { YYSTYPE tmplval; (void)scan_num("1", &tmplval); (yyval.opval) = tmplval.opval; } @@ -853,59 +854,59 @@ case 2: /* @1: %empty */ break; case 101: /* iexpr: expr */ -#line 749 "perly.y" +#line 750 "perly.y" { (yyval.opval) = invert(scalar((ps[0].val.opval))); } break; case 102: /* mexpr: expr */ -#line 754 "perly.y" +#line 755 "perly.y" { (yyval.opval) = (ps[0].val.opval); intro_my(); } break; case 103: /* mnexpr: nexpr */ -#line 758 "perly.y" +#line 759 "perly.y" { (yyval.opval) = (ps[0].val.opval); intro_my(); } break; case 104: /* formname: BAREWORD */ -#line 761 "perly.y" +#line 762 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 106: /* startsub: %empty */ -#line 766 "perly.y" +#line 767 "perly.y" { (yyval.ival) = start_subparse(FALSE, 0); SAVEFREESV(PL_compcv); } break; case 107: /* startanonsub: %empty */ -#line 772 "perly.y" +#line 773 "perly.y" { (yyval.ival) = start_subparse(FALSE, CVf_ANON); SAVEFREESV(PL_compcv); } break; case 108: /* startanonmethod: %empty */ -#line 777 "perly.y" +#line 778 "perly.y" { (yyval.ival) = start_subparse(FALSE, CVf_ANON|CVf_IsMETHOD); SAVEFREESV(PL_compcv); } break; case 109: /* startformsub: %empty */ -#line 782 "perly.y" +#line 783 "perly.y" { (yyval.ival) = start_subparse(TRUE, 0); SAVEFREESV(PL_compcv); } break; case 115: /* subattrlist: COLONATTR THING */ -#line 801 "perly.y" +#line 802 "perly.y" { OP *attrlist = (ps[0].val.opval); if(attrlist && !PL_parser->sig_seen) @@ -916,49 +917,49 @@ case 2: /* @1: %empty */ break; case 116: /* subattrlist: COLONATTR */ -#line 808 "perly.y" +#line 809 "perly.y" { (yyval.opval) = NULL; } break; case 117: /* myattrlist: COLONATTR THING */ -#line 813 "perly.y" +#line 814 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 118: /* myattrlist: COLONATTR */ -#line 815 "perly.y" +#line 816 "perly.y" { (yyval.opval) = NULL; } break; case 119: /* sigvar: %empty */ -#line 826 "perly.y" +#line 827 "perly.y" { parser->in_my = 0; (yyval.ival) = 0; } break; case 120: /* sigvar: PRIVATEREF */ -#line 828 "perly.y" +#line 829 "perly.y" { parser->in_my = 0; (yyval.ival) = (ps[0].val.opval)->op_targ; op_free((ps[0].val.opval)); } break; case 121: /* sigslurpsigil: PERLY_SNAIL */ -#line 833 "perly.y" +#line 834 "perly.y" { (yyval.ival) = '@'; } break; case 122: /* sigslurpsigil: PERLY_PERCENT_SIGN */ -#line 835 "perly.y" +#line 836 "perly.y" { (yyval.ival) = '%'; } break; case 123: /* sigslurpelem: sigslurpsigil sigvar */ -#line 839 "perly.y" +#line 840 "perly.y" { subsignature_append_slurpy((ps[-1].val.ival), (ps[0].val.ival)); (yyval.opval) = NULL; @@ -967,7 +968,7 @@ case 2: /* @1: %empty */ break; case 124: /* sigslurpelem: sigslurpsigil sigvar ASSIGNOP */ -#line 844 "perly.y" +#line 845 "perly.y" { yyerror("A slurpy parameter may not have a default value"); } @@ -975,7 +976,7 @@ case 2: /* @1: %empty */ break; case 125: /* sigslurpelem: sigslurpsigil sigvar ASSIGNOP term */ -#line 848 "perly.y" +#line 849 "perly.y" { yyerror("A slurpy parameter may not have a default value"); } @@ -983,7 +984,7 @@ case 2: /* @1: %empty */ break; case 126: /* sigscalarelem: PERLY_DOLLAR sigvar */ -#line 856 "perly.y" +#line 857 "perly.y" { subsignature_append_positional((ps[0].val.ival), 0, NULL); (yyval.opval) = NULL; @@ -992,7 +993,7 @@ case 2: /* @1: %empty */ break; case 127: /* sigscalarelem: PERLY_DOLLAR sigvar ASSIGNOP optsigscalardefault */ -#line 861 "perly.y" +#line 862 "perly.y" { subsignature_append_positional((ps[-2].val.ival), (ps[-1].val.ival), (ps[0].val.opval)); (yyval.opval) = NULL; @@ -1001,31 +1002,31 @@ case 2: /* @1: %empty */ break; case 128: /* optsigscalardefault: %empty */ -#line 869 "perly.y" +#line 870 "perly.y" { (yyval.opval) = newOP(OP_NULL, 0); } break; case 130: /* sigelem: sigscalarelem */ -#line 876 "perly.y" +#line 877 "perly.y" { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } break; case 131: /* sigelem: sigslurpelem */ -#line 878 "perly.y" +#line 879 "perly.y" { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } break; case 139: /* subsignature: PERLY_PAREN_OPEN subsigguts PERLY_PAREN_CLOSE */ -#line 904 "perly.y" +#line 905 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; case 140: /* $@20: %empty */ -#line 907 "perly.y" +#line 908 "perly.y" { ENTER; subsignature_start(); @@ -1035,7 +1036,7 @@ case 2: /* @1: %empty */ break; case 141: /* subsigguts: $@20 optsiglist */ -#line 913 "perly.y" +#line 914 "perly.y" { if (!FEATURE_SIGNATURES_IS_ENABLED && !CvIsMETHOD(PL_compcv)) croak("Experimental " @@ -1063,13 +1064,13 @@ case 2: /* @1: %empty */ break; case 143: /* optsubbody: PERLY_SEMICOLON */ -#line 941 "perly.y" +#line 942 "perly.y" { (yyval.opval) = NULL; } break; case 144: /* subbody: remember PERLY_BRACE_OPEN stmtseq PERLY_BRACE_CLOSE */ -#line 947 "perly.y" +#line 948 "perly.y" { if (parser->copline > (line_t)(ps[-2].val.ival)) parser->copline = (line_t)(ps[-2].val.ival); @@ -1079,19 +1080,19 @@ case 2: /* @1: %empty */ break; case 146: /* optsigsubbody: PERLY_SEMICOLON */ -#line 959 "perly.y" +#line 960 "perly.y" { (yyval.opval) = NULL; } break; case 147: /* $@21: %empty */ -#line 964 "perly.y" +#line 965 "perly.y" { PL_parser->sig_seen = FALSE; } break; case 148: /* sigsubbody: remember optsubsignature PERLY_BRACE_OPEN $@21 stmtseq PERLY_BRACE_CLOSE */ -#line 966 "perly.y" +#line 967 "perly.y" { if (parser->copline > (line_t)(ps[-3].val.ival)) parser->copline = (line_t)(ps[-3].val.ival); @@ -1102,37 +1103,37 @@ case 2: /* @1: %empty */ break; case 149: /* expr: expr ANDOP expr */ -#line 977 "perly.y" +#line 978 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 150: /* expr: expr PLUGIN_LOGICAL_AND_LOW_OP expr */ -#line 979 "perly.y" +#line 980 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 151: /* expr: expr OROP expr */ -#line 981 "perly.y" +#line 982 "perly.y" { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 152: /* expr: expr PLUGIN_LOGICAL_OR_LOW_OP expr */ -#line 983 "perly.y" +#line 984 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 154: /* listexpr: listexpr PERLY_COMMA */ -#line 989 "perly.y" +#line 990 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; case 155: /* listexpr: listexpr PERLY_COMMA term */ -#line 991 "perly.y" +#line 992 "perly.y" { OP* term = (ps[0].val.opval); (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term); @@ -1141,7 +1142,7 @@ case 2: /* @1: %empty */ break; case 157: /* listop: LSTOP indirob listexpr */ -#line 1000 "perly.y" +#line 1001 "perly.y" { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED, op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) ); } @@ -1149,7 +1150,7 @@ case 2: /* @1: %empty */ break; case 158: /* listop: BLKLSTOP block listexpr */ -#line 1004 "perly.y" +#line 1005 "perly.y" { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED, op_prepend_elem(OP_LIST, newUNOP(OP_NULL, 0, op_scope((ps[-1].val.opval))), (ps[0].val.opval)) ); } @@ -1157,7 +1158,7 @@ case 2: /* @1: %empty */ break; case 159: /* listop: FUNC PERLY_PAREN_OPEN indirob expr PERLY_PAREN_CLOSE */ -#line 1008 "perly.y" +#line 1009 "perly.y" { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED, op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) ); } @@ -1165,7 +1166,7 @@ case 2: /* @1: %empty */ break; case 160: /* listop: term ARROW methodname PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ -#line 1012 "perly.y" +#line 1013 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)), @@ -1175,7 +1176,7 @@ case 2: /* @1: %empty */ break; case 161: /* listop: term ARROW methodname */ -#line 1018 "perly.y" +#line 1019 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, scalar((ps[-2].val.opval)), newMETHOP(OP_METHOD, 0, (ps[0].val.opval)))); @@ -1184,7 +1185,7 @@ case 2: /* @1: %empty */ break; case 162: /* listop: term ARROW PERLY_AMPERSAND subname PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ -#line 1023 "perly.y" +#line 1024 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, scalar((ps[-6].val.opval)), (ps[-1].val.opval)), @@ -1194,7 +1195,7 @@ case 2: /* @1: %empty */ break; case 163: /* listop: term ARROW PERLY_AMPERSAND subname */ -#line 1029 "perly.y" +#line 1030 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, scalar((ps[-3].val.opval)), @@ -1204,7 +1205,7 @@ case 2: /* @1: %empty */ break; case 164: /* listop: METHCALL0 indirob optlistexpr */ -#line 1035 "perly.y" +#line 1036 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), @@ -1214,7 +1215,7 @@ case 2: /* @1: %empty */ break; case 165: /* listop: METHCALL indirob PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ -#line 1041 "perly.y" +#line 1042 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)), @@ -1224,25 +1225,25 @@ case 2: /* @1: %empty */ break; case 166: /* listop: LSTOP optlistexpr */ -#line 1047 "perly.y" +#line 1048 "perly.y" { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; case 167: /* listop: FUNC PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ -#line 1049 "perly.y" +#line 1050 "perly.y" { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; case 168: /* listop: FUNC SUBLEXSTART optexpr SUBLEXEND */ -#line 1051 "perly.y" +#line 1052 "perly.y" { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; case 169: /* @22: %empty */ -#line 1053 "perly.y" +#line 1054 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, NULL, (ps[0].val.opval)); /* prevent double op_free() if the following fails to parse */ @@ -1252,7 +1253,7 @@ case 2: /* @1: %empty */ break; case 170: /* listop: LSTOPSUB startanonsub block @22 optlistexpr */ -#line 1059 "perly.y" +#line 1060 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval))); @@ -1261,20 +1262,20 @@ case 2: /* @1: %empty */ break; case 173: /* subscripted: gelem PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1074 "perly.y" +#line 1075 "perly.y" { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); } break; case 174: /* subscripted: scalar PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1076 "perly.y" +#line 1077 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval))); } break; case 175: /* subscripted: term ARROW PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1079 "perly.y" +#line 1080 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[-4].val.opval)),OP_RV2AV), scalar((ps[-1].val.opval))); @@ -1283,7 +1284,7 @@ case 2: /* @1: %empty */ break; case 176: /* subscripted: subscripted PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1084 "perly.y" +#line 1085 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[-3].val.opval)),OP_RV2AV), scalar((ps[-1].val.opval))); @@ -1292,14 +1293,14 @@ case 2: /* @1: %empty */ break; case 177: /* subscripted: scalar PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1089 "perly.y" +#line 1090 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval))); } break; case 178: /* subscripted: term ARROW PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1092 "perly.y" +#line 1093 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[-5].val.opval)),OP_RV2HV), jmaybe((ps[-2].val.opval))); } @@ -1307,7 +1308,7 @@ case 2: /* @1: %empty */ break; case 179: /* subscripted: subscripted PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1096 "perly.y" +#line 1097 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[-4].val.opval)),OP_RV2HV), jmaybe((ps[-2].val.opval))); } @@ -1315,7 +1316,7 @@ case 2: /* @1: %empty */ break; case 180: /* subscripted: term ARROW PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1100 "perly.y" +#line 1101 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[-3].val.opval)))); if (parser->expect == XBLOCK) @@ -1325,7 +1326,7 @@ case 2: /* @1: %empty */ break; case 181: /* subscripted: term ARROW PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1106 "perly.y" +#line 1107 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), newCVREF(0, scalar((ps[-4].val.opval))))); @@ -1336,7 +1337,7 @@ case 2: /* @1: %empty */ break; case 182: /* subscripted: subscripted PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1114 "perly.y" +#line 1115 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), newCVREF(0, scalar((ps[-3].val.opval))))); @@ -1347,7 +1348,7 @@ case 2: /* @1: %empty */ break; case 183: /* subscripted: subscripted PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1121 "perly.y" +#line 1122 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[-2].val.opval)))); if (parser->expect == XBLOCK) @@ -1357,55 +1358,55 @@ case 2: /* @1: %empty */ break; case 184: /* subscripted: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1127 "perly.y" +#line 1128 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); } break; case 185: /* subscripted: QWLIST PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1129 "perly.y" +#line 1130 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); } break; case 186: /* subscripted: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1131 "perly.y" +#line 1132 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); } break; case 187: /* termbinop: term PLUGIN_HIGH_OP term */ -#line 1136 "perly.y" +#line 1137 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 188: /* termbinop: term ASSIGNOP term */ -#line 1138 "perly.y" +#line 1139 "perly.y" { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); } break; case 189: /* termbinop: term PLUGIN_ASSIGN_OP term */ -#line 1140 "perly.y" +#line 1141 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 190: /* termbinop: term POWOP term */ -#line 1142 "perly.y" +#line 1143 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 191: /* termbinop: term PLUGIN_POW_OP term */ -#line 1144 "perly.y" +#line 1145 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 192: /* termbinop: term MULOP term */ -#line 1146 "perly.y" +#line 1147 "perly.y" { if ((ps[-1].val.ival) != OP_REPEAT) scalar((ps[-2].val.opval)); (yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval))); @@ -1414,219 +1415,219 @@ case 2: /* @1: %empty */ break; case 193: /* termbinop: term PLUGIN_MUL_OP term */ -#line 1151 "perly.y" +#line 1152 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 194: /* termbinop: term ADDOP term */ -#line 1153 "perly.y" +#line 1154 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 195: /* termbinop: term PLUGIN_ADD_OP term */ -#line 1155 "perly.y" +#line 1156 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 196: /* termbinop: term SHIFTOP term */ -#line 1157 "perly.y" +#line 1158 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 197: /* termbinop: termrelop */ -#line 1159 "perly.y" +#line 1160 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 198: /* termbinop: termeqop */ -#line 1161 "perly.y" +#line 1162 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 199: /* termbinop: term BITANDOP term */ -#line 1163 "perly.y" +#line 1164 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 200: /* termbinop: term BITOROP term */ -#line 1165 "perly.y" +#line 1166 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 201: /* termbinop: term DOTDOT term */ -#line 1167 "perly.y" +#line 1168 "perly.y" { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 202: /* termbinop: term ANDAND term */ -#line 1169 "perly.y" +#line 1170 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 203: /* termbinop: term PLUGIN_LOGICAL_AND_OP term */ -#line 1171 "perly.y" +#line 1172 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 204: /* termbinop: term OROR term */ -#line 1173 "perly.y" +#line 1174 "perly.y" { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 205: /* termbinop: term PLUGIN_LOGICAL_OR_OP term */ -#line 1175 "perly.y" +#line 1176 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 206: /* termbinop: term DORDOR term */ -#line 1177 "perly.y" +#line 1178 "perly.y" { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 207: /* termbinop: term MATCHOP term */ -#line 1179 "perly.y" +#line 1180 "perly.y" { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 208: /* termbinop: term PLUGIN_LOW_OP term */ -#line 1181 "perly.y" +#line 1182 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 209: /* termrelop: relopchain */ -#line 1185 "perly.y" +#line 1186 "perly.y" { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } break; case 210: /* termrelop: term NCRELOP term */ -#line 1187 "perly.y" +#line 1188 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 211: /* termrelop: termrelop NCRELOP */ -#line 1189 "perly.y" +#line 1190 "perly.y" { yyerror("syntax error"); YYERROR; } break; case 212: /* termrelop: termrelop CHRELOP */ -#line 1191 "perly.y" +#line 1192 "perly.y" { yyerror("syntax error"); YYERROR; } break; case 213: /* termrelop: term PLUGIN_REL_OP term */ -#line 1193 "perly.y" +#line 1194 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 214: /* relopchain: term CHRELOP term */ -#line 1197 "perly.y" +#line 1198 "perly.y" { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 215: /* relopchain: relopchain CHRELOP term */ -#line 1199 "perly.y" +#line 1200 "perly.y" { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 216: /* termeqop: eqopchain */ -#line 1203 "perly.y" +#line 1204 "perly.y" { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } break; case 217: /* termeqop: term NCEQOP term */ -#line 1205 "perly.y" +#line 1206 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 218: /* termeqop: termeqop NCEQOP */ -#line 1207 "perly.y" +#line 1208 "perly.y" { yyerror("syntax error"); YYERROR; } break; case 219: /* termeqop: termeqop CHEQOP */ -#line 1209 "perly.y" +#line 1210 "perly.y" { yyerror("syntax error"); YYERROR; } break; case 220: /* eqopchain: term CHEQOP term */ -#line 1213 "perly.y" +#line 1214 "perly.y" { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 221: /* eqopchain: eqopchain CHEQOP term */ -#line 1215 "perly.y" +#line 1216 "perly.y" { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 222: /* termunop: PERLY_MINUS term */ -#line 1220 "perly.y" +#line 1221 "perly.y" { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); } break; case 223: /* termunop: PERLY_PLUS term */ -#line 1222 "perly.y" +#line 1223 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 224: /* termunop: PERLY_EXCLAMATION_MARK term */ -#line 1225 "perly.y" +#line 1226 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } break; case 225: /* termunop: PERLY_TILDE term */ -#line 1227 "perly.y" +#line 1228 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); } break; case 226: /* termunop: term POSTINC */ -#line 1229 "perly.y" +#line 1230 "perly.y" { (yyval.opval) = newUNOP(OP_POSTINC, 0, op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); } break; case 227: /* termunop: term POSTDEC */ -#line 1232 "perly.y" +#line 1233 "perly.y" { (yyval.opval) = newUNOP(OP_POSTDEC, 0, op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));} break; case 228: /* termunop: term POSTJOIN */ -#line 1235 "perly.y" +#line 1236 "perly.y" { (yyval.opval) = op_convert_list(OP_JOIN, 0, op_append_elem( OP_LIST, @@ -1641,59 +1642,59 @@ case 2: /* @1: %empty */ break; case 229: /* termunop: PREINC term */ -#line 1246 "perly.y" +#line 1247 "perly.y" { (yyval.opval) = newUNOP(OP_PREINC, 0, op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); } break; case 230: /* termunop: PREDEC term */ -#line 1249 "perly.y" +#line 1250 "perly.y" { (yyval.opval) = newUNOP(OP_PREDEC, 0, op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); } break; case 231: /* anonymous: PERLY_BRACKET_OPEN optexpr PERLY_BRACKET_CLOSE */ -#line 1257 "perly.y" +#line 1258 "perly.y" { (yyval.opval) = newANONLIST((ps[-1].val.opval)); } break; case 232: /* anonymous: HASHBRACK optexpr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1259 "perly.y" +#line 1260 "perly.y" { (yyval.opval) = newANONHASH((ps[-2].val.opval)); } break; case 233: /* anonymous: KW_SUB_anon startanonsub proto subattrlist subbody */ -#line 1261 "perly.y" +#line 1262 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); } break; case 234: /* anonymous: KW_SUB_anon startanonsub proto subattrlist */ -#line 1264 "perly.y" +#line 1265 "perly.y" { yyerror("Illegal declaration of anonymous subroutine"); YYERROR; } break; case 235: /* anonymous: KW_SUB_anon_sig startanonsub subattrlist sigsubbody */ -#line 1266 "perly.y" +#line 1267 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); } break; case 236: /* anonymous: KW_SUB_anon_sig startanonsub subattrlist */ -#line 1269 "perly.y" +#line 1270 "perly.y" { yyerror("Illegal declaration of anonymous subroutine"); YYERROR; } break; case 237: /* anonymous: KW_METHOD_anon startanonmethod subattrlist sigsubbody */ -#line 1271 "perly.y" +#line 1272 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); @@ -1702,103 +1703,103 @@ case 2: /* @1: %empty */ break; case 238: /* anonymous: KW_METHOD_anon startanonmethod subattrlist */ -#line 1276 "perly.y" +#line 1277 "perly.y" { yyerror("Illegal declaration of anonymous subroutine"); YYERROR; } break; case 239: /* termdo: KW_DO term */ -#line 1281 "perly.y" +#line 1282 "perly.y" { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));} break; case 240: /* termdo: KW_DO block */ -#line 1283 "perly.y" +#line 1284 "perly.y" { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));} break; case 245: /* term: term PERLY_QUESTION_MARK term PERLY_COLON term */ -#line 1291 "perly.y" +#line 1292 "perly.y" { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 246: /* term: REFGEN term */ -#line 1293 "perly.y" +#line 1294 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); } break; case 247: /* term: myattrterm */ -#line 1295 "perly.y" +#line 1296 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 248: /* term: KW_LOCAL term */ -#line 1297 "perly.y" +#line 1298 "perly.y" { (yyval.opval) = localize((ps[0].val.opval),0); } break; case 249: /* term: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1299 "perly.y" +#line 1300 "perly.y" { (yyval.opval) = sawparens((ps[-1].val.opval)); } break; case 250: /* term: QWLIST */ -#line 1301 "perly.y" +#line 1302 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 251: /* term: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1303 "perly.y" +#line 1304 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); } break; case 252: /* term: scalar */ -#line 1305 "perly.y" +#line 1306 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 253: /* term: star */ -#line 1307 "perly.y" +#line 1308 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 254: /* term: hsh */ -#line 1309 "perly.y" +#line 1310 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 255: /* term: ary */ -#line 1311 "perly.y" +#line 1312 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 256: /* term: arylen */ -#line 1313 "perly.y" +#line 1314 "perly.y" { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));} break; case 257: /* term: subscripted */ -#line 1315 "perly.y" +#line 1316 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 258: /* term: sliceme PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1317 "perly.y" +#line 1318 "perly.y" { (yyval.opval) = op_prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, @@ -1812,7 +1813,7 @@ case 2: /* @1: %empty */ break; case 259: /* term: kvslice PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1327 "perly.y" +#line 1328 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVASLICE, 0, @@ -1826,7 +1827,7 @@ case 2: /* @1: %empty */ break; case 260: /* term: sliceme PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1337 "perly.y" +#line 1338 "perly.y" { (yyval.opval) = op_prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -1840,7 +1841,7 @@ case 2: /* @1: %empty */ break; case 261: /* term: kvslice PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1347 "perly.y" +#line 1348 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVHSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVHSLICE, 0, @@ -1854,26 +1855,26 @@ case 2: /* @1: %empty */ break; case 262: /* term: THING */ -#line 1357 "perly.y" +#line 1358 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 263: /* term: amper */ -#line 1359 "perly.y" +#line 1360 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); } break; case 264: /* term: amper PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1361 "perly.y" +#line 1362 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval))); } break; case 265: /* term: amper PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1364 "perly.y" +#line 1365 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval)))); @@ -1882,7 +1883,7 @@ case 2: /* @1: %empty */ break; case 266: /* term: NOAMP subname optlistexpr */ -#line 1369 "perly.y" +#line 1370 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); } @@ -1890,130 +1891,130 @@ case 2: /* @1: %empty */ break; case 267: /* term: term ARROW PERLY_DOLLAR PERLY_STAR */ -#line 1373 "perly.y" +#line 1374 "perly.y" { (yyval.opval) = newSVREF((ps[-3].val.opval)); } break; case 268: /* term: term ARROW PERLY_SNAIL PERLY_STAR */ -#line 1375 "perly.y" +#line 1376 "perly.y" { (yyval.opval) = newAVREF((ps[-3].val.opval)); } break; case 269: /* term: term ARROW PERLY_PERCENT_SIGN PERLY_STAR */ -#line 1377 "perly.y" +#line 1378 "perly.y" { (yyval.opval) = newHVREF((ps[-3].val.opval)); } break; case 270: /* term: term ARROW PERLY_AMPERSAND PERLY_STAR */ -#line 1379 "perly.y" +#line 1380 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); } break; case 271: /* term: term ARROW PERLY_STAR PERLY_STAR */ -#line 1382 "perly.y" +#line 1383 "perly.y" { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); } break; case 272: /* term: LOOPEX */ -#line 1384 "perly.y" +#line 1385 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; } break; case 273: /* term: LOOPEX term */ -#line 1387 "perly.y" +#line 1388 "perly.y" { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); } break; case 274: /* term: NOTOP listexpr */ -#line 1389 "perly.y" +#line 1390 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } break; case 275: /* term: UNIOP */ -#line 1391 "perly.y" +#line 1392 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), 0); } break; case 276: /* term: UNIOP block */ -#line 1393 "perly.y" +#line 1394 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; case 277: /* term: UNIOP term */ -#line 1395 "perly.y" +#line 1396 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; case 278: /* term: KW_REQUIRE */ -#line 1397 "perly.y" +#line 1398 "perly.y" { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); } break; case 279: /* term: KW_REQUIRE term */ -#line 1399 "perly.y" +#line 1400 "perly.y" { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); } break; case 280: /* term: UNIOPSUB */ -#line 1401 "perly.y" +#line 1402 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } break; case 281: /* term: UNIOPSUB term */ -#line 1403 "perly.y" +#line 1404 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); } break; case 282: /* term: FUNC0 */ -#line 1406 "perly.y" +#line 1407 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), 0); } break; case 283: /* term: FUNC0 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1408 "perly.y" +#line 1409 "perly.y" { (yyval.opval) = newOP((ps[-2].val.ival), 0);} break; case 284: /* term: FUNC0OP */ -#line 1410 "perly.y" +#line 1411 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 285: /* term: FUNC0OP PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1412 "perly.y" +#line 1413 "perly.y" { (yyval.opval) = (ps[-2].val.opval); } break; case 286: /* term: FUNC0SUB */ -#line 1414 "perly.y" +#line 1415 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } break; case 287: /* term: FUNC1 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1416 "perly.y" +#line 1417 "perly.y" { (yyval.opval) = ((ps[-2].val.ival) == OP_NOT) ? newUNOP((ps[-2].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0))) : newOP((ps[-2].val.ival), OPf_SPECIAL); } @@ -2021,13 +2022,13 @@ case 2: /* @1: %empty */ break; case 288: /* term: FUNC1 PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1420 "perly.y" +#line 1421 "perly.y" { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; case 289: /* @23: %empty */ -#line 1422 "perly.y" +#line 1423 "perly.y" { if ( (ps[0].val.opval)->op_type != OP_TRANS && (ps[0].val.opval)->op_type != OP_TRANSR @@ -2042,67 +2043,67 @@ case 2: /* @1: %empty */ break; case 290: /* term: PMFUNC @23 SUBLEXSTART listexpr optrepl SUBLEXEND */ -#line 1433 "perly.y" +#line 1434 "perly.y" { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); } break; case 294: /* myattrterm: KW_MY myterm myattrlist */ -#line 1442 "perly.y" +#line 1443 "perly.y" { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); } break; case 295: /* myattrterm: KW_MY myterm */ -#line 1444 "perly.y" +#line 1445 "perly.y" { (yyval.opval) = localize((ps[0].val.opval),1); } break; case 296: /* myattrterm: KW_MY REFGEN myterm myattrlist */ -#line 1446 "perly.y" +#line 1447 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); } break; case 297: /* myattrterm: KW_MY REFGEN term */ -#line 1448 "perly.y" +#line 1449 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); } break; case 298: /* myterm: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1453 "perly.y" +#line 1454 "perly.y" { (yyval.opval) = sawparens((ps[-1].val.opval)); } break; case 299: /* myterm: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1455 "perly.y" +#line 1456 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); } break; case 300: /* myterm: scalar */ -#line 1458 "perly.y" +#line 1459 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 301: /* myterm: hsh */ -#line 1460 "perly.y" +#line 1461 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 302: /* myterm: ary */ -#line 1462 "perly.y" +#line 1463 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 303: /* fieldvar: scalar */ -#line 1467 "perly.y" +#line 1468 "perly.y" { (yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ]; op_free((ps[0].val.opval)); @@ -2111,7 +2112,7 @@ case 2: /* @1: %empty */ break; case 304: /* fieldvar: hsh */ -#line 1472 "perly.y" +#line 1473 "perly.y" { (yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ]; op_free((ps[0].val.opval)); @@ -2120,7 +2121,7 @@ case 2: /* @1: %empty */ break; case 305: /* fieldvar: ary */ -#line 1477 "perly.y" +#line 1478 "perly.y" { (yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ]; op_free((ps[0].val.opval)); @@ -2129,19 +2130,19 @@ case 2: /* @1: %empty */ break; case 306: /* optfieldattrlist: COLONATTR THING */ -#line 1485 "perly.y" +#line 1486 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 307: /* optfieldattrlist: COLONATTR */ -#line 1487 "perly.y" +#line 1488 "perly.y" { (yyval.opval) = NULL; } break; case 309: /* fielddecl: KW_FIELD fieldvar optfieldattrlist */ -#line 1493 "perly.y" +#line 1494 "perly.y" { parser->in_my = 0; if((ps[0].val.opval)) @@ -2152,7 +2153,7 @@ case 2: /* @1: %empty */ break; case 310: /* $@24: %empty */ -#line 1500 "perly.y" +#line 1501 "perly.y" { parser->in_my = 0; if((ps[-1].val.opval)) @@ -2164,7 +2165,7 @@ case 2: /* @1: %empty */ break; case 311: /* fielddecl: KW_FIELD fieldvar optfieldattrlist ASSIGNOP $@24 term */ -#line 1508 "perly.y" +#line 1509 "perly.y" { class_set_field_defop((PADNAME *)(ps[-4].val.pval), (ps[-2].val.ival), (ps[0].val.opval)); LEAVE; @@ -2174,25 +2175,25 @@ case 2: /* @1: %empty */ break; case 317: /* optrepl: PERLY_SLASH expr */ -#line 1528 "perly.y" +#line 1529 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 318: /* my_scalar: scalar */ -#line 1534 "perly.y" +#line 1535 "perly.y" { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); } break; case 319: /* list_of_scalars: list_of_scalars PERLY_COMMA */ -#line 1539 "perly.y" +#line 1540 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; case 320: /* list_of_scalars: list_of_scalars PERLY_COMMA scalar */ -#line 1541 "perly.y" +#line 1542 "perly.y" { (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), (ps[0].val.opval)); } @@ -2200,25 +2201,25 @@ case 2: /* @1: %empty */ break; case 322: /* my_list_of_scalars: list_of_scalars */ -#line 1548 "perly.y" +#line 1549 "perly.y" { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); } break; case 330: /* amper: PERLY_AMPERSAND indirob */ -#line 1565 "perly.y" +#line 1566 "perly.y" { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); } break; case 331: /* scalar: PERLY_DOLLAR indirob */ -#line 1569 "perly.y" +#line 1570 "perly.y" { (yyval.opval) = newSVREF((ps[0].val.opval)); } break; case 332: /* ary: PERLY_SNAIL indirob */ -#line 1573 "perly.y" +#line 1574 "perly.y" { (yyval.opval) = newAVREF((ps[0].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival); } @@ -2226,7 +2227,7 @@ case 2: /* @1: %empty */ break; case 333: /* hsh: PERLY_PERCENT_SIGN indirob */ -#line 1579 "perly.y" +#line 1580 "perly.y" { (yyval.opval) = newHVREF((ps[0].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival); } @@ -2234,61 +2235,61 @@ case 2: /* @1: %empty */ break; case 334: /* arylen: DOLSHARP indirob */ -#line 1585 "perly.y" +#line 1586 "perly.y" { (yyval.opval) = newAVREF((ps[0].val.opval)); } break; case 335: /* arylen: term ARROW DOLSHARP PERLY_STAR */ -#line 1587 "perly.y" +#line 1588 "perly.y" { (yyval.opval) = newAVREF((ps[-3].val.opval)); } break; case 336: /* star: PERLY_STAR indirob */ -#line 1591 "perly.y" +#line 1592 "perly.y" { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); } break; case 338: /* sliceme: term ARROW PERLY_SNAIL */ -#line 1596 "perly.y" +#line 1597 "perly.y" { (yyval.opval) = newAVREF((ps[-2].val.opval)); } break; case 340: /* kvslice: term ARROW PERLY_PERCENT_SIGN */ -#line 1601 "perly.y" +#line 1602 "perly.y" { (yyval.opval) = newHVREF((ps[-2].val.opval)); } break; case 342: /* gelem: term ARROW PERLY_STAR */ -#line 1606 "perly.y" +#line 1607 "perly.y" { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); } break; case 343: /* indirob: BAREWORD */ -#line 1611 "perly.y" +#line 1612 "perly.y" { (yyval.opval) = scalar((ps[0].val.opval)); } break; case 344: /* indirob: scalar */ -#line 1613 "perly.y" +#line 1614 "perly.y" { (yyval.opval) = scalar((ps[0].val.opval)); } break; case 345: /* indirob: block */ -#line 1615 "perly.y" +#line 1616 "perly.y" { (yyval.opval) = op_scope((ps[0].val.opval)); } break; case 346: /* indirob: PRIVATEREF */ -#line 1618 "perly.y" +#line 1619 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; @@ -2300,6 +2301,6 @@ case 2: /* @1: %empty */ /* Generated from: - * c36bc8f06e0d028fe375ec5042a868f1249c42d01a2da5b7be104611f300ff06 perly.y + * 71250ac38c6eebb488e0a004d8fb76837034212b42fd84e5757a75bd179672fb perly.y * f13e9c08cea6302f0c1d1f467405bd0e0880d0ea92d0669901017a7f7e94ab28 regen_perly.pl * ex: set ro ft=c: */ diff --git a/perly.h b/perly.h index 330a5c5dce46..689ed99c527c 100644 --- a/perly.h +++ b/perly.h @@ -246,6 +246,6 @@ int yyparse (void); /* Generated from: - * c36bc8f06e0d028fe375ec5042a868f1249c42d01a2da5b7be104611f300ff06 perly.y + * 71250ac38c6eebb488e0a004d8fb76837034212b42fd84e5757a75bd179672fb perly.y * f13e9c08cea6302f0c1d1f467405bd0e0880d0ea92d0669901017a7f7e94ab28 regen_perly.pl * ex: set ro ft=c: */ diff --git a/perly.tab b/perly.tab index 2d2de6914fc3..cbc07abbb973 100644 --- a/perly.tab +++ b/perly.tab @@ -338,37 +338,37 @@ static const yytype_int16 yyrline[] = 208, 207, 221, 220, 231, 230, 244, 246, 251, 259, 263, 270, 275, 282, 288, 292, 294, 291, 301, 302, 312, 313, 322, 326, 330, 337, 347, 349, 362, 359, - 383, 378, 406, 405, 431, 442, 454, 453, 464, 470, - 476, 481, 483, 485, 492, 500, 502, 499, 519, 524, - 533, 540, 539, 554, 562, 569, 568, 583, 590, 589, - 605, 604, 624, 628, 632, 636, 642, 650, 668, 669, - 673, 677, 679, 681, 683, 685, 687, 689, 692, 698, - 699, 704, 715, 716, 721, 723, 728, 735, 736, 740, - 744, 748, 753, 757, 761, 762, 765, 771, 776, 781, - 787, 788, 793, 794, 799, 800, 807, 812, 814, 825, - 827, 832, 834, 838, 843, 847, 855, 860, 868, 870, - 875, 877, 885, 886, 887, 892, 893, 898, 899, 903, - 907, 907, 940, 941, 946, 958, 959, 964, 963, 976, - 978, 980, 982, 984, 988, 990, 995, 999, 1003, 1007, - 1011, 1017, 1022, 1028, 1034, 1040, 1046, 1048, 1050, 1053, - 1052, 1066, 1067, 1071, 1075, 1078, 1083, 1088, 1091, 1095, - 1099, 1105, 1113, 1120, 1126, 1128, 1130, 1135, 1137, 1139, - 1141, 1143, 1145, 1150, 1152, 1154, 1156, 1158, 1160, 1162, - 1164, 1166, 1168, 1170, 1172, 1174, 1176, 1178, 1180, 1184, - 1186, 1188, 1190, 1192, 1196, 1198, 1202, 1204, 1206, 1208, - 1212, 1214, 1219, 1221, 1224, 1226, 1228, 1231, 1234, 1245, - 1248, 1256, 1258, 1260, 1263, 1265, 1268, 1270, 1275, 1280, - 1282, 1286, 1287, 1288, 1289, 1290, 1292, 1294, 1296, 1298, - 1300, 1302, 1304, 1306, 1308, 1310, 1312, 1314, 1316, 1326, - 1336, 1346, 1356, 1358, 1360, 1363, 1368, 1372, 1374, 1376, - 1378, 1381, 1383, 1386, 1388, 1390, 1392, 1394, 1396, 1398, - 1400, 1402, 1405, 1407, 1409, 1411, 1413, 1415, 1419, 1422, - 1421, 1434, 1435, 1436, 1441, 1443, 1445, 1447, 1452, 1454, - 1457, 1459, 1461, 1466, 1471, 1476, 1484, 1486, 1488, 1492, - 1500, 1499, 1517, 1518, 1522, 1523, 1527, 1528, 1533, 1538, - 1540, 1544, 1547, 1551, 1552, 1553, 1556, 1557, 1560, 1561, - 1564, 1568, 1572, 1578, 1584, 1586, 1590, 1594, 1595, 1599, - 1600, 1604, 1605, 1610, 1612, 1614, 1617 + 383, 378, 406, 405, 432, 443, 455, 454, 465, 471, + 477, 482, 484, 486, 493, 501, 503, 500, 520, 525, + 534, 541, 540, 555, 563, 570, 569, 584, 591, 590, + 606, 605, 625, 629, 633, 637, 643, 651, 669, 670, + 674, 678, 680, 682, 684, 686, 688, 690, 693, 699, + 700, 705, 716, 717, 722, 724, 729, 736, 737, 741, + 745, 749, 754, 758, 762, 763, 766, 772, 777, 782, + 788, 789, 794, 795, 800, 801, 808, 813, 815, 826, + 828, 833, 835, 839, 844, 848, 856, 861, 869, 871, + 876, 878, 886, 887, 888, 893, 894, 899, 900, 904, + 908, 908, 941, 942, 947, 959, 960, 965, 964, 977, + 979, 981, 983, 985, 989, 991, 996, 1000, 1004, 1008, + 1012, 1018, 1023, 1029, 1035, 1041, 1047, 1049, 1051, 1054, + 1053, 1067, 1068, 1072, 1076, 1079, 1084, 1089, 1092, 1096, + 1100, 1106, 1114, 1121, 1127, 1129, 1131, 1136, 1138, 1140, + 1142, 1144, 1146, 1151, 1153, 1155, 1157, 1159, 1161, 1163, + 1165, 1167, 1169, 1171, 1173, 1175, 1177, 1179, 1181, 1185, + 1187, 1189, 1191, 1193, 1197, 1199, 1203, 1205, 1207, 1209, + 1213, 1215, 1220, 1222, 1225, 1227, 1229, 1232, 1235, 1246, + 1249, 1257, 1259, 1261, 1264, 1266, 1269, 1271, 1276, 1281, + 1283, 1287, 1288, 1289, 1290, 1291, 1293, 1295, 1297, 1299, + 1301, 1303, 1305, 1307, 1309, 1311, 1313, 1315, 1317, 1327, + 1337, 1347, 1357, 1359, 1361, 1364, 1369, 1373, 1375, 1377, + 1379, 1382, 1384, 1387, 1389, 1391, 1393, 1395, 1397, 1399, + 1401, 1403, 1406, 1408, 1410, 1412, 1414, 1416, 1420, 1423, + 1422, 1435, 1436, 1437, 1442, 1444, 1446, 1448, 1453, 1455, + 1458, 1460, 1462, 1467, 1472, 1477, 1485, 1487, 1489, 1493, + 1501, 1500, 1518, 1519, 1523, 1524, 1528, 1529, 1534, 1539, + 1541, 1545, 1548, 1552, 1553, 1554, 1557, 1558, 1561, 1562, + 1565, 1569, 1573, 1579, 1585, 1587, 1591, 1595, 1596, 1600, + 1601, 1605, 1606, 1611, 1613, 1615, 1618 }; #endif @@ -1607,6 +1607,6 @@ static const toketypes yy_type_tab[] = }; /* Generated from: - * c36bc8f06e0d028fe375ec5042a868f1249c42d01a2da5b7be104611f300ff06 perly.y + * 71250ac38c6eebb488e0a004d8fb76837034212b42fd84e5757a75bd179672fb perly.y * f13e9c08cea6302f0c1d1f467405bd0e0880d0ea92d0669901017a7f7e94ab28 regen_perly.pl * ex: set ro ft=c: */ diff --git a/perly.y b/perly.y index 5af726410676..fa610ea66ebe 100644 --- a/perly.y +++ b/perly.y @@ -427,6 +427,7 @@ barestmt: PLUGSTMT break; } $$ = NULL; + parser->parsed_sub = 1; } | KW_PACKAGE BAREWORD[version] BAREWORD[package] PERLY_SEMICOLON /* version and package appear in the reverse order to what may be diff --git a/t/class/EndsWithADJUST.pm b/t/class/EndsWithADJUST.pm new file mode 100644 index 000000000000..ca16646389ba --- /dev/null +++ b/t/class/EndsWithADJUST.pm @@ -0,0 +1,11 @@ +# An empty class file to test GH#23758; namely, that ending on an ADJUST +# phaser block does not break the `module_true` feature. + +use v5.38; # enables feature 'module_true' +use experimental 'class'; + +class EndsWithADJUST; + +ADJUST { } + +# nothing further diff --git a/t/class/phasers.t b/t/class/phasers.t index b6c6420fe5c8..a548ea091b7e 100644 --- a/t/class/phasers.t +++ b/t/class/phasers.t @@ -39,4 +39,19 @@ no warnings 'experimental::class'; is($self_in_ADJUST, $obj, '$self is set correctly inside ADJUST blocks'); } +# Ending a module file on an `ADJUST` phaser block does not upset +# `feature 'module_true'` +# [GH#23758] +{ + my $ok = eval { + local @INC = @INC; + unshift @INC, "class"; + require EndsWithADJUST; + 1; + }; + my $e = $@; + ok($ok, 'require EndsWithADJUST does not fail') or + diag("Error was: $e"); +} + done_testing;