Perl-Critic / PPI

54 stars 44 forks source link

Support lexical subroutine #210

Closed akiym closed 5 years ago

akiym commented 7 years ago

Add support for lexical subroutine from perl-5.26

my sub foo ($) {}

before:

PPI::Document
  PPI::Statement::Variable
    PPI::Token::Word    'my'
    PPI::Token::Whitespace      ' '
    PPI::Token::Word    'sub'
    PPI::Token::Whitespace      ' '
    PPI::Token::Word    'foo'
    PPI::Token::Whitespace      ' '
    PPI::Structure::List        ( ... ???
      PPI::Statement::Expression
        PPI::Token::Magic       '$)'
        PPI::Token::Whitespace          ' '
        PPI::Structure::Subscript       { ... }

after:

PPI::Document
  PPI::Statement::Sub
    PPI::Token::Word    'my'
    PPI::Token::Whitespace      ' '
    PPI::Token::Word    'sub'
    PPI::Token::Whitespace      ' '
    PPI::Token::Word    'foo'
    PPI::Token::Whitespace      ' '
    PPI::Token::Prototype       '($)'
    PPI::Token::Whitespace      ' '
    PPI::Structure::Block       { ... }

Now PPI::Statement::Sub have type method which return declared type ("my", "our", "state" or undef).

wchristian commented 5 years ago

Thanks for the patch. It is released to CPAN as https://metacpan.org/release/MITHALDU/PPI-1.240 now. :)