This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
toke.c: "Bad name after %s%s" cleanup.
authorBrian Fraser <fraserbn@gmail.com>
Sat, 20 Aug 2011 07:33:57 +0000 (08:33 +0100)
committerFather Chrysostomos <sprout@cpan.org>
Sun, 25 Mar 2012 20:43:58 +0000 (13:43 -0700)
t/uni/parser.t
toke.c

index 256864c..63c2deb 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
     require './test.pl';
 }
 
-plan (tests => 45);
+plan (tests => 47);
 
 use utf8;
 use open qw( :utf8 :std );
@@ -138,3 +138,9 @@ is ${"main::\345\225\217"}, undef, "..and using the encoded form doesn't";
     eval qq!print \x{30cb}, "comma""!;
     like $@, qr/No comma allowed after filehandle/, "No comma allowed after filehandle triggers correctly for UTF-8 filehandles.";
 }
+
+# tests for "Bad name"
+eval q{ Foo::$bar };
+like( $@, qr/Bad name after Foo::/, 'Bad name after Foo::' );
+eval q{ Foo''bar };
+like( $@, qr/Bad name after Foo'/, 'Bad name after Foo\'' );
diff --git a/toke.c b/toke.c
index e43bc74..4dbf00d 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -6659,7 +6659,9 @@ Perl_yylex(pTHX)
                    s = scan_word(s, PL_tokenbuf + len, sizeof PL_tokenbuf - len,
                                  TRUE, &morelen);
                    if (!morelen)
-                       Perl_croak(aTHX_ "Bad name after %s%s", PL_tokenbuf,
+                       Perl_croak(aTHX_ "Bad name after %"SVf"%s",
+                                        SVfARG(newSVpvn_flags(PL_tokenbuf, len,
+                                            (UTF ? SVf_UTF8 : 0) | SVs_TEMP )),
                                *s == '\'' ? "'" : "::");
                    len += morelen;
                    pkgname = 1;