This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
toke.c: 'No such class %s' cleanup.
authorBrian Fraser <fraserbn@gmail.com>
Fri, 23 Mar 2012 00:58:14 +0000 (17:58 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Fri, 23 Mar 2012 03:23:54 +0000 (20:23 -0700)
t/uni/parser.t
toke.c

index f142edb..a3e3477 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
     require './test.pl';
 }
 
     require './test.pl';
 }
 
-plan (tests => 38);
+plan (tests => 41);
 
 use utf8;
 use open qw( :utf8 :std );
 
 use utf8;
 use open qw( :utf8 :std );
@@ -108,3 +108,12 @@ is ${"main::\345\225\217"}, undef, "..and using the encoded form doesn't";
     is $@, 'Unrecognized character \x{1f42a}; marked by <-- HERE after  my $ニ <-- HERE near column 8 at (eval 11) line 1.
 ', "'Unrecognized character' croak is UTF-8 clean";
 }
     is $@, 'Unrecognized character \x{1f42a}; marked by <-- HERE after  my $ニ <-- HERE near column 8 at (eval 11) line 1.
 ', "'Unrecognized character' croak is UTF-8 clean";
 }
+
+{
+    use feature 'state';
+    for ( qw( my state our ) ) {
+        local $@;
+        eval "$_ Foo $x = 1;";
+        like $@, qr/No such class Foo/u, "'No such class' warning for $_ is UTF-8 clean";
+    }
+}
\ No newline at end of file
diff --git a/toke.c b/toke.c
index 6a7e1ef..2fb0a56 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -7675,7 +7675,7 @@ Perl_yylex(pTHX)
                    char tmpbuf[1024];
                    PL_bufptr = s;
                    my_snprintf(tmpbuf, sizeof(tmpbuf), "No such class %.1000s", PL_tokenbuf);
                    char tmpbuf[1024];
                    PL_bufptr = s;
                    my_snprintf(tmpbuf, sizeof(tmpbuf), "No such class %.1000s", PL_tokenbuf);
-                   yyerror(tmpbuf);
+                   yyerror_pv(tmpbuf, UTF ? SVf_UTF8 : 0);
                }
 #ifdef PERL_MAD
                if (PL_madskills) {     /* just add type to declarator token */
                }
 #ifdef PERL_MAD
                if (PL_madskills) {     /* just add type to declarator token */