Ignore errors from dependencies (#147)
parent
03bbf5f4ba
commit
642425dede
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue