[perl #131679] Fix ‘our sub foo::bar’ message
authorFather Chrysostomos <sprout@cpan.org>
Sun, 2 Jul 2017 18:35:20 +0000 (11:35 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sun, 2 Jul 2017 19:34:48 +0000 (12:34 -0700)
It should say subroutine, not variable.

t/lib/croak/toke
toke.c

index 7aa15ef..2603224 100644 (file)
@@ -133,6 +133,12 @@ state sub;
 EXPECT
 Missing name in "state sub" at - line 2.
 ########
+# NAME our sub pack::foo
+our sub foo::bar;
+EXPECT
+No package name allowed for subroutine &foo::bar in "our" at - line 1, near "our sub foo::bar"
+Execution of - aborted due to compilation errors.
+########
 # NAME my sub pack::foo
 use feature 'lexical_subs', 'state';
 my sub foo::bar;
diff --git a/toke.c b/toke.c
index ace92e3..6aa5f26 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -8848,7 +8848,8 @@ S_pending_ident(pTHX)
         if (PL_in_my == KEY_our) {     /* "our" is merely analogous to "my" */
             if (has_colon)
                 yyerror_pv(Perl_form(aTHX_ "No package name allowed for "
-                                  "variable %s in \"our\"",
+                                  "%se %s in \"our\"",
+                                  *PL_tokenbuf=='&' ?"subroutin":"variabl",
                                   PL_tokenbuf), UTF ? SVf_UTF8 : 0);
             tmp = allocmy(PL_tokenbuf, tokenbuf_len, UTF ? SVf_UTF8 : 0);
         }