From b9e186cd7765a6bc8b028fb122664ed6e4c17f70 Mon Sep 17 00:00:00 2001 From: Brian Fraser Date: Thu, 22 Mar 2012 17:29:16 -0700 Subject: toke.c: 'Scalar value %s better written as $%s' cleanup. --- t/lib/warnings/toke | 26 ++++++++++++++++++++++++++ toke.c | 10 ++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/t/lib/warnings/toke b/t/lib/warnings/toke index 2214005260..5a4af815d3 100644 --- a/t/lib/warnings/toke +++ b/t/lib/warnings/toke @@ -268,6 +268,32 @@ Scalar value @a[3] better written as $a[3] at - line 3. Scalar value @a{3} better written as $a{3} at - line 4. ######## # toke.c +use utf8; +use open qw( :utf8 :std ); +use warnings 'syntax' ; +@à[3] = 2; +@à{3} = 2; +no warnings 'syntax' ; +@à[3] = 2; +@à{3} = 2; +EXPECT +Scalar value @à[3] better written as $à[3] at - line 5. +Scalar value @à{3} better written as $à{3} at - line 6. +######## +# toke.c +use utf8; +use open qw( :utf8 :std ); +use warnings 'syntax' ; +@ぁ[3] = 2; +@ぁ{3} = 2; +no warnings 'syntax' ; +@ぁ[3] = 2; +@ぁ{3} = 2; +EXPECT +Scalar value @ぁ[3] better written as $ぁ[3] at - line 5. +Scalar value @ぁ{3} better written as $ぁ{3} at - line 6. +######## +# toke.c use warnings 'syntax' ; $_ = "ab" ; s/(ab)/\1/e; diff --git a/toke.c b/toke.c index 426eb2ca23..9f6c32a897 100644 --- a/toke.c +++ b/toke.c @@ -6268,15 +6268,17 @@ Perl_yylex(pTHX) if (ckWARN(WARN_SYNTAX)) { const char *t = s + 1; while (*t && (isALNUM_lazy_if(t,UTF) || strchr(" \t$#+-'\"", *t))) - t++; + t += UTF ? UTF8SKIP(t) : 1; if (*t == '}' || *t == ']') { t++; PL_bufptr = PEEKSPACE(PL_bufptr); /* XXX can realloc */ /* diag_listed_as: Scalar value @%s[%s] better written as $%s[%s] */ Perl_warner(aTHX_ packWARN(WARN_SYNTAX), - "Scalar value %.*s better written as $%.*s", - (int)(t-PL_bufptr), PL_bufptr, - (int)(t-PL_bufptr-1), PL_bufptr+1); + "Scalar value %"SVf" better written as $%"SVf, + SVfARG(newSVpvn_flags(PL_bufptr, (STRLEN)(t-PL_bufptr), + SVs_TEMP | (UTF ? SVf_UTF8 : 0 ))), + SVfARG(newSVpvn_flags(PL_bufptr+1, (STRLEN)(t-PL_bufptr-1), + SVs_TEMP | (UTF ? SVf_UTF8 : 0 )))); } } } -- cgit v1.2.1