From 02571fe88c6515651a3a02e3a3903a559e55be7a Mon Sep 17 00:00:00 2001 From: Brian Fraser Date: Sat, 6 Aug 2011 08:16:59 +0100 Subject: toke.c: 'Operator or semicolon missing before %c%s' cleanup. --- t/lib/warnings/toke | 20 ++++++++++++++++++++ toke.c | 6 ++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/t/lib/warnings/toke b/t/lib/warnings/toke index 5a4af815d3..4ce6ae4da3 100644 --- a/t/lib/warnings/toke +++ b/t/lib/warnings/toke @@ -736,6 +736,26 @@ Operator or semicolon missing before *foo at - line 10. Ambiguous use of * resolved as operator * at - line 10. ######## # toke.c +use utf8; +use open qw( :utf8 :std ); +$^W = 0 ; +*foo *foo ; +{ + no warnings 'ambiguous' ; + *foo *foo ; + use warnings 'ambiguous' ; + *foo *foo ; +} +*foo *foo ; +EXPECT +Operator or semicolon missing before *foo at - line 5. +Ambiguous use of * resolved as operator * at - line 5. +Operator or semicolon missing before *foo at - line 10. +Ambiguous use of * resolved as operator * at - line 10. +Operator or semicolon missing before *foo at - line 12. +Ambiguous use of * resolved as operator * at - line 12. +######## +# toke.c use warnings 'misc' ; my $a = "\m" ; no warnings 'misc' ; diff --git a/toke.c b/toke.c index 9f6c32a897..6a7e1efe45 100644 --- a/toke.c +++ b/toke.c @@ -7042,8 +7042,10 @@ Perl_yylex(pTHX) safe_bareword: if ((lastchar == '*' || lastchar == '%' || lastchar == '&')) { Perl_ck_warner_d(aTHX_ packWARN(WARN_AMBIGUOUS), - "Operator or semicolon missing before %c%s", - lastchar, PL_tokenbuf); + "Operator or semicolon missing before %c%"SVf, + lastchar, SVfARG(newSVpvn_flags(PL_tokenbuf, + strlen(PL_tokenbuf), + SVs_TEMP | (UTF ? SVf_UTF8 : 0)))); Perl_ck_warner_d(aTHX_ packWARN(WARN_AMBIGUOUS), "Ambiguous use of %c resolved as operator %c", lastchar, lastchar); -- cgit v1.2.1