felixfbecker / php-language-server

PHP Implementation of the VS Code Language Server Protocol 🆚↔🖥
ISC License
1.15k stars 185 forks source link

Language server crashes in vscode ( specific file ) #770

Open aymanrady opened 4 years ago

aymanrady commented 4 years ago

Language server crashes when parsing this file https://github.com/woocommerce/woocommerce-gateway-stripe/blob/4.3.0/includes/abstracts/abstract-wc-stripe-payment-gateway.php

Version: 5.4.6

Stack trace

[Error - 4:26:54 PM] Request textDocument/hover failed.
  Message: RuntimeException: A type is missing in an array expression in ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/phpdocumentor/type-resolver/src/TypeResolver.php:257
Stack trace:
#0 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/phpdocumentor/type-resolver/src/TypeResolver.php(195): phpDocumentor\Reflection\TypeResolver->parseTypes(Object(ArrayIterator), Object(phpDocumentor\Reflection\Types\Context), 2)
#1 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/phpdocumentor/type-resolver/src/TypeResolver.php(146): phpDocumentor\Reflection\TypeResolver->parseTypes(Object(ArrayIterator), Object(phpDocumentor\Reflection\Types\Context), 0)
#2 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php(52): phpDocumentor\Reflection\TypeResolver->resolve('array()', Object(phpDocumentor\Reflection\Types\Context))
#3 [internal function]: phpDocumentor\Reflection\DocBlock\Tags\Return_::create('array()', Object(phpDocumentor\Reflection\TypeResolver), Object(phpDocumentor\Reflection\DocBlock\DescriptionFactory), Object(phpDocumentor\Reflection\Types\Context))
#4 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php(201): call_user_func_array(Array, Array)
#5 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php(122): phpDocumentor\Reflection\DocBlock\StandardTagFactory->createTag('array()', 'return', Object(phpDocumentor\Reflection\Types\Context))
#6 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php(231): phpDocumentor\Reflection\DocBlock\StandardTagFactory->create('@return array()', Object(phpDocumentor\Reflection\Types\Context))
#7 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php(96): phpDocumentor\Reflection\DocBlockFactory->parseTagBlock('@since 3.1.0\n@v...', Object(phpDocumentor\Reflection\Types\Context))
#8 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/DefinitionResolver.php(166): phpDocumentor\Reflection\DocBlockFactory->create('/**\n\t * Generat...', Object(phpDocumentor\Reflection\Types\Context))
#9 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/DefinitionResolver.php(1127): LanguageServer\DefinitionResolver->getDocBlock(Object(Microsoft\PhpParser\Node\MethodDeclaration))
#10 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/DefinitionResolver.php(240): LanguageServer\DefinitionResolver->getTypeFromNode(Object(Microsoft\PhpParser\Node\MethodDeclaration))
#11 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/TreeAnalyzer.php(157): LanguageServer\DefinitionResolver->createDefinitionFromNode(Object(Microsoft\PhpParser\Node\MethodDeclaration), 'WC_Stripe_Payme...')
#12 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/TreeAnalyzer.php(124): LanguageServer\TreeAnalyzer->collectDefinitionsAndReferences(Object(Microsoft\PhpParser\Node\MethodDeclaration))
#13 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/TreeAnalyzer.php(136): LanguageServer\TreeAnalyzer->traverse(Object(Microsoft\PhpParser\Node\MethodDeclaration))
#14 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/TreeAnalyzer.php(140): LanguageServer\TreeAnalyzer->traverse(Object(Microsoft\PhpParser\Node\ClassMembersNode))
#15 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/TreeAnalyzer.php(136): LanguageServer\TreeAnalyzer->traverse(Object(Microsoft\PhpParser\Node\Statement\ClassDeclaration))
#16 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/TreeAnalyzer.php(58): LanguageServer\TreeAnalyzer->traverse(Object(Microsoft\PhpParser\Node\SourceFileNode))
#17 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/PhpDocument.php(147): LanguageServer\TreeAnalyzer->__construct(Object(Microsoft\PhpParser\Parser), '<?php\nif ( ! de...', Object(phpDocumentor\Reflection\DocBlockFactory), Object(LanguageServer\DefinitionResolver), 'file:///home/ay...')
#18 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/PhpDocument.php(105): LanguageServer\PhpDocument->updateContent('<?php\nif ( ! de...')
#19 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/PhpDocumentLoader.php(141): LanguageServer\PhpDocument->__construct('file:///home/ay...', '<?php\nif ( ! de...', Object(LanguageServer\Index\Index), Object(Microsoft\PhpParser\Parser), Object(phpDocumentor\Reflection\DocBlockFactory), Object(LanguageServer\DefinitionResolver))
#20 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/src/PhpDocumentLoader.php(120): LanguageServer\PhpDocumentLoader->create('file:///home/ay...', '<?php\nif ( ! de...')
#21 [internal function]: LanguageServer\PhpDocumentLoader->LanguageServer\{closure}()
#22 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/sabre/event/lib/coroutine.php(70): Generator->send('<?php\nif ( ! de...')
#23 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/sabre/event/lib/Promise.php(242): Sabre\Event\{closure}('<?php\nif ( ! de...')
#24 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/sabre/event/lib/Loop/Loop.php(261): Sabre\Event\Promise->Sabre\Event\{closure}()
#25 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/sabre/event/lib/Loop/Loop.php(215): Sabre\Event\Loop\Loop->runNextTicks()
#26 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/sabre/event/lib/Loop/Loop.php(194): Sabre\Event\Loop\Loop->tick(true)
#27 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/sabre/event/lib/Loop/functions.php(122): Sabre\Event\Loop\Loop->run()
#28 ~/.vscode/extensions/felixfbecker.php-intellisense-2.3.13/vendor/felixfbecker/language-server/bin/php-language-server.php(55): Sabre\Event\Loop\run()
#29 {main}
  Code: -32603
reinaldomendes commented 4 years ago

Same problem here, The problem occurs in doc like this.

   /**
     * @return array() 
     */