From fbaa7b3cc536fce0e274743aaf2245a3fce3d5bc Mon Sep 17 00:00:00 2001 From: Jens Hausdorf Date: Sat, 28 Oct 2017 21:27:32 +0200 Subject: [PATCH 01/12] refactor: use ClassLike interface (#506) --- src/DefinitionResolver.php | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/DefinitionResolver.php b/src/DefinitionResolver.php index dd1040e..f6d82c5 100644 --- a/src/DefinitionResolver.php +++ b/src/DefinitionResolver.php @@ -182,9 +182,7 @@ class DefinitionResolver // Interfaces, classes, traits, namespaces, functions, and global const elements $def->isGlobal = ( - $node instanceof Node\Statement\InterfaceDeclaration || - $node instanceof Node\Statement\ClassDeclaration || - $node instanceof Node\Statement\TraitDeclaration || + $node instanceof PhpParser\ClassLike || ($node instanceof Node\Statement\NamespaceDefinition && $node->name !== null) || @@ -1101,9 +1099,7 @@ class DefinitionResolver // interface C { } A\B\C // trait C { } A\B\C if ( - $node instanceof Node\Statement\ClassDeclaration || - $node instanceof Node\Statement\InterfaceDeclaration || - $node instanceof Node\Statement\TraitDeclaration + $node instanceof PhpParser\ClassLike ) { return (string) $node->getNamespacedName(); } @@ -1134,9 +1130,7 @@ class DefinitionResolver // Class method: use ClassName->methodName() as name $class = $node->getFirstAncestor( Node\Expression\ObjectCreationExpression::class, - Node\Statement\ClassDeclaration::class, - Node\Statement\InterfaceDeclaration::class, - Node\Statement\TraitDeclaration::class + PhpParser\ClassLike::class ); if (!isset($class->name)) { // Ignore anonymous classes @@ -1160,9 +1154,7 @@ class DefinitionResolver ($classDeclaration = $node->getFirstAncestor( Node\Expression\ObjectCreationExpression::class, - Node\Statement\ClassDeclaration::class, - Node\Statement\InterfaceDeclaration::class, - Node\Statement\TraitDeclaration::class + PhpParser\ClassLike::class ) ) !== null && isset($classDeclaration->name)) { $name = $node->getName(); @@ -1190,9 +1182,7 @@ class DefinitionResolver // Class constant: use ClassName::CONSTANT_NAME as name $classDeclaration = $constDeclaration->getFirstAncestor( Node\Expression\ObjectCreationExpression::class, - Node\Statement\ClassDeclaration::class, - Node\Statement\InterfaceDeclaration::class, - Node\Statement\TraitDeclaration::class + PhpParser\ClassLike::class ); if (!isset($classDeclaration->name)) { From 95f49d3a706806b9a8d74da1e4f757683ce66ff4 Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Sat, 28 Oct 2017 13:18:41 -0700 Subject: [PATCH 02/12] ci: set BUILD_LEADER_ID see https://github.com/semantic-release/travis-deploy-once/issues/22 --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index 16dcb76..ac0aec5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,10 @@ php: services: - docker +env: + global: + - BUILD_LEADER_ID=1 + cache: directories: - $HOME/.composer/cache From b86d6c96c78f82b0340e2221e01c97450f29ba03 Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Sat, 28 Oct 2017 13:38:17 -0700 Subject: [PATCH 03/12] build: make release-docker.sh executable --- release-docker.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 release-docker.sh diff --git a/release-docker.sh b/release-docker.sh old mode 100644 new mode 100755 From 9e551a310b5e510989a1bd44777349e98fc132c4 Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Sat, 28 Oct 2017 13:59:02 -0700 Subject: [PATCH 04/12] build: use PHP for release-docker script --- package.json | 2 +- release-docker.php | 10 ++++++++++ release-docker.sh | 6 ------ 3 files changed, 11 insertions(+), 7 deletions(-) create mode 100755 release-docker.php delete mode 100755 release-docker.sh diff --git a/package.json b/package.json index d67062f..75f02e1 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "commitmsg": "validate-commit-msg", - "semantic-release": "semantic-release pre && ./release-docker.sh && semantic-release post" + "semantic-release": "semantic-release pre && php release-docker.php && semantic-release post" }, "devDependencies": { "cz-conventional-changelog": "^2.0.0", diff --git a/release-docker.php b/release-docker.php new file mode 100755 index 0000000..d442fe5 --- /dev/null +++ b/release-docker.php @@ -0,0 +1,10 @@ +version; + +system("docker login -e=$dockerEmail -u=$dockerEmail -p=$dockerPassword"); +system("docker build -t felixfbecker/php-language-server:$version ."); +system("docker push felixfbecker/php-language-server:$version"); diff --git a/release-docker.sh b/release-docker.sh deleted file mode 100755 index 35e89d9..0000000 --- a/release-docker.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -e - -docker build -t felixfbecker/php-language-server:${TRAVIS_TAG:1} . -docker login -e="$DOCKER_EMAIL" -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" -docker push felixfbecker/php-language-server:${TRAVIS_TAG:1} From 99d8a361db205ee1179d541314b7e0c81d4d06f5 Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Sat, 28 Oct 2017 14:24:36 -0700 Subject: [PATCH 05/12] build: fix typo in release-docker script --- release-docker.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release-docker.php b/release-docker.php index d442fe5..8cac2db 100755 --- a/release-docker.php +++ b/release-docker.php @@ -5,6 +5,6 @@ $dockerUsername = getenv('DOCKER_USERNAME'); $dockerPassword = getenv('DOCKER_PASSWORD'); $version = json_decode(file_get_contents(__DIR__ . '/package.json'))->version; -system("docker login -e=$dockerEmail -u=$dockerEmail -p=$dockerPassword"); +system("docker login -e=$dockerEmail -u=$dockerUsername -p=$dockerPassword"); system("docker build -t felixfbecker/php-language-server:$version ."); system("docker push felixfbecker/php-language-server:$version"); From c74076d84f4e865eb71208445231e5ab5c3e2e8f Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Sun, 29 Oct 2017 13:06:44 -0700 Subject: [PATCH 06/12] fix(cache): bump cache version (#508) the update of reflection-docblock means old caches are no longer valid. fixes #507 --- src/Indexer.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Indexer.php b/src/Indexer.php index 9f8749d..2618d43 100644 --- a/src/Indexer.php +++ b/src/Indexer.php @@ -16,9 +16,9 @@ use function Sabre\Event\coroutine; class Indexer { /** - * @var The prefix for every cache item + * @var int The prefix for every cache item */ - const CACHE_VERSION = 1; + const CACHE_VERSION = 2; /** * @var FilesFinder From 7ae6452d1aaf44e96bb683ea7192a54576ad6cce Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Sun, 29 Oct 2017 17:45:06 -0700 Subject: [PATCH 07/12] refactor(index): rename isGlobal to isMember (#511) isGlobal was confusing because a non-member can be considered global vs namespaced --- src/CompletionProvider.php | 6 +++--- src/Definition.php | 5 +++-- src/DefinitionResolver.php | 2 +- .../cases/WithReturnTypehints.php.expected.json | 10 +++++----- ...sClassMembersShouldNotBeSymbols.php.expected.json | 2 +- .../arrayValueShouldBeBoolean.php.expected.json | 4 ++-- .../cases/caseStatement1.php.expected.json | 2 +- .../cases/classDefinition1.php.expected.json | 6 +++--- .../cases/classProperty1.php.expected.json | 8 ++++---- tests/Validation/cases/constants.php.expected.json | 6 +++--- tests/Validation/cases/constants2.php.expected.json | 6 +++--- tests/Validation/cases/constants3.php.expected.json | 6 +++--- tests/Validation/cases/constants4.php.expected.json | 6 +++--- tests/Validation/cases/constants5.php.expected.json | 6 +++--- ...constantsInFunctionParamDefault.php.expected.json | 4 ++-- .../docBlocksOnNamespaceDefinition.php.expected.json | 2 +- tests/Validation/cases/exceptions1.php.expected.json | 2 +- .../Validation/cases/ifStatement1.php.expected.json | 2 +- .../cases/interfaceProperty.php.expected.json | 2 +- .../magicConstantsShouldBeGlobal.php.expected.json | 2 +- tests/Validation/cases/magicConsts.php.expected.json | 4 ++-- .../Validation/cases/memberAccess1.php.expected.json | 6 +++--- .../Validation/cases/memberAccess2.php.expected.json | 6 +++--- .../Validation/cases/memberAccess3.php.expected.json | 6 +++--- .../Validation/cases/memberAccess4.php.expected.json | 6 +++--- .../Validation/cases/memberAccess5.php.expected.json | 6 +++--- tests/Validation/cases/memberCall1.php.expected.json | 6 +++--- .../cases/methodReturnType.php.expected.json | 4 ++-- .../cases/multipleNamespaces.php.expected.json | 12 ++++++------ .../multiplePreceedingComments.php.expected.json | 4 ++-- tests/Validation/cases/nameToken.php.expected.json | 4 ++-- tests/Validation/cases/namespaces2.php.expected.json | 2 +- tests/Validation/cases/namespaces5.php.expected.json | 2 +- tests/Validation/cases/namespaces6.php.expected.json | 2 +- tests/Validation/cases/namespaces8.php.expected.json | 2 +- .../cases/objectCreation.php.expected.json | 6 +++--- .../cases/objectCreation2.php.expected.json | 8 ++++---- .../cases/objectCreation3.php.expected.json | 4 ++-- tests/Validation/cases/param1.php.expected.json | 4 ++-- tests/Validation/cases/parent1.php.expected.json | 10 +++++----- tests/Validation/cases/parent3.php.expected.json | 10 +++++----- .../Validation/cases/propertyName1.php.expected.json | 4 ++-- .../Validation/cases/propertyName2.php.expected.json | 4 ++-- tests/Validation/cases/returnType.php.expected.json | 4 ++-- .../cases/scopedPropertyAccess.php.expected.json | 6 +++--- .../cases/scopedPropertyAccess2.php.expected.json | 2 +- .../cases/scopedPropertyAccess3.php.expected.json | 4 ++-- .../cases/scopedPropertyAccess5.php.expected.json | 4 ++-- tests/Validation/cases/self1.php.expected.json | 10 +++++----- tests/Validation/cases/self2.php.expected.json | 10 +++++----- tests/Validation/cases/self3.php.expected.json | 10 +++++----- tests/Validation/cases/self4.php.expected.json | 6 +++--- tests/Validation/cases/self5.php.expected.json | 6 +++--- tests/Validation/cases/static1.php.expected.json | 10 +++++----- tests/Validation/cases/static2.php.expected.json | 10 +++++----- tests/Validation/cases/static3.php.expected.json | 10 +++++----- tests/Validation/cases/static4.php.expected.json | 6 +++--- .../cases/staticMethodReturnType.php.expected.json | 6 +++--- .../cases/stringVariable.php.expected.json | 6 +++--- ...QualifiedNameOutsideOfNamespace.php.expected.json | 2 +- .../verifyFqsenOnClassProperty.php.expected.json | 6 +++--- 61 files changed, 165 insertions(+), 164 deletions(-) diff --git a/src/CompletionProvider.php b/src/CompletionProvider.php index 2414ead..9a000e6 100644 --- a/src/CompletionProvider.php +++ b/src/CompletionProvider.php @@ -210,7 +210,7 @@ class CompletionProvider // Collect all definitions that match any of the prefixes foreach ($this->index->getDefinitions() as $fqn => $def) { foreach ($prefixes as $prefix) { - if (substr($fqn, 0, strlen($prefix)) === $prefix && !$def->isGlobal) { + if (substr($fqn, 0, strlen($prefix)) === $prefix && $def->isMember) { $list->items[] = CompletionItem::fromDefinition($def); } } @@ -243,7 +243,7 @@ class CompletionProvider // Collect all definitions that match any of the prefixes foreach ($this->index->getDefinitions() as $fqn => $def) { foreach ($prefixes as $prefix) { - if (substr(strtolower($fqn), 0, strlen($prefix)) === strtolower($prefix) && !$def->isGlobal) { + if (substr(strtolower($fqn), 0, strlen($prefix)) === strtolower($prefix) && $def->isMember) { $list->items[] = CompletionItem::fromDefinition($def); } } @@ -316,7 +316,7 @@ class CompletionProvider if ( // Exclude methods, properties etc. - $def->isGlobal + !$def->isMember && ( !$prefix || ( diff --git a/src/Definition.php b/src/Definition.php index 9a485c4..c27f871 100644 --- a/src/Definition.php +++ b/src/Definition.php @@ -39,12 +39,13 @@ class Definition public $extends; /** - * Only true for classes, interfaces, traits, functions and non-class constants + * False for classes, interfaces, traits, functions and non-class constants + * True for methods, properties and class constants * This is so methods and properties are not suggested in the global scope * * @var bool */ - public $isGlobal; + public $isMember; /** * True if this definition is affected by global namespace fallback (global function or global constant) diff --git a/src/DefinitionResolver.php b/src/DefinitionResolver.php index f6d82c5..93f961d 100644 --- a/src/DefinitionResolver.php +++ b/src/DefinitionResolver.php @@ -181,7 +181,7 @@ class DefinitionResolver ); // Interfaces, classes, traits, namespaces, functions, and global const elements - $def->isGlobal = ( + $def->isMember = !( $node instanceof PhpParser\ClassLike || ($node instanceof Node\Statement\NamespaceDefinition && $node->name !== null) || diff --git a/tests/Validation/cases/WithReturnTypehints.php.expected.json b/tests/Validation/cases/WithReturnTypehints.php.expected.json index 26b00e2..d11f271 100644 --- a/tests/Validation/cases/WithReturnTypehints.php.expected.json +++ b/tests/Validation/cases/WithReturnTypehints.php.expected.json @@ -20,7 +20,7 @@ "Fixtures\\Prophecy": { "fqn": "Fixtures\\Prophecy", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -41,7 +41,7 @@ "extends": [ "Fixtures\\Prophecy\\EmptyClass" ], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -60,7 +60,7 @@ "Fixtures\\Prophecy\\WithReturnTypehints->getSelf()": { "fqn": "Fixtures\\Prophecy\\WithReturnTypehints->getSelf()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -80,7 +80,7 @@ "Fixtures\\Prophecy\\WithReturnTypehints->getName()": { "fqn": "Fixtures\\Prophecy\\WithReturnTypehints->getName()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -100,7 +100,7 @@ "Fixtures\\Prophecy\\WithReturnTypehints->getParent()": { "fqn": "Fixtures\\Prophecy\\WithReturnTypehints->getParent()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/anonymousClassMembersShouldNotBeSymbols.php.expected.json b/tests/Validation/cases/anonymousClassMembersShouldNotBeSymbols.php.expected.json index b0625d7..51343f1 100644 --- a/tests/Validation/cases/anonymousClassMembersShouldNotBeSymbols.php.expected.json +++ b/tests/Validation/cases/anonymousClassMembersShouldNotBeSymbols.php.expected.json @@ -4,7 +4,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/arrayValueShouldBeBoolean.php.expected.json b/tests/Validation/cases/arrayValueShouldBeBoolean.php.expected.json index d58986d..107877e 100644 --- a/tests/Validation/cases/arrayValueShouldBeBoolean.php.expected.json +++ b/tests/Validation/cases/arrayValueShouldBeBoolean.php.expected.json @@ -4,7 +4,7 @@ "A": { "fqn": "A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -23,7 +23,7 @@ "A->foo": { "fqn": "A->foo", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/caseStatement1.php.expected.json b/tests/Validation/cases/caseStatement1.php.expected.json index 573dd17..9746749 100644 --- a/tests/Validation/cases/caseStatement1.php.expected.json +++ b/tests/Validation/cases/caseStatement1.php.expected.json @@ -11,7 +11,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/classDefinition1.php.expected.json b/tests/Validation/cases/classDefinition1.php.expected.json index 6c418b7..670b5de 100644 --- a/tests/Validation/cases/classDefinition1.php.expected.json +++ b/tests/Validation/cases/classDefinition1.php.expected.json @@ -11,7 +11,7 @@ "TestNamespace": { "fqn": "TestNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "TestNamespace\\A": { "fqn": "TestNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -49,7 +49,7 @@ "TestNamespace\\A->a": { "fqn": "TestNamespace\\A->a", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/classProperty1.php.expected.json b/tests/Validation/cases/classProperty1.php.expected.json index e00107e..921bf0b 100644 --- a/tests/Validation/cases/classProperty1.php.expected.json +++ b/tests/Validation/cases/classProperty1.php.expected.json @@ -11,7 +11,7 @@ "TestNamespace": { "fqn": "TestNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "TestNamespace\\TestClass": { "fqn": "TestNamespace\\TestClass", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -49,7 +49,7 @@ "TestNamespace\\TestClass->testProperty": { "fqn": "TestNamespace\\TestClass->testProperty", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -69,7 +69,7 @@ "TestNamespace\\TestClass->testMethod()": { "fqn": "TestNamespace\\TestClass->testMethod()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/constants.php.expected.json b/tests/Validation/cases/constants.php.expected.json index d629870..a76c059 100644 --- a/tests/Validation/cases/constants.php.expected.json +++ b/tests/Validation/cases/constants.php.expected.json @@ -11,7 +11,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -49,7 +49,7 @@ "MyNamespace\\A::suite()": { "fqn": "MyNamespace\\A::suite()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, diff --git a/tests/Validation/cases/constants2.php.expected.json b/tests/Validation/cases/constants2.php.expected.json index 66c678f..ae5a2ce 100644 --- a/tests/Validation/cases/constants2.php.expected.json +++ b/tests/Validation/cases/constants2.php.expected.json @@ -11,7 +11,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -49,7 +49,7 @@ "MyNamespace\\A::suite()": { "fqn": "MyNamespace\\A::suite()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, diff --git a/tests/Validation/cases/constants3.php.expected.json b/tests/Validation/cases/constants3.php.expected.json index 03f00ba..c6ad922 100644 --- a/tests/Validation/cases/constants3.php.expected.json +++ b/tests/Validation/cases/constants3.php.expected.json @@ -11,7 +11,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -49,7 +49,7 @@ "MyNamespace\\A::suite()": { "fqn": "MyNamespace\\A::suite()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, diff --git a/tests/Validation/cases/constants4.php.expected.json b/tests/Validation/cases/constants4.php.expected.json index 62ce430..bc46cf1 100644 --- a/tests/Validation/cases/constants4.php.expected.json +++ b/tests/Validation/cases/constants4.php.expected.json @@ -11,7 +11,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -49,7 +49,7 @@ "MyNamespace\\A->suite()": { "fqn": "MyNamespace\\A->suite()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/constants5.php.expected.json b/tests/Validation/cases/constants5.php.expected.json index bb441c8..6bd7b8e 100644 --- a/tests/Validation/cases/constants5.php.expected.json +++ b/tests/Validation/cases/constants5.php.expected.json @@ -8,7 +8,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -27,7 +27,7 @@ "MyNamespace\\Mbstring": { "fqn": "MyNamespace\\Mbstring", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -46,7 +46,7 @@ "MyNamespace\\Mbstring::MB_CASE_FOLD": { "fqn": "MyNamespace\\Mbstring::MB_CASE_FOLD", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/constantsInFunctionParamDefault.php.expected.json b/tests/Validation/cases/constantsInFunctionParamDefault.php.expected.json index 8f9a212..b49f5a9 100644 --- a/tests/Validation/cases/constantsInFunctionParamDefault.php.expected.json +++ b/tests/Validation/cases/constantsInFunctionParamDefault.php.expected.json @@ -8,7 +8,7 @@ "A": { "fqn": "A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -27,7 +27,7 @@ "A->b()": { "fqn": "A->b()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/docBlocksOnNamespaceDefinition.php.expected.json b/tests/Validation/cases/docBlocksOnNamespaceDefinition.php.expected.json index 73f6bee..dd1737a 100644 --- a/tests/Validation/cases/docBlocksOnNamespaceDefinition.php.expected.json +++ b/tests/Validation/cases/docBlocksOnNamespaceDefinition.php.expected.json @@ -4,7 +4,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/exceptions1.php.expected.json b/tests/Validation/cases/exceptions1.php.expected.json index a4a71d1..c1ee1bd 100644 --- a/tests/Validation/cases/exceptions1.php.expected.json +++ b/tests/Validation/cases/exceptions1.php.expected.json @@ -8,7 +8,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/ifStatement1.php.expected.json b/tests/Validation/cases/ifStatement1.php.expected.json index 18efe9f..98e6572 100644 --- a/tests/Validation/cases/ifStatement1.php.expected.json +++ b/tests/Validation/cases/ifStatement1.php.expected.json @@ -11,7 +11,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/interfaceProperty.php.expected.json b/tests/Validation/cases/interfaceProperty.php.expected.json index 178834d..10c49f0 100644 --- a/tests/Validation/cases/interfaceProperty.php.expected.json +++ b/tests/Validation/cases/interfaceProperty.php.expected.json @@ -4,7 +4,7 @@ "A": { "fqn": "A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/magicConstantsShouldBeGlobal.php.expected.json b/tests/Validation/cases/magicConstantsShouldBeGlobal.php.expected.json index f62d214..a9c2162 100644 --- a/tests/Validation/cases/magicConstantsShouldBeGlobal.php.expected.json +++ b/tests/Validation/cases/magicConstantsShouldBeGlobal.php.expected.json @@ -11,7 +11,7 @@ "B": { "fqn": "B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/magicConsts.php.expected.json b/tests/Validation/cases/magicConsts.php.expected.json index a37791b..6f863b9 100644 --- a/tests/Validation/cases/magicConsts.php.expected.json +++ b/tests/Validation/cases/magicConsts.php.expected.json @@ -8,7 +8,7 @@ "A": { "fqn": "A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -27,7 +27,7 @@ "A::$deprecationsTriggered": { "fqn": "A::$deprecationsTriggered", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, diff --git a/tests/Validation/cases/memberAccess1.php.expected.json b/tests/Validation/cases/memberAccess1.php.expected.json index 7f9630a..c039e5e 100644 --- a/tests/Validation/cases/memberAccess1.php.expected.json +++ b/tests/Validation/cases/memberAccess1.php.expected.json @@ -11,7 +11,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -49,7 +49,7 @@ "MyNamespace\\A::a()": { "fqn": "MyNamespace\\A::a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, diff --git a/tests/Validation/cases/memberAccess2.php.expected.json b/tests/Validation/cases/memberAccess2.php.expected.json index 7b3ce1d..50902a1 100644 --- a/tests/Validation/cases/memberAccess2.php.expected.json +++ b/tests/Validation/cases/memberAccess2.php.expected.json @@ -11,7 +11,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -49,7 +49,7 @@ "MyNamespace\\A::a()": { "fqn": "MyNamespace\\A::a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, diff --git a/tests/Validation/cases/memberAccess3.php.expected.json b/tests/Validation/cases/memberAccess3.php.expected.json index 520dae8..d91b27d 100644 --- a/tests/Validation/cases/memberAccess3.php.expected.json +++ b/tests/Validation/cases/memberAccess3.php.expected.json @@ -26,7 +26,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -45,7 +45,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -64,7 +64,7 @@ "MyNamespace\\A::getInitializer()": { "fqn": "MyNamespace\\A::getInitializer()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, diff --git a/tests/Validation/cases/memberAccess4.php.expected.json b/tests/Validation/cases/memberAccess4.php.expected.json index 1d51b85..0b7e1bf 100644 --- a/tests/Validation/cases/memberAccess4.php.expected.json +++ b/tests/Validation/cases/memberAccess4.php.expected.json @@ -17,7 +17,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -36,7 +36,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -55,7 +55,7 @@ "MyNamespace\\A->testRequest()": { "fqn": "MyNamespace\\A->testRequest()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/memberAccess5.php.expected.json b/tests/Validation/cases/memberAccess5.php.expected.json index 57aca0a..050cf3b 100644 --- a/tests/Validation/cases/memberAccess5.php.expected.json +++ b/tests/Validation/cases/memberAccess5.php.expected.json @@ -8,7 +8,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -27,7 +27,7 @@ "MyNamespace\\ParseErrorsTest": { "fqn": "MyNamespace\\ParseErrorsTest", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -46,7 +46,7 @@ "MyNamespace\\ParseErrorsTest->setUp()": { "fqn": "MyNamespace\\ParseErrorsTest->setUp()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/memberCall1.php.expected.json b/tests/Validation/cases/memberCall1.php.expected.json index 416a705..d02d7e3 100644 --- a/tests/Validation/cases/memberCall1.php.expected.json +++ b/tests/Validation/cases/memberCall1.php.expected.json @@ -14,7 +14,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -33,7 +33,7 @@ "MyNamespace\\ParseErrorsTest": { "fqn": "MyNamespace\\ParseErrorsTest", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -52,7 +52,7 @@ "MyNamespace\\ParseErrorsTest->setAccount()": { "fqn": "MyNamespace\\ParseErrorsTest->setAccount()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/methodReturnType.php.expected.json b/tests/Validation/cases/methodReturnType.php.expected.json index 54d79d6..2c89994 100644 --- a/tests/Validation/cases/methodReturnType.php.expected.json +++ b/tests/Validation/cases/methodReturnType.php.expected.json @@ -8,7 +8,7 @@ "FooClass": { "fqn": "FooClass", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -27,7 +27,7 @@ "FooClass->foo()": { "fqn": "FooClass->foo()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/multipleNamespaces.php.expected.json b/tests/Validation/cases/multipleNamespaces.php.expected.json index 30fe596..fa51f2d 100644 --- a/tests/Validation/cases/multipleNamespaces.php.expected.json +++ b/tests/Validation/cases/multipleNamespaces.php.expected.json @@ -17,7 +17,7 @@ "MyNamespace1": { "fqn": "MyNamespace1", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -36,7 +36,7 @@ "MyNamespace1\\B": { "fqn": "MyNamespace1\\B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -55,7 +55,7 @@ "MyNamespace1\\B->b()": { "fqn": "MyNamespace1\\B->b()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -75,7 +75,7 @@ "MyNamespace2": { "fqn": "MyNamespace2", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -96,7 +96,7 @@ "extends": [ "MyNamespace2\\MyNamespace1\\B" ], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -115,7 +115,7 @@ "MyNamespace2\\A->a()": { "fqn": "MyNamespace2\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/multiplePreceedingComments.php.expected.json b/tests/Validation/cases/multiplePreceedingComments.php.expected.json index 5ca3dd7..96cbb4a 100644 --- a/tests/Validation/cases/multiplePreceedingComments.php.expected.json +++ b/tests/Validation/cases/multiplePreceedingComments.php.expected.json @@ -4,7 +4,7 @@ "Foo": { "fqn": "Foo", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -23,7 +23,7 @@ "Foo->fn()": { "fqn": "Foo->fn()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/nameToken.php.expected.json b/tests/Validation/cases/nameToken.php.expected.json index 0ecd53f..c06217b 100644 --- a/tests/Validation/cases/nameToken.php.expected.json +++ b/tests/Validation/cases/nameToken.php.expected.json @@ -4,7 +4,7 @@ "A": { "fqn": "A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -23,7 +23,7 @@ "A->b()": { "fqn": "A->b()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/namespaces2.php.expected.json b/tests/Validation/cases/namespaces2.php.expected.json index 42243e5..0dffc9f 100644 --- a/tests/Validation/cases/namespaces2.php.expected.json +++ b/tests/Validation/cases/namespaces2.php.expected.json @@ -17,7 +17,7 @@ "MyNamespace1": { "fqn": "MyNamespace1", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/namespaces5.php.expected.json b/tests/Validation/cases/namespaces5.php.expected.json index 5ffe02d..e609ca2 100644 --- a/tests/Validation/cases/namespaces5.php.expected.json +++ b/tests/Validation/cases/namespaces5.php.expected.json @@ -26,7 +26,7 @@ "B": { "fqn": "B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/namespaces6.php.expected.json b/tests/Validation/cases/namespaces6.php.expected.json index 1657f28..bf5a045 100644 --- a/tests/Validation/cases/namespaces6.php.expected.json +++ b/tests/Validation/cases/namespaces6.php.expected.json @@ -4,7 +4,7 @@ "A\\B": { "fqn": "A\\B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/namespaces8.php.expected.json b/tests/Validation/cases/namespaces8.php.expected.json index 71017d9..d303647 100644 --- a/tests/Validation/cases/namespaces8.php.expected.json +++ b/tests/Validation/cases/namespaces8.php.expected.json @@ -14,7 +14,7 @@ "LanguageServer\\Tests\\Utils": { "fqn": "LanguageServer\\Tests\\Utils", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/objectCreation.php.expected.json b/tests/Validation/cases/objectCreation.php.expected.json index a8fce0f..8fec38f 100644 --- a/tests/Validation/cases/objectCreation.php.expected.json +++ b/tests/Validation/cases/objectCreation.php.expected.json @@ -8,7 +8,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -27,7 +27,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -46,7 +46,7 @@ "MyNamespace\\A->a()": { "fqn": "MyNamespace\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/objectCreation2.php.expected.json b/tests/Validation/cases/objectCreation2.php.expected.json index 2ec8314..e546528 100644 --- a/tests/Validation/cases/objectCreation2.php.expected.json +++ b/tests/Validation/cases/objectCreation2.php.expected.json @@ -11,7 +11,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "MyNamespace\\B": { "fqn": "MyNamespace\\B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -49,7 +49,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -68,7 +68,7 @@ "MyNamespace\\A->a()": { "fqn": "MyNamespace\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/objectCreation3.php.expected.json b/tests/Validation/cases/objectCreation3.php.expected.json index f0cc31a..d2d3e2f 100644 --- a/tests/Validation/cases/objectCreation3.php.expected.json +++ b/tests/Validation/cases/objectCreation3.php.expected.json @@ -8,7 +8,7 @@ "A": { "fqn": "A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -27,7 +27,7 @@ "A->a()": { "fqn": "A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/param1.php.expected.json b/tests/Validation/cases/param1.php.expected.json index 33c99db..40cfbd1 100644 --- a/tests/Validation/cases/param1.php.expected.json +++ b/tests/Validation/cases/param1.php.expected.json @@ -8,7 +8,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -27,7 +27,7 @@ "MyNamespace\\init()": { "fqn": "MyNamespace\\init()", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/parent1.php.expected.json b/tests/Validation/cases/parent1.php.expected.json index eab232e..8b29461 100644 --- a/tests/Validation/cases/parent1.php.expected.json +++ b/tests/Validation/cases/parent1.php.expected.json @@ -11,7 +11,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "MyNamespace\\B": { "fqn": "MyNamespace\\B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -49,7 +49,7 @@ "MyNamespace\\B->b()": { "fqn": "MyNamespace\\B->b()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -71,7 +71,7 @@ "extends": [ "MyNamespace\\B" ], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -90,7 +90,7 @@ "MyNamespace\\A->a()": { "fqn": "MyNamespace\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/parent3.php.expected.json b/tests/Validation/cases/parent3.php.expected.json index aedb4b2..1e51b84 100644 --- a/tests/Validation/cases/parent3.php.expected.json +++ b/tests/Validation/cases/parent3.php.expected.json @@ -14,7 +14,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -33,7 +33,7 @@ "MyNamespace\\B": { "fqn": "MyNamespace\\B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -52,7 +52,7 @@ "MyNamespace\\B->b()": { "fqn": "MyNamespace\\B->b()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -74,7 +74,7 @@ "extends": [ "MyNamespace\\B" ], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -93,7 +93,7 @@ "MyNamespace\\A->a()": { "fqn": "MyNamespace\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/propertyName1.php.expected.json b/tests/Validation/cases/propertyName1.php.expected.json index 42b2ee9..cc31ed6 100644 --- a/tests/Validation/cases/propertyName1.php.expected.json +++ b/tests/Validation/cases/propertyName1.php.expected.json @@ -4,7 +4,7 @@ "MyClass": { "fqn": "MyClass", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -23,7 +23,7 @@ "MyClass->mainPropertyName": { "fqn": "MyClass->mainPropertyName", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/propertyName2.php.expected.json b/tests/Validation/cases/propertyName2.php.expected.json index 5a5c914..d4efb42 100644 --- a/tests/Validation/cases/propertyName2.php.expected.json +++ b/tests/Validation/cases/propertyName2.php.expected.json @@ -4,7 +4,7 @@ "MyClass": { "fqn": "MyClass", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -23,7 +23,7 @@ "MyClass->mainPropertyName": { "fqn": "MyClass->mainPropertyName", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/returnType.php.expected.json b/tests/Validation/cases/returnType.php.expected.json index cf9cc63..20cdadf 100644 --- a/tests/Validation/cases/returnType.php.expected.json +++ b/tests/Validation/cases/returnType.php.expected.json @@ -11,7 +11,7 @@ "TestNamespace": { "fqn": "TestNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "TestNamespace\\whatever()": { "fqn": "TestNamespace\\whatever()", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/scopedPropertyAccess.php.expected.json b/tests/Validation/cases/scopedPropertyAccess.php.expected.json index 52b6e7a..ec50c7a 100644 --- a/tests/Validation/cases/scopedPropertyAccess.php.expected.json +++ b/tests/Validation/cases/scopedPropertyAccess.php.expected.json @@ -11,7 +11,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -30,7 +30,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -49,7 +49,7 @@ "MyNamespace\\A::a()": { "fqn": "MyNamespace\\A::a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, diff --git a/tests/Validation/cases/scopedPropertyAccess2.php.expected.json b/tests/Validation/cases/scopedPropertyAccess2.php.expected.json index e5f6850..e1712cd 100644 --- a/tests/Validation/cases/scopedPropertyAccess2.php.expected.json +++ b/tests/Validation/cases/scopedPropertyAccess2.php.expected.json @@ -8,7 +8,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/scopedPropertyAccess3.php.expected.json b/tests/Validation/cases/scopedPropertyAccess3.php.expected.json index aa508bc..913721b 100644 --- a/tests/Validation/cases/scopedPropertyAccess3.php.expected.json +++ b/tests/Validation/cases/scopedPropertyAccess3.php.expected.json @@ -11,7 +11,7 @@ "A": { "fqn": "A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -30,7 +30,7 @@ "A::$a": { "fqn": "A::$a", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, diff --git a/tests/Validation/cases/scopedPropertyAccess5.php.expected.json b/tests/Validation/cases/scopedPropertyAccess5.php.expected.json index bd4ee70..7e56123 100644 --- a/tests/Validation/cases/scopedPropertyAccess5.php.expected.json +++ b/tests/Validation/cases/scopedPropertyAccess5.php.expected.json @@ -17,7 +17,7 @@ "TestClass": { "fqn": "TestClass", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -36,7 +36,7 @@ "TestClass::$testProperty": { "fqn": "TestClass::$testProperty", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, diff --git a/tests/Validation/cases/self1.php.expected.json b/tests/Validation/cases/self1.php.expected.json index eb37fc7..2ce8e43 100644 --- a/tests/Validation/cases/self1.php.expected.json +++ b/tests/Validation/cases/self1.php.expected.json @@ -14,7 +14,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -33,7 +33,7 @@ "MyNamespace\\B": { "fqn": "MyNamespace\\B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -52,7 +52,7 @@ "MyNamespace\\B->b()": { "fqn": "MyNamespace\\B->b()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -74,7 +74,7 @@ "extends": [ "MyNamespace\\B" ], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -93,7 +93,7 @@ "MyNamespace\\A->a()": { "fqn": "MyNamespace\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/self2.php.expected.json b/tests/Validation/cases/self2.php.expected.json index 2280b1a..cc00e3a 100644 --- a/tests/Validation/cases/self2.php.expected.json +++ b/tests/Validation/cases/self2.php.expected.json @@ -14,7 +14,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -33,7 +33,7 @@ "MyNamespace\\B": { "fqn": "MyNamespace\\B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -52,7 +52,7 @@ "MyNamespace\\B->b()": { "fqn": "MyNamespace\\B->b()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -74,7 +74,7 @@ "extends": [ "MyNamespace\\B" ], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -93,7 +93,7 @@ "MyNamespace\\A->a()": { "fqn": "MyNamespace\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/self3.php.expected.json b/tests/Validation/cases/self3.php.expected.json index 3f69299..9f25ba1 100644 --- a/tests/Validation/cases/self3.php.expected.json +++ b/tests/Validation/cases/self3.php.expected.json @@ -14,7 +14,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -33,7 +33,7 @@ "MyNamespace\\B": { "fqn": "MyNamespace\\B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -52,7 +52,7 @@ "MyNamespace\\B->b()": { "fqn": "MyNamespace\\B->b()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -74,7 +74,7 @@ "extends": [ "MyNamespace\\B" ], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -93,7 +93,7 @@ "MyNamespace\\A->a()": { "fqn": "MyNamespace\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/self4.php.expected.json b/tests/Validation/cases/self4.php.expected.json index ec3ae07..7f7b25e 100644 --- a/tests/Validation/cases/self4.php.expected.json +++ b/tests/Validation/cases/self4.php.expected.json @@ -23,7 +23,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -42,7 +42,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -61,7 +61,7 @@ "MyNamespace\\A::suite()": { "fqn": "MyNamespace\\A::suite()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, diff --git a/tests/Validation/cases/self5.php.expected.json b/tests/Validation/cases/self5.php.expected.json index 6727689..eb41832 100644 --- a/tests/Validation/cases/self5.php.expected.json +++ b/tests/Validation/cases/self5.php.expected.json @@ -8,7 +8,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -27,7 +27,7 @@ "MyNamespace\\A": { "fqn": "MyNamespace\\A", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -46,7 +46,7 @@ "MyNamespace\\A->typesProvider()": { "fqn": "MyNamespace\\A->typesProvider()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/static1.php.expected.json b/tests/Validation/cases/static1.php.expected.json index 69f8de0..453edc8 100644 --- a/tests/Validation/cases/static1.php.expected.json +++ b/tests/Validation/cases/static1.php.expected.json @@ -14,7 +14,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -33,7 +33,7 @@ "MyNamespace\\B": { "fqn": "MyNamespace\\B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -52,7 +52,7 @@ "MyNamespace\\B->b()": { "fqn": "MyNamespace\\B->b()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -74,7 +74,7 @@ "extends": [ "MyNamespace\\B" ], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -93,7 +93,7 @@ "MyNamespace\\A->a()": { "fqn": "MyNamespace\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/static2.php.expected.json b/tests/Validation/cases/static2.php.expected.json index 17f9a66..87e8e9a 100644 --- a/tests/Validation/cases/static2.php.expected.json +++ b/tests/Validation/cases/static2.php.expected.json @@ -14,7 +14,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -33,7 +33,7 @@ "MyNamespace\\B": { "fqn": "MyNamespace\\B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -52,7 +52,7 @@ "MyNamespace\\B->b()": { "fqn": "MyNamespace\\B->b()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -74,7 +74,7 @@ "extends": [ "MyNamespace\\B" ], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -93,7 +93,7 @@ "MyNamespace\\A->a()": { "fqn": "MyNamespace\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/static3.php.expected.json b/tests/Validation/cases/static3.php.expected.json index f6e5189..37524ea 100644 --- a/tests/Validation/cases/static3.php.expected.json +++ b/tests/Validation/cases/static3.php.expected.json @@ -14,7 +14,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -33,7 +33,7 @@ "MyNamespace\\B": { "fqn": "MyNamespace\\B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -52,7 +52,7 @@ "MyNamespace\\B->b()": { "fqn": "MyNamespace\\B->b()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -74,7 +74,7 @@ "extends": [ "MyNamespace\\B" ], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -93,7 +93,7 @@ "MyNamespace\\A->a()": { "fqn": "MyNamespace\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/static4.php.expected.json b/tests/Validation/cases/static4.php.expected.json index 3d05ede..4bcdd9d 100644 --- a/tests/Validation/cases/static4.php.expected.json +++ b/tests/Validation/cases/static4.php.expected.json @@ -8,7 +8,7 @@ "MyNamespace": { "fqn": "MyNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -29,7 +29,7 @@ "extends": [ "MyNamespace\\B" ], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -48,7 +48,7 @@ "MyNamespace\\A->a()": { "fqn": "MyNamespace\\A->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/staticMethodReturnType.php.expected.json b/tests/Validation/cases/staticMethodReturnType.php.expected.json index c178f0a..e6661ec 100644 --- a/tests/Validation/cases/staticMethodReturnType.php.expected.json +++ b/tests/Validation/cases/staticMethodReturnType.php.expected.json @@ -8,7 +8,7 @@ "FooClass": { "fqn": "FooClass", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -27,7 +27,7 @@ "FooClass::staticFoo()": { "fqn": "FooClass::staticFoo()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": true, "canBeInstantiated": false, @@ -47,7 +47,7 @@ "FooClass->bar()": { "fqn": "FooClass->bar()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/stringVariable.php.expected.json b/tests/Validation/cases/stringVariable.php.expected.json index fed8a23..1d4c7e3 100644 --- a/tests/Validation/cases/stringVariable.php.expected.json +++ b/tests/Validation/cases/stringVariable.php.expected.json @@ -8,7 +8,7 @@ "B": { "fqn": "B", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -27,7 +27,7 @@ "B->hi": { "fqn": "B->hi", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -47,7 +47,7 @@ "B->a()": { "fqn": "B->a()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/testQualifiedNameOutsideOfNamespace.php.expected.json b/tests/Validation/cases/testQualifiedNameOutsideOfNamespace.php.expected.json index f686093..509907c 100644 --- a/tests/Validation/cases/testQualifiedNameOutsideOfNamespace.php.expected.json +++ b/tests/Validation/cases/testQualifiedNameOutsideOfNamespace.php.expected.json @@ -8,7 +8,7 @@ "SomeNamespace": { "fqn": "SomeNamespace", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": false, diff --git a/tests/Validation/cases/verifyFqsenOnClassProperty.php.expected.json b/tests/Validation/cases/verifyFqsenOnClassProperty.php.expected.json index f6851bf..662a7ed 100644 --- a/tests/Validation/cases/verifyFqsenOnClassProperty.php.expected.json +++ b/tests/Validation/cases/verifyFqsenOnClassProperty.php.expected.json @@ -11,7 +11,7 @@ "Foo": { "fqn": "Foo", "extends": [], - "isGlobal": true, + "isMember": false, "roamed": false, "isStatic": false, "canBeInstantiated": true, @@ -30,7 +30,7 @@ "Foo->bar": { "fqn": "Foo->bar", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, @@ -50,7 +50,7 @@ "Foo->foo()": { "fqn": "Foo->foo()", "extends": [], - "isGlobal": false, + "isMember": true, "roamed": false, "isStatic": false, "canBeInstantiated": false, From 744062c14e3d104a3159cb969881baf9bb4dfc9e Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Sun, 29 Oct 2017 17:53:37 -0700 Subject: [PATCH 08/12] ci: add AppVeyor to test Windows closes #40 --- README.md | 3 +- appveyor.yml | 51 +++++++++++++++++++++++++++++ tests/Validation/ValidationTest.php | 5 ++- 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 appveyor.yml diff --git a/README.md b/README.md index 0aad4e5..017ba72 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # PHP Language Server [![Version](https://img.shields.io/packagist/v/felixfbecker/language-server.svg)](https://packagist.org/packages/felixfbecker/language-server) -[![Build Status](https://travis-ci.org/felixfbecker/php-language-server.svg?branch=master)](https://travis-ci.org/felixfbecker/php-language-server) +[![Linux Build Status](https://travis-ci.org/felixfbecker/php-language-server.svg?branch=master)](https://travis-ci.org/felixfbecker/php-language-server) +[![Windows Build status](https://ci.appveyor.com/api/projects/status/2sp5ll052wdjqmdm/branch/master?svg=true)](https://ci.appveyor.com/project/felixfbecker/php-language-server/branch/master) [![Coverage](https://codecov.io/gh/felixfbecker/php-language-server/branch/master/graph/badge.svg)](https://codecov.io/gh/felixfbecker/php-language-server) [![Dependency Status](https://gemnasium.com/badges/github.com/felixfbecker/php-language-server.svg)](https://gemnasium.com/github.com/felixfbecker/php-language-server) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..13dfd74 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,51 @@ +version: '{build}' + +platform: + - x64 + +skip_tags: true +skip_branch_with_pr: true +clone_depth: 1 +max_jobs: 3 + +cache: + - '%LOCALAPPDATA%\Composer' + +environment: + ANSICON: 121x90 (121x90) + matrix: + - { PHP_VERSION: '7.1.11', VC_VERSION: '14', XDEBUG_VERSION: '2.5.5' } + +install: + # Enable Windows Update service, needed to install vcredist2015 (dependency of php) + - ps: Set-Service wuauserv -StartupType Manual + - choco install -y php --version %PHP_VERSION% + - choco install -y composer + - refreshenv + - composer install --no-interaction --no-progress --prefer-dist + # Install XDebug for code coverage + - ps: | + $client = New-Object System.Net.WebClient + $phpMinorVersion = $env:PHP_VERSION -replace '\.\d+$' + $xdebugUrl = "https://xdebug.org/files/php_xdebug-$env:XDEBUG_VERSION-$phpMinorVersion-vc14-nts-x86_64.dll" + $phpDir = (Get-Item (Get-Command php).Source).Directory.FullName + $xdebugPath = Join-Path $phpDir ext\xdebug.dll + $client.DownloadFile($xdebugUrl, $xdebugPath) + $phpIniPath = Join-Path $phpDir php.ini + Add-Content $phpIniPath @" + zend_extension=$xdebugPath + "@ + +build: off + +test_script: + - vendor\bin\phpunit --coverage-clover=coverage/coverage.xml + +after_test: + - ps: | + # Delete vendor because it causes problems with codecovs report search + # https://github.com/codecov/codecov-bash/issues/96 + Remove-Item -Recurse -Force vendor + $env:PATH = 'C:\msys64\usr\bin;' + $env:PATH + Invoke-WebRequest -Uri 'https://codecov.io/bash' -OutFile codecov.sh + bash codecov.sh -f 'coverage/coverage.xml' diff --git a/tests/Validation/ValidationTest.php b/tests/Validation/ValidationTest.php index 3fc7429..9057c9d 100644 --- a/tests/Validation/ValidationTest.php +++ b/tests/Validation/ValidationTest.php @@ -96,7 +96,9 @@ class ValidationTest extends TestCase $testCasesDir = realpath(__DIR__ . '/cases'); foreach ($refsAndDefs['references'] as $key => $list) { $fixedPathRefs = array_map(function ($ref) use ($testCasesDir) { - return str_replace($testCasesDir, '.', $ref); + $ref = str_replace($testCasesDir, '.', $ref); + $ref = str_replace(DIRECTORY_SEPARATOR, '/', $ref); + return $ref; }, $list); $refsAndDefs['references']->$key = $fixedPathRefs; @@ -107,6 +109,7 @@ class ValidationTest extends TestCase if ($def !== null && $def->symbolInformation !== null && $def->symbolInformation->location !== null && $def->symbolInformation->location->uri !== null) { $def->symbolInformation->location->uri = str_replace($testCasesDir, '.', $def->symbolInformation->location->uri); + $def->symbolInformation->location->uri = str_replace(DIRECTORY_SEPARATOR, '/', $def->symbolInformation->location->uri); } } From 1edbe35609c50dcd7d51219b07622f6e527b752b Mon Sep 17 00:00:00 2001 From: Jens Hausdorf Date: Mon, 30 Oct 2017 11:33:19 +0100 Subject: [PATCH 09/12] refactor: use FunctionLike Interface (#505) --- src/CompletionProvider.php | 4 ++-- src/DefinitionResolver.php | 4 ++-- src/ParserHelpers.php | 10 +--------- src/TreeAnalyzer.php | 4 ++-- 4 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/CompletionProvider.php b/src/CompletionProvider.php index 9a000e6..68c5a0c 100644 --- a/src/CompletionProvider.php +++ b/src/CompletionProvider.php @@ -415,7 +415,7 @@ class CompletionProvider // Walk the AST upwards until a scope boundary is met $level = $node; - while ($level && !ParserHelpers\isFunctionLike($level)) { + while ($level && !($level instanceof PhpParser\FunctionLike)) { // Walk siblings before the node $sibling = $level; while ($sibling = $sibling->getPreviousSibling()) { @@ -429,7 +429,7 @@ class CompletionProvider // If the traversal ended because a function was met, // also add its parameters and closure uses to the result list - if ($level && ParserHelpers\isFunctionLike($level) && $level->parameters !== null) { + if ($level && $level instanceof PhpParser\FunctionLike && $level->parameters !== null) { foreach ($level->parameters->getValues() as $param) { $paramName = $param->getName(); if (empty($namePrefix) || strpos($paramName, $namePrefix) !== false) { diff --git a/src/DefinitionResolver.php b/src/DefinitionResolver.php index 93f961d..620527e 100644 --- a/src/DefinitionResolver.php +++ b/src/DefinitionResolver.php @@ -509,7 +509,7 @@ class DefinitionResolver // Traverse the AST up do { // If a function is met, check the parameters and use statements - if (ParserHelpers\isFunctionLike($n)) { + if ($n instanceof PhpParser\FunctionLike) { if ($n->parameters !== null) { foreach ($n->parameters->getElements() as $param) { if ($param->getName() === $name) { @@ -1018,7 +1018,7 @@ class DefinitionResolver // 1. doc block // 2. return type hint // 3. TODO: infer from return statements - if (ParserHelpers\isFunctionLike($node)) { + if ($node instanceof PhpParser\FunctionLike) { // Functions/methods $docBlock = $this->getDocBlock($node); if ( diff --git a/src/ParserHelpers.php b/src/ParserHelpers.php index 0ea210a..f20fb1f 100644 --- a/src/ParserHelpers.php +++ b/src/ParserHelpers.php @@ -25,7 +25,7 @@ function isConstantFetch(Node $node) : bool $parent instanceof Node\Expression\CallExpression || $parent instanceof Node\Expression\ObjectCreationExpression || $parent instanceof Node\Expression\ScopedPropertyAccessExpression || - isFunctionLike($parent) || + $parent instanceof PhpParser\FunctionLike || ( $parent instanceof Node\Expression\BinaryExpression && $parent->operator->kind === PhpParser\TokenKind::InstanceOfKeyword @@ -38,14 +38,6 @@ function getFunctionLikeDeclarationFromParameter(Node\Parameter $node) return $node->parent->parent; } -function isFunctionLike(Node $node) -{ - return - $node instanceof Node\Statement\FunctionDeclaration || - $node instanceof Node\MethodDeclaration || - $node instanceof Node\Expression\AnonymousFunctionCreationExpression; -} - function isBooleanExpression($expression) : bool { if (!($expression instanceof Node\Expression\BinaryExpression)) { diff --git a/src/TreeAnalyzer.php b/src/TreeAnalyzer.php index 81c96e1..58de8db 100644 --- a/src/TreeAnalyzer.php +++ b/src/TreeAnalyzer.php @@ -72,10 +72,10 @@ class TreeAnalyzer $range = PhpParser\PositionUtilities::getRangeFromPosition($error->start, $error->length, $this->sourceFileNode->fileContents); switch ($error->kind) { - case \Microsoft\PhpParser\DiagnosticKind::Error: + case PhpParser\DiagnosticKind::Error: $severity = DiagnosticSeverity::ERROR; break; - case \Microsoft\PhpParser\DiagnosticKind::Warning: + case PhpParser\DiagnosticKind::Warning: default: $severity = DiagnosticSeverity::WARNING; break; From d3c9133892022a7e8aa2711d487546cbde5ab253 Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Mon, 30 Oct 2017 21:12:44 -0700 Subject: [PATCH 10/12] ci(appveyor): cache chocolatey downloads --- appveyor.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 13dfd74..fa6d26a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -10,6 +10,7 @@ max_jobs: 3 cache: - '%LOCALAPPDATA%\Composer' + - '%LOCALAPPDATA%\Temp\Chocolatey' environment: ANSICON: 121x90 (121x90) @@ -19,6 +20,7 @@ environment: install: # Enable Windows Update service, needed to install vcredist2015 (dependency of php) - ps: Set-Service wuauserv -StartupType Manual + - choco config set cacheLocation %LOCALAPPDATA%\Temp\Chocolatey - choco install -y php --version %PHP_VERSION% - choco install -y composer - refreshenv From ac6bce929fa1a4265d92628b13153c0361bf67ef Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Mon, 30 Oct 2017 22:51:23 -0700 Subject: [PATCH 11/12] chore: get patch versions of tolerant-php-parser --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 0504c00..ceb357d 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "composer/composer": "^1.3", "felixfbecker/advanced-json-rpc": "^3.0.0", "jetbrains/phpstorm-stubs": "dev-master", - "microsoft/tolerant-php-parser": "^0.0.6", + "microsoft/tolerant-php-parser": "0.0.*", "netresearch/jsonmapper": "^1.0", "phpdocumentor/reflection-docblock": "^4.0.0", "sabre/event": "^5.0", From 6dbeef63bc12c3e0b5b1f8f384c1ac82c3a6e17e Mon Sep 17 00:00:00 2001 From: Nate Eagleson Date: Wed, 1 Nov 2017 12:38:54 -0400 Subject: [PATCH 12/12] docs: correct parse-stubs section in readme (#502) As the parse-stubs step is done automatically by `composer install` since https://github.com/felixfbecker/php-language-server/commit/34d3d2030dabc29bd919d0ea795bcb8d994228de, we no longer need to explicitly instruct people to do it. Note that sometimes you must parse the PHP stubs manually --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 017ba72..90c66cb 100644 --- a/README.md +++ b/README.md @@ -192,9 +192,6 @@ Clone the repository and run composer install to install dependencies. -Then parse the stubs with - - composer run-script parse-stubs Run the tests with @@ -203,3 +200,7 @@ Run the tests with Lint with composer lint + +The project parses PHPStorm's PHP stubs to get support for PHP builtins. It re-parses them as needed after Composer processes, but after some code changes (such as ones involving the index or parsing) you may have to explicitly re-parse them: + + composer run-script parse-stubs