diff options
-rw-r--r-- | t/lib/warnings/op | 20 | ||||
-rw-r--r-- | toke.c | 10 |
2 files changed, 24 insertions, 6 deletions
diff --git a/t/lib/warnings/op b/t/lib/warnings/op index f2270dc01a..de74d2e360 100644 --- a/t/lib/warnings/op +++ b/t/lib/warnings/op @@ -857,7 +857,7 @@ use open qw( :utf8 :std ); use warnings; eval "sub fòò (\$\0) {}"; EXPECT -Illegal character in prototype for main::fòò : $\x{0} at (eval 1) line 1. +Illegal character in prototype for main::fòò : $\0 at (eval 1) line 1. ######## # op.c use utf8; @@ -865,7 +865,7 @@ use open qw( :utf8 :std ); use warnings; eval "sub foo (\0) {}"; EXPECT -Illegal character in prototype for main::foo : \x{0} at (eval 1) line 1. +Illegal character in prototype for main::foo : \0 at (eval 1) line 1. ######## # op.c use utf8; @@ -882,7 +882,21 @@ use open qw( :utf8 :std ); use warnings; BEGIN { eval "sub foo (\0) {}"; } EXPECT -Illegal character in prototype for main::foo : \x{0} at (eval 1) line 1. +Illegal character in prototype for main::foo : \0 at (eval 1) line 1. +######## +# op.c +use warnings; +eval "sub foo (\xAB) {}"; +EXPECT +Illegal character in prototype for main::foo : \x{ab} at (eval 1) line 1. +######## +# op.c +use utf8; +use open qw( :utf8 :std ); +use warnings; +BEGIN { eval "sub foo (\x{30cb}) {}"; } +EXPECT +Illegal character in prototype for main::foo : \x{30cb} at (eval 1) line 1. ######## # op.c use utf8; @@ -8231,9 +8231,13 @@ Perl_yylex(pTHX) "Illegal character %sin prototype for %"SVf" : %s", seen_underscore ? "after '_' " : "", SVfARG(PL_subname), - sv_uni_display(dsv, - newSVpvn_flags(d, tmp, SVs_TEMP | SvUTF8(PL_lex_stuff)), - tmp, UNI_DISPLAY_ISPRINT)); + SvUTF8(PL_lex_stuff) + ? sv_uni_display(dsv, + newSVpvn_flags(d, tmp, SVs_TEMP | SVf_UTF8), + tmp, + UNI_DISPLAY_ISPRINT) + : pv_pretty(dsv, d, tmp, 60, NULL, NULL, + PERL_PV_ESCAPE_NONASCII)); } SvCUR_set(PL_lex_stuff, tmp); have_proto = TRUE; |