From 5c66c3dde829c299f412b72bab2df6ea0f8afe02 Mon Sep 17 00:00:00 2001 From: Brian Fraser Date: Thu, 22 Mar 2012 18:03:11 -0700 Subject: toke.c: "Ambiguous use of %c{%s} resolved to %c%s" cleanup. --- t/lib/warnings/toke | 22 ++++++++++++++++++++++ toke.c | 8 +++++--- 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); } } } -- cgit v1.2.1