From 0f5d0394b2f5b3a7ac4dba1b324a4ccfb7799a4b Mon Sep 17 00:00:00 2001 From: "Adrian M. Enache" Date: Sat, 19 Apr 2003 04:41:07 +0300 Subject: [PATCH] buglet: sub a(;&) { } doesn't work Message-ID: <20030418224107.GA2751@ratsnest.hole> p4raw-id: //depot/perl@19367 --- t/comp/parser.t | 5 ++++- toke.c | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/t/comp/parser.t b/t/comp/parser.t index b50d8af..25025cc 100644 --- a/t/comp/parser.t +++ b/t/comp/parser.t @@ -9,7 +9,7 @@ BEGIN { } require "./test.pl"; -plan( tests => 37 ); +plan( tests => 38 ); eval '%@x=0;'; like( $@, qr/^Can't modify hash dereference in repeat \(x\)/, '%@x=0' ); @@ -89,6 +89,9 @@ ${a}{ ${a}[ @{b}{ ${a}{ } +eval q{ sub a(;; &) { } a { } }; +is($@, '', "';&' sub prototype confuses the lexer"); + # Bug #21575 # ensure that the second print statement works, by playing a bit # with the test output. diff --git a/toke.c b/toke.c index 23ae908..850480c 100644 --- a/toke.c +++ b/toke.c @@ -4086,6 +4086,8 @@ Perl_yylex(pTHX) TERM(FUNC0SUB); if (strEQ(proto, "$")) OPERATOR(UNIOPSUB); + while (*proto == ';') + proto++; if (*proto == '&' && *s == '{') { sv_setpv(PL_subname, PL_curstash ? "__ANON__" : "__ANON__::__ANON__"); -- 2.7.4