rationalise subroutine parsing rules
authorDavid Mitchell <davem@iabyn.com>
Thu, 22 Feb 2018 14:44:51 +0000 (14:44 +0000)
committerDavid Mitchell <davem@iabyn.com>
Fri, 2 Mar 2018 13:36:43 +0000 (13:36 +0000)
commit75230cc19006735d29105daf0c6dcaf41880f961
tree13ebdac2b64e5118f016e682adbf12e4c4ec7d4d
parent436ddf68a973edeede30e3cdf27a8063d7686eec
rationalise subroutine parsing rules

Now that the parser rules have been split into separate rules for subs
under 'use feature "signatures"' and not, refine the rules to reflect the
different regimes. In particular:

1) no longer include 'proto' in the signature variants: as it happens the
toker would never return a proto THING under signatures anyway, but
removing it from the grammar makes it clearer what's expected and not
expected.

2) Remove 'subsignature' from non-sig rules: what used to happen before
was that outside of 'use feature "signatures"', it might still try to
parse a signature, e.g.

    $ perl5279 -we 'sub f :lvalue ($$@) { $x = 1 }'
    Illegal character following sigil in a subroutine signature at -e line
    1, near "($"
    syntax error at -e line 1, near "$$@"

Now it's just a plain syntax error.
perly.act
perly.h
perly.tab
perly.y
t/op/signatures.t