AtomLinter / linter-phpmd

Atom linter plugin for php, using phpmd.
21 stars 4 forks source link

Crash/error if code contains anonymous classes #101

Closed letr0n closed 7 years ago

letr0n commented 7 years ago

Hi,

I'm using linter-phpmd version 1.5.2 and the following code causes a crash/error:

<?php

class Foo
{
    protected function bar()
    {
        return new class{};
    }

    public function baz()
    {
        $this->bar();
    }
}
Error: PHP Fatal error: Uncaught Error: Call to a member function addMethod() on null in /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php:1183 Stack trace:

#0 /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(954): PDepend\Source\Language\PHP\AbstractPHPParser->parseMethodDeclaration()

#1 /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(852): PDepend\Source\Language\PHP\AbstractPHPParser->parseMethodOrFieldDeclaration(256)

#2 /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(690): PDepend\Source\Language\PHP\AbstractPHPParser->parseTypeBody(Object(PDepend\Source\AST\ASTClass))

#3 /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(5670): PDepend\Source\Language\PHP\AbstractPHPParser->parseClassDeclaration()

#4 /Users/letron/.composer/vend in /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php on line 1183
Error: PHP Fatal error:  Uncaught Error: Call to a member function addMethod() on null in /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php:1183
Stack trace:
#0 /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(954): PDepend\Source\Language\PHP\AbstractPHPParser->parseMethodDeclaration()
#1 /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(852): PDepend\Source\Language\PHP\AbstractPHPParser->parseMethodOrFieldDeclaration(256)
#2 /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(690): PDepend\Source\Language\PHP\AbstractPHPParser->parseTypeBody(Object(PDepend\Source\AST\ASTClass))
#3 /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(5670): PDepend\Source\Language\PHP\AbstractPHPParser->parseClassDeclaration()
#4 /Users/letron/.composer/vend in /Users/letron/.composer/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php on line 1183
    at ChildProcess.<anonymous> (/Users/letron/.atom/packages/linter-phpmd/node_modules/sb-exec/lib/index.js:56:20)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:877:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
letr0n commented 7 years ago

Closing as the bug is in a third party lib and not in the linter-phpmd package.

pdepend/pdepend/issues/281

Arcanemagus commented 7 years ago

Just a note: PHPMD itself is a 3rd party program as far as this package is concerned, since this just executes it and parses the results đŸ˜‰.

Thanks for linking to the actual bug!