1
0
Fork 0

Ignore errors from dependencies (#147)

pull/151/head
Felix Becker 2016-11-14 20:00:10 +01:00 committed by GitHub
parent 03bbf5f4ba
commit 642425dede
2 changed files with 33 additions and 1 deletions

View File

@ -19,6 +19,7 @@ use phpDocumentor\Reflection\DocBlockFactory;
use function LanguageServer\Fqn\{getDefinedFqn, getVariableDefinition, getReferencedFqn}; use function LanguageServer\Fqn\{getDefinedFqn, getVariableDefinition, getReferencedFqn};
use Sabre\Event\Promise; use Sabre\Event\Promise;
use function Sabre\Event\coroutine; use function Sabre\Event\coroutine;
use Sabre\Uri;
class PhpDocument class PhpDocument
{ {
@ -208,7 +209,20 @@ class PhpDocument
$this->stmts = $stmts; $this->stmts = $stmts;
} }
$this->client->textDocument->publishDiagnostics($this->uri, $diagnostics); if (!$this->isVendored()) {
$this->client->textDocument->publishDiagnostics($this->uri, $diagnostics);
}
}
/**
* Returns true if the document is a dependency
*
* @return bool
*/
public function isVendored(): bool
{
$path = Uri\parse($this->uri)['path'];
return strpos($path, '/vendor/') !== false;
} }
/** /**

View File

@ -37,4 +37,22 @@ class PhpDocumentTest extends TestCase
$this->assertInstanceOf(Node\Name\FullyQualified::class, $node); $this->assertInstanceOf(Node\Name\FullyQualified::class, $node);
$this->assertEquals('SomeClass', (string)$node); $this->assertEquals('SomeClass', (string)$node);
} }
public function testIsVendored()
{
$document = $this->project->openDocument('file:///dir/vendor/x.php', "<?php\n$\$a = new SomeClass;");
$this->assertEquals(true, $document->isVendored());
$document = $this->project->openDocument('file:///c:/dir/vendor/x.php', "<?php\n$\$a = new SomeClass;");
$this->assertEquals(true, $document->isVendored());
$document = $this->project->openDocument('file:///vendor/x.php', "<?php\n$\$a = new SomeClass;");
$this->assertEquals(true, $document->isVendored());
$document = $this->project->openDocument('file:///dir/vendor.php', "<?php\n$\$a = new SomeClass;");
$this->assertEquals(false, $document->isVendored());
$document = $this->project->openDocument('file:///dir/x.php', "<?php\n$\$a = new SomeClass;");
$this->assertEquals(false, $document->isVendored());
}
} }