summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Fraser <fraserbn@gmail.com>2012-03-22 17:29:16 -0700
committerFather Chrysostomos <sprout@cpan.org>2012-03-22 20:23:54 -0700
commitb9e186cd7765a6bc8b028fb122664ed6e4c17f70 (patch)
tree9346effe54657216a4cce1136d1dae7425c773d0
parent08454bd8a4cf1faf0c407c322e5e8dff7c80478e (diff)
downloadperl-b9e186cd7765a6bc8b028fb122664ed6e4c17f70.tar.gz
toke.c: 'Scalar value %s better written as $%s' cleanup.
-rw-r--r--t/lib/warnings/toke26
-rw-r--r--toke.c10
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 ))));
}
}
}