summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Fraser <fraserbn@gmail.com>2012-03-22 18:03:11 -0700
committerFather Chrysostomos <sprout@cpan.org>2012-03-22 20:23:56 -0700
commit5c66c3dde829c299f412b72bab2df6ea0f8afe02 (patch)
tree8addcfba1535b8211933ca51ccacd3f48d433aec
parentd0fb66e4dd07da2a32d4da479eecdd70515e9f20 (diff)
downloadperl-5c66c3dde829c299f412b72bab2df6ea0f8afe02.tar.gz
toke.c: "Ambiguous use of %c{%s} resolved to %c%s" cleanup.
-rw-r--r--t/lib/warnings/toke22
-rw-r--r--toke.c8
2 files changed, 27 insertions, 3 deletions
diff --git a/t/lib/warnings/toke b/t/lib/warnings/toke
index ef833bd347..a6841d2d09 100644
--- a/t/lib/warnings/toke
+++ b/t/lib/warnings/toke
@@ -1096,3 +1096,25 @@ print "ok\n" if
$@ =~ /Can't find string terminator "\xab" anywhere before EOF/;
EXPECT
ok
+########
+# toke.c
+use utf8;
+use open qw( :utf8 :std );
+use warnings 'ambiguous' ;
+sub frèd {}
+$a = ${frèd} ;
+no warnings 'ambiguous' ;
+$a = ${frèd} ;
+EXPECT
+Ambiguous use of ${frèd} resolved to $frèd at - line 6.
+########
+# toke.c
+use utf8;
+use open qw( :utf8 :std );
+use warnings 'ambiguous' ;
+sub f렏 {}
+$a = ${f렏} ;
+no warnings 'ambiguous' ;
+$a = ${f렏} ;
+EXPECT
+Ambiguous use of ${f렏} resolved to $f렏 at - line 6.
diff --git a/toke.c b/toke.c
index 0e6bc4de73..e43bc744a8 100644
--- a/toke.c
+++ b/toke.c
@@ -8964,13 +8964,15 @@ S_scan_ident(pTHX_ register char *s, register const char *send, char *dest, STRL
if (PL_lex_state == LEX_NORMAL) {
if (ckWARN(WARN_AMBIGUOUS) &&
(keyword(dest, d - dest, 0)
- || get_cvn_flags(dest, d - dest, 0)))
+ || get_cvn_flags(dest, d - dest, UTF ? SVf_UTF8 : 0)))
{
+ SV *tmp = newSVpvn_flags( dest, d - dest,
+ SVs_TEMP | (UTF ? SVf_UTF8 : 0) );
if (funny == '#')
funny = '@';
Perl_warner(aTHX_ packWARN(WARN_AMBIGUOUS),
- "Ambiguous use of %c{%s} resolved to %c%s",
- funny, dest, funny, dest);
+ "Ambiguous use of %c{%"SVf"} resolved to %c%"SVf,
+ funny, tmp, funny, tmp);
}
}
}