refactor
parent
2280e7889b
commit
722898f74d
|
@ -30,9 +30,8 @@ class ComposerScripts
|
||||||
$finder = new FileSystemFilesFinder;
|
$finder = new FileSystemFilesFinder;
|
||||||
$contentRetriever = new FileSystemContentRetriever;
|
$contentRetriever = new FileSystemContentRetriever;
|
||||||
$docBlockFactory = DocBlockFactory::createInstance();
|
$docBlockFactory = DocBlockFactory::createInstance();
|
||||||
$parser = new Parser;
|
$parser = ParserResourceFactory::getParser();
|
||||||
$tolerantParser = new Tolerant\Parser();
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($index);
|
||||||
$definitionResolver = DefinitionResolverFactory::create($index);
|
|
||||||
|
|
||||||
$stubsLocation = null;
|
$stubsLocation = null;
|
||||||
foreach ([__DIR__ . '/../../../jetbrains/phpstorm-stubs', __DIR__ . '/../vendor/jetbrains/phpstorm-stubs'] as $dir) {
|
foreach ([__DIR__ . '/../../../jetbrains/phpstorm-stubs', __DIR__ . '/../vendor/jetbrains/phpstorm-stubs'] as $dir) {
|
||||||
|
@ -57,7 +56,7 @@ class ComposerScripts
|
||||||
$parts['scheme'] = 'phpstubs';
|
$parts['scheme'] = 'phpstubs';
|
||||||
$uri = Uri\build($parts);
|
$uri = Uri\build($parts);
|
||||||
|
|
||||||
$document = new PhpDocument($uri, $content, $index, $parser, $tolerantParser, $docBlockFactory, $definitionResolver);
|
$document = new PhpDocument($uri, $content, $index, $parser, $docBlockFactory, $definitionResolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
$index->setComplete();
|
$index->setComplete();
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace LanguageServer;
|
|
||||||
|
|
||||||
|
|
||||||
use LanguageServer\Index\ReadableIndex;
|
|
||||||
|
|
||||||
class DefinitionResolverFactory
|
|
||||||
{
|
|
||||||
public static function create(ReadableIndex $index, int $parserKind = ParserKind::PHP_PARSER) : DefinitionResolverInterface
|
|
||||||
{
|
|
||||||
if ($parserKind === ParserKind::PHP_PARSER) {
|
|
||||||
return new DefinitionResolver($index);
|
|
||||||
} elseif ($parserKind === ParserKind::TOLERANT_PHP_PARSER) {
|
|
||||||
return new TolerantDefinitionResolver($index);
|
|
||||||
}
|
|
||||||
throw new \Exception("Unhandled parser kind");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -192,7 +192,7 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher
|
||||||
$this->globalIndex = new GlobalIndex($stubsIndex, $this->projectIndex);
|
$this->globalIndex = new GlobalIndex($stubsIndex, $this->projectIndex);
|
||||||
|
|
||||||
// The DefinitionResolver should look in stubs, the project source and dependencies
|
// The DefinitionResolver should look in stubs, the project source and dependencies
|
||||||
$this->definitionResolver = DefinitionResolverFactory::create($this->globalIndex);
|
$this->definitionResolver = ParserResourceFactory::getDefinitionResolver($this->globalIndex);
|
||||||
|
|
||||||
$this->documentLoader = new PhpDocumentLoader(
|
$this->documentLoader = new PhpDocumentLoader(
|
||||||
$this->contentRetriever,
|
$this->contentRetriever,
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace LanguageServer;
|
||||||
|
|
||||||
|
use Microsoft\PhpParser as Tolerant;
|
||||||
|
use LanguageServer\Index\ReadableIndex;
|
||||||
|
|
||||||
|
class ParserResourceFactory {
|
||||||
|
const PARSER_KIND = ParserKind::PHP_PARSER;
|
||||||
|
|
||||||
|
public function getParser() {
|
||||||
|
if (self::PARSER_KIND === ParserKind::PHP_PARSER) {
|
||||||
|
return new Parser;
|
||||||
|
} else {
|
||||||
|
return new Tolerant\Parser;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDefinitionResolver(ReadableIndex $index) {
|
||||||
|
if (self::PARSER_KIND === ParserKind::PHP_PARSER) {
|
||||||
|
return new DefinitionResolver($index);
|
||||||
|
} else {
|
||||||
|
return new TolerantDefinitionResolver($index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -96,19 +96,11 @@ class PhpDocument
|
||||||
*/
|
*/
|
||||||
private $diagnostics;
|
private $diagnostics;
|
||||||
|
|
||||||
/**
|
|
||||||
* Microsoft\PhpParser\Parser instance
|
|
||||||
*
|
|
||||||
* @var Tolerant\Parser
|
|
||||||
*/
|
|
||||||
private $tolerantParser;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $uri The URI of the document
|
* @param string $uri The URI of the document
|
||||||
* @param string $content The content of the document
|
* @param string $content The content of the document
|
||||||
* @param Index $index The Index to register definitions and references to
|
* @param Index $index The Index to register definitions and references to
|
||||||
* @param Parser $parser The PHPParser instance
|
* @param Parser $parser The PHPParser instance
|
||||||
* @param Parser $tolerantParser The tolerant PHP Parser instance
|
|
||||||
* @param DocBlockFactory $docBlockFactory The DocBlockFactory instance to parse docblocks
|
* @param DocBlockFactory $docBlockFactory The DocBlockFactory instance to parse docblocks
|
||||||
* @param DefinitionResolverInterface $definitionResolver The DefinitionResolver to resolve definitions to symbols in the workspace
|
* @param DefinitionResolverInterface $definitionResolver The DefinitionResolver to resolve definitions to symbols in the workspace
|
||||||
*/
|
*/
|
||||||
|
@ -116,15 +108,13 @@ class PhpDocument
|
||||||
string $uri,
|
string $uri,
|
||||||
string $content,
|
string $content,
|
||||||
Index $index,
|
Index $index,
|
||||||
Parser $parser,
|
$parser,
|
||||||
Tolerant\Parser $tolerantParser,
|
|
||||||
DocBlockFactory $docBlockFactory,
|
DocBlockFactory $docBlockFactory,
|
||||||
DefinitionResolverInterface $definitionResolver
|
DefinitionResolverInterface $definitionResolver
|
||||||
) {
|
) {
|
||||||
$this->uri = $uri;
|
$this->uri = $uri;
|
||||||
$this->index = $index;
|
$this->index = $index;
|
||||||
$this->parser = $parser;
|
$this->parser = $parser;
|
||||||
$this->tolerantParser = $tolerantParser;
|
|
||||||
$this->docBlockFactory = $docBlockFactory;
|
$this->docBlockFactory = $docBlockFactory;
|
||||||
$this->definitionResolver = $definitionResolver;
|
$this->definitionResolver = $definitionResolver;
|
||||||
$this->updateContent($content);
|
$this->updateContent($content);
|
||||||
|
@ -171,7 +161,11 @@ class PhpDocument
|
||||||
$this->definitions = null;
|
$this->definitions = null;
|
||||||
$this->definitionNodes = null;
|
$this->definitionNodes = null;
|
||||||
|
|
||||||
$treeAnalyzer = new TreeAnalyzer($this->parser, $content, $this->docBlockFactory, $this->definitionResolver, $this->uri);
|
$treeAnalyzerClass = $this->parser instanceof Parser
|
||||||
|
? TreeAnalyzer::class
|
||||||
|
: TolerantTreeAnalyzer::class;
|
||||||
|
|
||||||
|
$treeAnalyzer = new $treeAnalyzerClass($this->parser, $content, $this->docBlockFactory, $this->definitionResolver, $this->uri);
|
||||||
|
|
||||||
$this->diagnostics = $treeAnalyzer->getDiagnostics();
|
$this->diagnostics = $treeAnalyzer->getDiagnostics();
|
||||||
|
|
||||||
|
|
|
@ -65,8 +65,7 @@ class PhpDocumentLoader
|
||||||
$this->contentRetriever = $contentRetriever;
|
$this->contentRetriever = $contentRetriever;
|
||||||
$this->projectIndex = $projectIndex;
|
$this->projectIndex = $projectIndex;
|
||||||
$this->definitionResolver = $definitionResolver;
|
$this->definitionResolver = $definitionResolver;
|
||||||
$this->parser = new Parser;
|
$this->parser = ParserResourceFactory::getParser();
|
||||||
$this->tolerantParser = new Tolerant\Parser();
|
|
||||||
$this->docBlockFactory = DocBlockFactory::createInstance();
|
$this->docBlockFactory = DocBlockFactory::createInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +136,6 @@ class PhpDocumentLoader
|
||||||
$content,
|
$content,
|
||||||
$this->projectIndex->getIndexForUri($uri),
|
$this->projectIndex->getIndexForUri($uri),
|
||||||
$this->parser,
|
$this->parser,
|
||||||
$this->tolerantParser,
|
|
||||||
$this->docBlockFactory,
|
$this->docBlockFactory,
|
||||||
$this->definitionResolver
|
$this->definitionResolver
|
||||||
);
|
);
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
<?php
|
||||||
|
declare(strict_types = 1);
|
||||||
|
|
||||||
|
namespace LanguageServer;
|
||||||
|
|
||||||
|
use LanguageServer\Protocol\{Diagnostic, DiagnosticSeverity, Range, Position, TextEdit};
|
||||||
|
use LanguageServer\NodeVisitor\{
|
||||||
|
NodeAtPositionFinder,
|
||||||
|
ReferencesAdder,
|
||||||
|
DocBlockParser,
|
||||||
|
DefinitionCollector,
|
||||||
|
ColumnCalculator,
|
||||||
|
ReferencesCollector
|
||||||
|
};
|
||||||
|
use LanguageServer\Index\Index;
|
||||||
|
use PhpParser\{Error, ErrorHandler, Node, NodeTraverser, Parser};
|
||||||
|
use PhpParser\NodeVisitor\NameResolver;
|
||||||
|
use phpDocumentor\Reflection\DocBlockFactory;
|
||||||
|
use Sabre\Uri;
|
||||||
|
use Microsoft\PhpParser as Tolerant;
|
||||||
|
|
||||||
|
class TolerantTreeAnalyzer implements TreeAnalyzerInterface {
|
||||||
|
private $parser;
|
||||||
|
|
||||||
|
private $stmts;
|
||||||
|
|
||||||
|
public function __construct(Parser $parser, $content, $docBlockFactory, $definitionResolver, $uri) {
|
||||||
|
$this->uri = $uri;
|
||||||
|
$this->parser = $parser;
|
||||||
|
$this->docBlockFactory = $docBlockFactory;
|
||||||
|
$this->definitionResolver = $definitionResolver;
|
||||||
|
$this->content = $content;
|
||||||
|
$this->$stmts = $this->parser->parse($content);
|
||||||
|
|
||||||
|
// TODO - docblock errors
|
||||||
|
|
||||||
|
foreach ($this->stmts->getDescendantNodes() as $node) {
|
||||||
|
$fqn = DefinitionResolver::getDefinedFqn($node);
|
||||||
|
// Only index definitions with an FQN (no variables)
|
||||||
|
if ($fqn === null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$this->definitionNodes[$fqn] = $node;
|
||||||
|
$this->definitions[$fqn] = $this->definitionResolver->createDefinitionFromNode($node, $fqn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDiagnostics() {
|
||||||
|
$diagnostics = [];
|
||||||
|
foreach (Tolerant\DiagnosticsProvider::getDiagnostics($tolerantStmts) as $_error) {
|
||||||
|
$range = Tolerant\PositionUtilities::getRangeFromPosition($_error->start, $_error->length, $content);
|
||||||
|
|
||||||
|
$diagnostics[] = new Diagnostic(
|
||||||
|
$_error->message,
|
||||||
|
new Range(
|
||||||
|
new Position($range->start->line, $range->start->character),
|
||||||
|
new Position($range->end->line, $range->start->character)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $diagnostics;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDefinitions() {
|
||||||
|
return $this->definitions ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDefinitionNodes() {
|
||||||
|
return $this->definitionNodes ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getReferenceNodes() {
|
||||||
|
return $this->referenceNodes ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getStmts() {
|
||||||
|
return $this->stmts;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Returns the URI of the document
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getUri(): string
|
||||||
|
{
|
||||||
|
return $this->uri;
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,7 +19,7 @@ use phpDocumentor\Reflection\DocBlockFactory;
|
||||||
use Sabre\Uri;
|
use Sabre\Uri;
|
||||||
use Microsoft\PhpParser as Tolerant;
|
use Microsoft\PhpParser as Tolerant;
|
||||||
|
|
||||||
class TreeAnalyzer {
|
class TreeAnalyzer implements TreeAnalyzerInterface {
|
||||||
private $parser;
|
private $parser;
|
||||||
|
|
||||||
private $stmts;
|
private $stmts;
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
declare(strict_types = 1);
|
||||||
|
|
||||||
|
namespace LanguageServer;
|
||||||
|
|
||||||
|
use LanguageServer\Protocol\{Diagnostic, DiagnosticSeverity, Range, Position, TextEdit};
|
||||||
|
use LanguageServer\NodeVisitor\{
|
||||||
|
NodeAtPositionFinder,
|
||||||
|
ReferencesAdder,
|
||||||
|
DocBlockParser,
|
||||||
|
DefinitionCollector,
|
||||||
|
ColumnCalculator,
|
||||||
|
ReferencesCollector
|
||||||
|
};
|
||||||
|
use LanguageServer\Index\Index;
|
||||||
|
use PhpParser\{Error, ErrorHandler, Node, NodeTraverser, Parser};
|
||||||
|
use PhpParser\NodeVisitor\NameResolver;
|
||||||
|
use phpDocumentor\Reflection\DocBlockFactory;
|
||||||
|
use Sabre\Uri;
|
||||||
|
use Microsoft\PhpParser as Tolerant;
|
||||||
|
|
||||||
|
interface TreeAnalyzerInterface {
|
||||||
|
public function __construct(Parser $parser, $content, $docBlockFactory, $definitionResolver, $uri);
|
||||||
|
|
||||||
|
public function getDiagnostics();
|
||||||
|
|
||||||
|
public function getDefinitions();
|
||||||
|
|
||||||
|
public function getDefinitionNodes();
|
||||||
|
|
||||||
|
public function getReferenceNodes();
|
||||||
|
|
||||||
|
public function getStmts();
|
||||||
|
}
|
|
@ -8,7 +8,7 @@ use PhpParser\{NodeTraverser, Node};
|
||||||
use PhpParser\NodeVisitor\NameResolver;
|
use PhpParser\NodeVisitor\NameResolver;
|
||||||
use phpDocumentor\Reflection\DocBlockFactory;
|
use phpDocumentor\Reflection\DocBlockFactory;
|
||||||
use LanguageServer\{
|
use LanguageServer\{
|
||||||
DefinitionResolverFactory, LanguageClient, PhpDocument, PhpDocumentLoader, Parser, DefinitionResolver
|
ParserResourceFactory, LanguageClient, PhpDocument, PhpDocumentLoader, Parser, DefinitionResolver
|
||||||
};
|
};
|
||||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||||
use LanguageServer\Protocol\ClientCapabilities;
|
use LanguageServer\Protocol\ClientCapabilities;
|
||||||
|
@ -24,13 +24,12 @@ class DefinitionCollectorTest extends TestCase
|
||||||
{
|
{
|
||||||
$path = realpath(__DIR__ . '/../../fixtures/symbols.php');
|
$path = realpath(__DIR__ . '/../../fixtures/symbols.php');
|
||||||
$uri = pathToUri($path);
|
$uri = pathToUri($path);
|
||||||
$parser = new Parser;
|
$parser = ParserResourceFactory::getParser();
|
||||||
$tolerantParser = new Tolerant\Parser();
|
|
||||||
$docBlockFactory = DocBlockFactory::createInstance();
|
$docBlockFactory = DocBlockFactory::createInstance();
|
||||||
$index = new Index;
|
$index = new Index;
|
||||||
$definitionResolver = DefinitionResolverFactory::create($index);
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($index);
|
||||||
$content = file_get_contents($path);
|
$content = file_get_contents($path);
|
||||||
$document = new PhpDocument($uri, $content, $index, $parser, $tolerantParser, $docBlockFactory, $definitionResolver);
|
$document = new PhpDocument($uri, $content, $index, $parser, $docBlockFactory, $definitionResolver);
|
||||||
$stmts = $parser->parse($content);
|
$stmts = $parser->parse($content);
|
||||||
|
|
||||||
$traverser = new NodeTraverser;
|
$traverser = new NodeTraverser;
|
||||||
|
@ -73,13 +72,12 @@ class DefinitionCollectorTest extends TestCase
|
||||||
{
|
{
|
||||||
$path = realpath(__DIR__ . '/../../fixtures/references.php');
|
$path = realpath(__DIR__ . '/../../fixtures/references.php');
|
||||||
$uri = pathToUri($path);
|
$uri = pathToUri($path);
|
||||||
$parser = new Parser;
|
$parser = ParserResourceFactory::getParser();
|
||||||
$tolerantParser = new Tolerant\Parser();
|
|
||||||
$docBlockFactory = DocBlockFactory::createInstance();
|
$docBlockFactory = DocBlockFactory::createInstance();
|
||||||
$index = new Index;
|
$index = new Index;
|
||||||
$definitionResolver = DefinitionResolverFactory::create($index);
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($index);
|
||||||
$content = file_get_contents($path);
|
$content = file_get_contents($path);
|
||||||
$document = new PhpDocument($uri, $content, $index, $parser, $tolerantParser, $docBlockFactory, $definitionResolver);
|
$document = new PhpDocument($uri, $content, $index, $parser, $docBlockFactory, $definitionResolver);
|
||||||
$stmts = $parser->parse($content);
|
$stmts = $parser->parse($content);
|
||||||
|
|
||||||
$traverser = new NodeTraverser;
|
$traverser = new NodeTraverser;
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace LanguageServer\Tests\Server;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use LanguageServer\Tests\MockProtocolStream;
|
use LanguageServer\Tests\MockProtocolStream;
|
||||||
use LanguageServer\{
|
use LanguageServer\{
|
||||||
DefinitionResolverFactory, Server, Client, LanguageClient, Project, PhpDocument, PhpDocumentLoader, DefinitionResolver
|
ParserResourceFactory, Server, Client, LanguageClient, Project, PhpDocument, PhpDocumentLoader, DefinitionResolver
|
||||||
};
|
};
|
||||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||||
|
@ -34,7 +34,7 @@ class PhpDocumentLoaderTest extends TestCase
|
||||||
$this->loader = new PhpDocumentLoader(
|
$this->loader = new PhpDocumentLoader(
|
||||||
new FileSystemContentRetriever,
|
new FileSystemContentRetriever,
|
||||||
$projectIndex,
|
$projectIndex,
|
||||||
DefinitionResolverFactory::create($projectIndex)
|
ParserResourceFactory::getDefinitionResolver($projectIndex)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ use PHPUnit\Framework\TestCase;
|
||||||
use phpDocumentor\Reflection\DocBlockFactory;
|
use phpDocumentor\Reflection\DocBlockFactory;
|
||||||
use LanguageServer\Tests\MockProtocolStream;
|
use LanguageServer\Tests\MockProtocolStream;
|
||||||
use LanguageServer\{
|
use LanguageServer\{
|
||||||
DefinitionResolverFactory, LanguageClient, PhpDocument, DefinitionResolver, Parser
|
ParserResourceFactory, LanguageClient, PhpDocument, DefinitionResolver, Parser
|
||||||
};
|
};
|
||||||
use LanguageServer\NodeVisitor\NodeAtPositionFinder;
|
use LanguageServer\NodeVisitor\NodeAtPositionFinder;
|
||||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||||
|
@ -21,12 +21,11 @@ class PhpDocumentTest extends TestCase
|
||||||
{
|
{
|
||||||
public function createDocument(string $uri, string $content)
|
public function createDocument(string $uri, string $content)
|
||||||
{
|
{
|
||||||
$parser = new Parser;
|
$parser = ParserResourceFactory::getParser();
|
||||||
$tolerantParser = new Tolerant\Parser();
|
|
||||||
$docBlockFactory = DocBlockFactory::createInstance();
|
$docBlockFactory = DocBlockFactory::createInstance();
|
||||||
$index = new Index;
|
$index = new Index;
|
||||||
$definitionResolver = DefinitionResolverFactory::create($index);
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($index);
|
||||||
return new PhpDocument($uri, $content, $index, $parser, $tolerantParser, $docBlockFactory, $definitionResolver);
|
return new PhpDocument($uri, $content, $index, $parser, $docBlockFactory, $definitionResolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testParsesVariableVariables()
|
public function testParsesVariableVariables()
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace LanguageServer\Tests\Server;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use LanguageServer\Tests\MockProtocolStream;
|
use LanguageServer\Tests\MockProtocolStream;
|
||||||
use LanguageServer\{
|
use LanguageServer\{
|
||||||
DefinitionResolverFactory, Server, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
ParserResourceFactory, Server, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||||
};
|
};
|
||||||
use LanguageServer\Index\{ProjectIndex, StubsIndex, GlobalIndex, DependenciesIndex, Index};
|
use LanguageServer\Index\{ProjectIndex, StubsIndex, GlobalIndex, DependenciesIndex, Index};
|
||||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||||
|
@ -52,7 +52,7 @@ abstract class ServerTestCase extends TestCase
|
||||||
$projectIndex = new ProjectIndex($sourceIndex, $dependenciesIndex);
|
$projectIndex = new ProjectIndex($sourceIndex, $dependenciesIndex);
|
||||||
$projectIndex->setComplete();
|
$projectIndex->setComplete();
|
||||||
|
|
||||||
$definitionResolver = DefinitionResolverFactory::create($projectIndex);
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||||
$this->documentLoader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
$this->documentLoader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||||
$this->textDocument = new Server\TextDocument($this->documentLoader, $definitionResolver, $client, $projectIndex);
|
$this->textDocument = new Server\TextDocument($this->documentLoader, $definitionResolver, $client, $projectIndex);
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use LanguageServer\Tests\MockProtocolStream;
|
use LanguageServer\Tests\MockProtocolStream;
|
||||||
use LanguageServer\{
|
use LanguageServer\{
|
||||||
DefinitionResolverFactory, Server, LanguageClient, PhpDocumentLoader, CompletionProvider, DefinitionResolver
|
ParserResourceFactory, Server, LanguageClient, PhpDocumentLoader, CompletionProvider, DefinitionResolver
|
||||||
};
|
};
|
||||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex, GlobalIndex, StubsIndex};
|
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex, GlobalIndex, StubsIndex};
|
||||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||||
|
@ -38,7 +38,7 @@ class CompletionTest extends TestCase
|
||||||
{
|
{
|
||||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||||
$definitionResolver = DefinitionResolverFactory::create($projectIndex);
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||||
$contentRetriever = new FileSystemContentRetriever;
|
$contentRetriever = new FileSystemContentRetriever;
|
||||||
$this->loader = new PhpDocumentLoader($contentRetriever, $projectIndex, $definitionResolver);
|
$this->loader = new PhpDocumentLoader($contentRetriever, $projectIndex, $definitionResolver);
|
||||||
$this->loader->load(pathToUri(__DIR__ . '/../../../fixtures/global_symbols.php'))->wait();
|
$this->loader->load(pathToUri(__DIR__ . '/../../../fixtures/global_symbols.php'))->wait();
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument\Definition;
|
||||||
use LanguageServer\Tests\MockProtocolStream;
|
use LanguageServer\Tests\MockProtocolStream;
|
||||||
use LanguageServer\Tests\Server\ServerTestCase;
|
use LanguageServer\Tests\Server\ServerTestCase;
|
||||||
use LanguageServer\{
|
use LanguageServer\{
|
||||||
DefinitionResolverFactory, Server, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
ParserResourceFactory, Server, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||||
};
|
};
|
||||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||||
|
@ -20,7 +20,7 @@ class GlobalFallbackTest extends ServerTestCase
|
||||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||||
$projectIndex->setComplete();
|
$projectIndex->setComplete();
|
||||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||||
$definitionResolver = DefinitionResolverFactory::create($projectIndex);
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||||
$contentRetriever = new FileSystemContentRetriever;
|
$contentRetriever = new FileSystemContentRetriever;
|
||||||
$loader = new PhpDocumentLoader($contentRetriever, $projectIndex, $definitionResolver);
|
$loader = new PhpDocumentLoader($contentRetriever, $projectIndex, $definitionResolver);
|
||||||
$this->textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
$this->textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use LanguageServer\Tests\MockProtocolStream;
|
use LanguageServer\Tests\MockProtocolStream;
|
||||||
use LanguageServer\{
|
use LanguageServer\{
|
||||||
DefinitionResolverFactory, Server, Client, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
ParserResourceFactory, Server, Client, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||||
};
|
};
|
||||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||||
|
@ -26,7 +26,7 @@ class DidChangeTest extends TestCase
|
||||||
{
|
{
|
||||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||||
$definitionResolver = DefinitionResolverFactory::create($projectIndex);
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||||
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||||
$textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
$textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
||||||
$phpDocument = $loader->open('whatever', "<?php\necho 'Hello, World'\n");
|
$phpDocument = $loader->open('whatever', "<?php\necho 'Hello, World'\n");
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use LanguageServer\Tests\MockProtocolStream;
|
use LanguageServer\Tests\MockProtocolStream;
|
||||||
use LanguageServer\{
|
use LanguageServer\{
|
||||||
DefinitionResolverFactory, Server, Client, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
ParserResourceFactory, Server, Client, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||||
};
|
};
|
||||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||||
|
@ -19,7 +19,7 @@ class DidCloseTest extends TestCase
|
||||||
{
|
{
|
||||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||||
$definitionResolver = DefinitionResolverFactory::create($projectIndex);
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||||
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||||
$textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
$textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
||||||
$phpDocument = $loader->open('whatever', "<?php\necho 'Hello, World'\n");
|
$phpDocument = $loader->open('whatever', "<?php\necho 'Hello, World'\n");
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use LanguageServer\Tests\MockProtocolStream;
|
use LanguageServer\Tests\MockProtocolStream;
|
||||||
use LanguageServer\{
|
use LanguageServer\{
|
||||||
DefinitionResolverFactory, Server, Client, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
ParserResourceFactory, Server, Client, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||||
};
|
};
|
||||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||||
|
@ -27,7 +27,7 @@ class FormattingTest extends TestCase
|
||||||
{
|
{
|
||||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||||
$definitionResolver = DefinitionResolverFactory::create($projectIndex);
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||||
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||||
$textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
$textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use LanguageServer\Tests\MockProtocolStream;
|
use LanguageServer\Tests\MockProtocolStream;
|
||||||
use LanguageServer\{
|
use LanguageServer\{
|
||||||
DefinitionResolverFactory, Server, Client, LanguageClient, ClientHandler, PhpDocumentLoader, DefinitionResolver
|
ParserResourceFactory, Server, Client, LanguageClient, ClientHandler, PhpDocumentLoader, DefinitionResolver
|
||||||
};
|
};
|
||||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||||
|
@ -40,7 +40,7 @@ class ParseErrorsTest extends TestCase
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||||
$definitionResolver = DefinitionResolverFactory::create($projectIndex);
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||||
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||||
$this->textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
$this->textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument\References;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use LanguageServer\Tests\MockProtocolStream;
|
use LanguageServer\Tests\MockProtocolStream;
|
||||||
use LanguageServer\{
|
use LanguageServer\{
|
||||||
DefinitionResolverFactory, Server, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
ParserResourceFactory, Server, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||||
};
|
};
|
||||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||||
|
@ -19,7 +19,7 @@ class GlobalFallbackTest extends ServerTestCase
|
||||||
{
|
{
|
||||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||||
$projectIndex->setComplete();
|
$projectIndex->setComplete();
|
||||||
$definitionResolver = DefinitionResolverFactory::create($projectIndex);
|
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||||
$this->documentLoader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
$this->documentLoader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||||
$this->textDocument = new Server\TextDocument($this->documentLoader, $definitionResolver, $client, $projectIndex);
|
$this->textDocument = new Server\TextDocument($this->documentLoader, $definitionResolver, $client, $projectIndex);
|
||||||
|
|
Loading…
Reference in New Issue