summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Fraser <fraserbn@gmail.com>2011-08-06 08:16:59 +0100
committerFather Chrysostomos <sprout@cpan.org>2012-03-22 20:23:54 -0700
commit02571fe88c6515651a3a02e3a3903a559e55be7a (patch)
tree4bddff7f9f9193f28e6f8a8602234f8cd3cc2c6f
parentb9e186cd7765a6bc8b028fb122664ed6e4c17f70 (diff)
downloadperl-02571fe88c6515651a3a02e3a3903a559e55be7a.tar.gz
toke.c: 'Operator or semicolon missing before %c%s' cleanup.
-rw-r--r--t/lib/warnings/toke20
-rw-r--r--toke.c6
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);