From 22393538c56003804a2e6c760dc234116a5bd60c Mon Sep 17 00:00:00 2001 From: "Matthew Horsfall (alh)" Date: Mon, 22 Aug 2011 23:32:10 -0400 Subject: [PATCH] When parsing subs with user-defined prototypes, store information needed to throw warnings --- toke.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/toke.c b/toke.c index 7b5c465..c9206a5 100644 --- a/toke.c +++ b/toke.c @@ -285,6 +285,10 @@ static const char* const lex_state_names[] = { } #define UNI(f) UNI2(f,XTERM) #define UNIDOR(f) UNI2(f,XTERMORDORDOR) +#define UNIPROTO(f) { \ + PL_last_uni = PL_oldbufptr; \ + OPERATOR(f); \ + } #define UNIBRACK(f) { \ pl_yylval.ival = f; \ @@ -6863,12 +6867,12 @@ Perl_yylex(pTHX) *proto == '\\' && proto[1] && proto[2] == '\0' ) ) - OPERATOR(UNIOPSUB); + UNIPROTO(UNIOPSUB); if (*proto == '\\' && proto[1] == '[') { const char *p = proto + 2; while(*p && *p != ']') ++p; - if(*p == ']' && !p[1]) OPERATOR(UNIOPSUB); + if(*p == ']' && !p[1]) UNIPROTO(UNIOPSUB); } if (*proto == '&' && *s == '{') { if (PL_curstash) -- 2.7.4