In the Laravel PHP framework, some classes[1] use function names that are also type keywords (e.g. public function string(...)). On these files, the parser errors, producing: Expected symbol "identifier" (current token: "string" ...) This causes other features of KDevelop to stop working, including use declarations which use the class, API autocompletion and so on. ----- [1] https://github.com/laravel/framework/blob/0200dc58ca805e86a366a5aaaa779870856b16f8/src/Illuminate/Database/Schema/Blueprint.php#L586
Git commit 8c5e258640e8c70889ba1b3f796d3143240a7cda by Heinz Wiesinger. Committed on 13/06/2018 at 19:10. Pushed by wiesinger into branch 'master'. Fix using reserved type names in identifiers. Summary: Remove special tokens for base type names (PHP itself doesn't have them either in their AST). Unfortunately, keeping them, while cleaner, is also a lot more complicated and would leave us with double the amount of FIRST/FIRST conflicts in the grammar. (Mostly when NamespacedIdentifiers would conflict with base types in typehints. Think 'String\Stringhandler $foo' vs 'string $bar'. Removing the tokens essentially immediately resolves the bug, with the remaining work just being error handling and a bit of cleanup. Related: bug 392759 FIXED-IN: 5.3.0 Reviewers: mwolff Reviewed By: mwolff Subscribers: mwolff, kdevelop-devel Tags: #kdevelop Differential Revision: https://phabricator.kde.org/D13313 M +0 -5 completion/context.cpp M +64 -2 duchain/builders/declarationbuilder.cpp M +3 -0 duchain/builders/declarationbuilder.h M +4 -4 duchain/builders/usebuilder.cpp M +5 -4 duchain/expressionvisitor.cpp M +71 -32 duchain/helper.cpp M +3 -0 duchain/helper.h M +193 -1 duchain/tests/duchain.cpp M +6 -0 duchain/tests/duchain.h M +7 -19 parser/php.g M +0 -10 parser/phplexer.cpp M +1 -1 parser/test/lexertest.cpp https://commits.kde.org/kdev-php/8c5e258640e8c70889ba1b3f796d3143240a7cda