Remove ParserResourceFactory and DefinitionResolverInterface (leave original DefinitionResolver for now, for more testing)
parent
30da705a88
commit
31441f4b7e
|
@ -6,16 +6,12 @@ require __DIR__ . '/vendor/autoload.php';
|
|||
use Exception;
|
||||
use LanguageServer\Index\Index;
|
||||
use LanguageServer\ParserKind;
|
||||
use LanguageServer\ParserResourceFactory;
|
||||
use LanguageServer\PhpDocument;
|
||||
use LanguageServer\TolerantDefinitionResolver;
|
||||
use Microsoft\PhpParser as Tolerant;
|
||||
use phpDocumentor\Reflection\DocBlockFactory;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use LanguageServer\ClientHandler;
|
||||
use LanguageServer\Protocol\Message;
|
||||
use AdvancedJsonRpc;
|
||||
use RecursiveDirectoryIterator;
|
||||
use RecursiveIteratorIterator;
|
||||
use Sabre\Event\Loop;
|
||||
|
||||
$totalSize = 0;
|
||||
|
||||
|
@ -60,11 +56,9 @@ foreach($frameworks as $framework) {
|
|||
$index = new Index;
|
||||
$maxRecursion = [];
|
||||
$definitions = [];
|
||||
global $parserKind;
|
||||
$parserKind = $kind;
|
||||
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($index);
|
||||
$parser = ParserResourceFactory::getParser();
|
||||
$definitionResolver = new TolerantDefinitionResolver($index);
|
||||
$parser = new Tolerant\Parser();
|
||||
|
||||
try {
|
||||
$document = new PhpDocument($testCaseFile, $fileContents, $index, $parser, $docBlockFactory, $definitionResolver);
|
||||
|
|
|
@ -89,7 +89,7 @@ class CompletionProvider
|
|||
];
|
||||
|
||||
/**
|
||||
* @var DefinitionResolverInterface
|
||||
* @var TolerantDefinitionResolver
|
||||
*/
|
||||
private $definitionResolver;
|
||||
|
||||
|
@ -104,10 +104,10 @@ class CompletionProvider
|
|||
private $index;
|
||||
|
||||
/**
|
||||
* @param DefinitionResolverInterface $definitionResolver
|
||||
* @param TolerantDefinitionResolver $definitionResolver
|
||||
* @param ReadableIndex $index
|
||||
*/
|
||||
public function __construct(DefinitionResolverInterface $definitionResolver, ReadableIndex $index)
|
||||
public function __construct(TolerantDefinitionResolver $definitionResolver, ReadableIndex $index)
|
||||
{
|
||||
$this->definitionResolver = $definitionResolver;
|
||||
$this->index = $index;
|
||||
|
|
|
@ -30,8 +30,8 @@ class ComposerScripts
|
|||
$finder = new FileSystemFilesFinder;
|
||||
$contentRetriever = new FileSystemContentRetriever;
|
||||
$docBlockFactory = DocBlockFactory::createInstance();
|
||||
$parser = ParserResourceFactory::getParser();
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($index);
|
||||
$parser = Tolerant\Parser();
|
||||
$definitionResolver = new TolerantDefinitionResolver($index);
|
||||
|
||||
$stubsLocation = null;
|
||||
foreach ([__DIR__ . '/../../../jetbrains/phpstorm-stubs', __DIR__ . '/../vendor/jetbrains/phpstorm-stubs'] as $dir) {
|
||||
|
|
|
@ -9,7 +9,7 @@ use phpDocumentor\Reflection\{Types, Type, Fqsen, TypeResolver};
|
|||
use LanguageServer\Protocol\SymbolInformation;
|
||||
use LanguageServer\Index\ReadableIndex;
|
||||
|
||||
class DefinitionResolver implements DefinitionResolverInterface
|
||||
class DefinitionResolver
|
||||
{
|
||||
/**
|
||||
* @var \LanguageServer\Index\ReadableIndex
|
||||
|
|
|
@ -1,86 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace LanguageServer;
|
||||
|
||||
use phpDocumentor\Reflection\Type;
|
||||
use PhpParser\Node;
|
||||
use Microsoft\PhpParser as Tolerant;
|
||||
|
||||
interface DefinitionResolverInterface
|
||||
{
|
||||
/**
|
||||
* Builds the declaration line for a given node
|
||||
*
|
||||
* @param Node | Tolerant\Node $node
|
||||
* @return string
|
||||
*/
|
||||
public function getDeclarationLineFromNode($node) : string;
|
||||
|
||||
/**
|
||||
* Gets the documentation string for a node, if it has one
|
||||
*
|
||||
* @param Node | Tolerant\Node $node
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDocumentationFromNode($node);
|
||||
|
||||
/**
|
||||
* Create a Definition for a definition node
|
||||
*
|
||||
* @param Node | Tolerant\Node $node
|
||||
* @param string $fqn
|
||||
* @return Definition
|
||||
*/
|
||||
public function createDefinitionFromNode($node, string $fqn = null) : Definition;
|
||||
|
||||
/**
|
||||
* Given any node, returns the Definition object of the symbol that is referenced
|
||||
*
|
||||
* @param Node | Tolerant\Node $node Any reference node
|
||||
* @return Definition|null
|
||||
*/
|
||||
public function resolveReferenceNodeToDefinition($node);
|
||||
|
||||
/**
|
||||
* Given any node, returns the FQN of the symbol that is referenced
|
||||
* Returns null if the FQN could not be resolved or the reference node references a variable
|
||||
*
|
||||
* @param Node | Tolerant\Node $node
|
||||
* @return string|null
|
||||
*/
|
||||
public function resolveReferenceNodeToFqn($node);
|
||||
|
||||
/**
|
||||
* Given an expression node, resolves that expression recursively to a type.
|
||||
* If the type could not be resolved, returns Types\Mixed.
|
||||
*
|
||||
* @param \PhpParser\Node\Expr | Tolerant\Node $expr
|
||||
* @return \phpDocumentor\Reflection\Type
|
||||
*/
|
||||
public function resolveExpressionNodeToType($expr) : Type;
|
||||
|
||||
/**
|
||||
* Returns the type a reference to this symbol will resolve to.
|
||||
* For properties and constants, this is the type of the property/constant.
|
||||
* For functions and methods, this is the return type.
|
||||
* For parameters, this is the type of the parameter.
|
||||
* For classes and interfaces, this is the class type (object).
|
||||
* For variables / assignments, this is the documented type or type the assignment resolves to.
|
||||
* Can also be a compound type.
|
||||
* If it is unknown, will be Types\Mixed.
|
||||
* Returns null if the node does not have a type.
|
||||
*
|
||||
* @param Node | Tolerant\Node $node
|
||||
* @return \phpDocumentor\Reflection\Type|null
|
||||
*/
|
||||
public function getTypeFromNode($node);
|
||||
|
||||
/**
|
||||
* Returns the fully qualified name (FQN) that is defined by a node
|
||||
* Returns null if the node does not declare any symbol that can be referenced by an FQN
|
||||
*
|
||||
* @param Node | Tolerant\Node $node
|
||||
* @return string|null
|
||||
*/
|
||||
public static function getDefinedFqn($node);
|
||||
}
|
|
@ -8,10 +8,7 @@ use LanguageServer\Protocol\{
|
|||
ClientCapabilities,
|
||||
TextDocumentSyncKind,
|
||||
Message,
|
||||
MessageType,
|
||||
InitializeResult,
|
||||
SymbolInformation,
|
||||
TextDocumentIdentifier,
|
||||
CompletionOptions
|
||||
};
|
||||
use LanguageServer\FilesFinder\{FilesFinder, ClientFilesFinder, FileSystemFilesFinder};
|
||||
|
@ -19,12 +16,10 @@ use LanguageServer\ContentRetriever\{ContentRetriever, ClientContentRetriever, F
|
|||
use LanguageServer\Index\{DependenciesIndex, GlobalIndex, Index, ProjectIndex, StubsIndex};
|
||||
use LanguageServer\Cache\{FileSystemCache, ClientCache};
|
||||
use AdvancedJsonRpc;
|
||||
use Sabre\Event\{Loop, Promise};
|
||||
use Sabre\Event\{Promise};
|
||||
use function Sabre\Event\coroutine;
|
||||
use Exception;
|
||||
use Throwable;
|
||||
use Webmozart\PathUtil\Path;
|
||||
use Sabre\Uri;
|
||||
|
||||
class LanguageServer extends AdvancedJsonRpc\Dispatcher
|
||||
{
|
||||
|
@ -106,7 +101,7 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher
|
|||
protected $projectIndex;
|
||||
|
||||
/**
|
||||
* @var DefinitionResolverInterface
|
||||
* @var TolerantDefinitionResolver
|
||||
*/
|
||||
protected $definitionResolver;
|
||||
|
||||
|
@ -192,7 +187,7 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher
|
|||
$this->globalIndex = new GlobalIndex($stubsIndex, $this->projectIndex);
|
||||
|
||||
// The DefinitionResolver should look in stubs, the project source and dependencies
|
||||
$this->definitionResolver = ParserResourceFactory::getDefinitionResolver($this->globalIndex);
|
||||
$this->definitionResolver = new TolerantDefinitionResolver($this->globalIndex);
|
||||
|
||||
$this->documentLoader = new PhpDocumentLoader(
|
||||
$this->contentRetriever,
|
||||
|
|
|
@ -5,9 +5,8 @@ namespace LanguageServer\NodeVisitor;
|
|||
|
||||
use PhpParser\{NodeVisitorAbstract, Node};
|
||||
use LanguageServer\{
|
||||
Definition, DefinitionResolver, DefinitionResolverInterface, FqnUtilities
|
||||
Definition, FqnUtilities, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\Protocol\SymbolInformation;
|
||||
|
||||
/**
|
||||
* Collects definitions of classes, interfaces, traits, methods, properties and constants
|
||||
|
@ -31,7 +30,7 @@ class DefinitionCollector extends NodeVisitorAbstract
|
|||
|
||||
private $definitionResolver;
|
||||
|
||||
public function __construct(DefinitionResolverInterface $definitionResolver)
|
||||
public function __construct(TolerantDefinitionResolver $definitionResolver)
|
||||
{
|
||||
$this->definitionResolver = $definitionResolver;
|
||||
}
|
||||
|
|
|
@ -4,8 +4,9 @@ declare(strict_types = 1);
|
|||
namespace LanguageServer\NodeVisitor;
|
||||
|
||||
use LanguageServer\DefinitionResolverInterface;
|
||||
use PhpParser\{NodeVisitorAbstract, Node};
|
||||
use LanguageServer\DefinitionResolver;
|
||||
use PhpParser\{
|
||||
Node, NodeVisitorAbstract
|
||||
};
|
||||
|
||||
/**
|
||||
* Collects references to classes, interfaces, traits, methods, properties and constants
|
||||
|
@ -21,14 +22,14 @@ class ReferencesCollector extends NodeVisitorAbstract
|
|||
public $nodes = [];
|
||||
|
||||
/**
|
||||
* @var DefinitionResolverInterface
|
||||
* @var TolerantDefinitionResolver
|
||||
*/
|
||||
private $definitionResolver;
|
||||
|
||||
/**
|
||||
* @param DefinitionResolverInterface $definitionResolver The DefinitionResolver to resolve reference nodes to definitions
|
||||
* @param TolerantDefinitionResolver $definitionResolver The definition resolver to resolve reference nodes to definitions
|
||||
*/
|
||||
public function __construct(DefinitionResolverInterface $definitionResolver)
|
||||
public function __construct(TolerantDefinitionResolver $definitionResolver)
|
||||
{
|
||||
$this->definitionResolver = $definitionResolver;
|
||||
}
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace LanguageServer;
|
||||
|
||||
use Microsoft\PhpParser as Tolerant;
|
||||
use LanguageServer\Index\ReadableIndex;
|
||||
|
||||
class ParserResourceFactory {
|
||||
const PARSER_KIND = ParserKind::TOLERANT_PHP_PARSER;
|
||||
|
||||
private static function getParserKind () {
|
||||
global $parserKind;
|
||||
return isset($parserKind) ? $parserKind : self::PARSER_KIND;
|
||||
}
|
||||
|
||||
public static function getParser() {
|
||||
if (self::getParserKind() === ParserKind::PHP_PARSER || self::getParserKind() === ParserKind::DIAGNOSTIC_PHP_PARSER) {
|
||||
return new Parser;
|
||||
} else {
|
||||
return new Tolerant\Parser;
|
||||
}
|
||||
}
|
||||
|
||||
public static function getDefinitionResolver(ReadableIndex $index) {
|
||||
switch (self::getParserKind()) {
|
||||
case ParserKind::PHP_PARSER:
|
||||
return new DefinitionResolver($index);
|
||||
case ParserKind::TOLERANT_PHP_PARSER:
|
||||
return new TolerantDefinitionResolver($index);
|
||||
case ParserKind::DIAGNOSTIC_PHP_PARSER:
|
||||
return new LoggedDefinitionResolver($index);
|
||||
case ParserKind::DIAGNOSTIC_TOLERANT_PHP_PARSER:
|
||||
return new LoggedTolerantDefinitionResolver($index);
|
||||
}
|
||||
}
|
||||
|
||||
public static function getTreeAnalyzer($parser, $content, $docBlockFactory, $definitionResolver, $uri)
|
||||
{
|
||||
if (self::getParserKind() === ParserKind::PHP_PARSER || self::getParserKind() === ParserKind::DIAGNOSTIC_PHP_PARSER) {
|
||||
return new TreeAnalyzer($parser, $content, $docBlockFactory, $definitionResolver, $uri);
|
||||
} else {
|
||||
return new TolerantTreeAnalyzer($parser, $content, $docBlockFactory, $definitionResolver, $uri);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -3,21 +3,18 @@ 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};
|
||||
use PhpParser\NodeVisitor\NameResolver;
|
||||
use phpDocumentor\Reflection\DocBlockFactory;
|
||||
use Sabre\Uri;
|
||||
use LanguageServer\NodeVisitor\{
|
||||
NodeAtPositionFinder
|
||||
};
|
||||
use LanguageServer\Protocol\{
|
||||
Diagnostic, Position, Range
|
||||
};
|
||||
use Microsoft\PhpParser as Tolerant;
|
||||
use phpDocumentor\Reflection\DocBlockFactory;
|
||||
use PhpParser\{
|
||||
Node, NodeTraverser
|
||||
};
|
||||
|
||||
class PhpDocument
|
||||
{
|
||||
|
@ -38,7 +35,7 @@ class PhpDocument
|
|||
/**
|
||||
* The DefinitionResolver instance to resolve reference nodes to definitions
|
||||
*
|
||||
* @var DefinitionResolverInterface
|
||||
* @var TolerantDefinitionResolver
|
||||
*/
|
||||
private $definitionResolver;
|
||||
|
||||
|
@ -102,7 +99,7 @@ class PhpDocument
|
|||
* @param Index $index The Index to register definitions and references to
|
||||
* @param Parser $parser The PHPParser instance
|
||||
* @param DocBlockFactory $docBlockFactory The DocBlockFactory instance to parse docblocks
|
||||
* @param DefinitionResolverInterface $definitionResolver The DefinitionResolver to resolve definitions to symbols in the workspace
|
||||
* @param TolerantDefinitionResolver $definitionResolver The DefinitionResolver to resolve definitions to symbols in the workspace
|
||||
*/
|
||||
public function __construct(
|
||||
string $uri,
|
||||
|
@ -110,7 +107,7 @@ class PhpDocument
|
|||
Index $index,
|
||||
$parser,
|
||||
DocBlockFactory $docBlockFactory,
|
||||
DefinitionResolverInterface $definitionResolver
|
||||
TolerantDefinitionResolver $definitionResolver
|
||||
) {
|
||||
$this->uri = $uri;
|
||||
$this->index = $index;
|
||||
|
@ -161,7 +158,7 @@ class PhpDocument
|
|||
$this->definitions = null;
|
||||
$this->definitionNodes = null;
|
||||
|
||||
$treeAnalyzer = ParserResourceFactory::getTreeAnalyzer($this->parser, $content, $this->docBlockFactory, $this->definitionResolver, $this->uri);
|
||||
$treeAnalyzer = new TolerantTreeAnalyzer($this->parser, $content, $this->docBlockFactory, $this->definitionResolver, $this->uri);
|
||||
|
||||
$this->diagnostics = $treeAnalyzer->getDiagnostics();
|
||||
|
||||
|
|
|
@ -48,24 +48,25 @@ class PhpDocumentLoader
|
|||
private $docBlockFactory;
|
||||
|
||||
/**
|
||||
* @var DefinitionResolverInterface
|
||||
* @var TolerantDefinitionResolver
|
||||
*/
|
||||
private $definitionResolver;
|
||||
|
||||
/**
|
||||
* @param ContentRetriever $contentRetriever
|
||||
* @param ProjectIndex $project
|
||||
* @param DefinitionResolverInterface $definitionResolver
|
||||
* @param ProjectIndex $projectIndex
|
||||
* @param TolerantDefinitionResolver $definitionResolver
|
||||
* @internal param ProjectIndex $project
|
||||
*/
|
||||
public function __construct(
|
||||
ContentRetriever $contentRetriever,
|
||||
ProjectIndex $projectIndex,
|
||||
DefinitionResolverInterface $definitionResolver
|
||||
TolerantDefinitionResolver $definitionResolver
|
||||
) {
|
||||
$this->contentRetriever = $contentRetriever;
|
||||
$this->projectIndex = $projectIndex;
|
||||
$this->definitionResolver = $definitionResolver;
|
||||
$this->parser = ParserResourceFactory::getParser();
|
||||
$this->parser = new Tolerant\Parser();
|
||||
$this->docBlockFactory = DocBlockFactory::createInstance();
|
||||
}
|
||||
|
||||
|
|
|
@ -3,37 +3,20 @@ declare(strict_types = 1);
|
|||
|
||||
namespace LanguageServer\Server;
|
||||
|
||||
use Microsoft\PhpParser as Tolerant;
|
||||
use phpDocumentor\Reflection\DocBlock\Tags\Param;
|
||||
use PhpParser\{Node, NodeTraverser};
|
||||
use LanguageServer\{
|
||||
DefinitionResolverInterface, FqnUtilities, LanguageClient, PhpDocumentLoader, PhpDocument, DefinitionResolver, CompletionProvider, TolerantDefinitionResolver, TolerantTreeAnalyzer
|
||||
};
|
||||
use LanguageServer\NodeVisitor\VariableReferencesCollector;
|
||||
use LanguageServer\Protocol\{
|
||||
SymbolLocationInformation,
|
||||
SymbolDescriptor,
|
||||
TextDocumentItem,
|
||||
TextDocumentIdentifier,
|
||||
VersionedTextDocumentIdentifier,
|
||||
Position,
|
||||
Range,
|
||||
FormattingOptions,
|
||||
TextEdit,
|
||||
Location,
|
||||
SymbolInformation,
|
||||
ReferenceContext,
|
||||
Hover,
|
||||
MarkedString,
|
||||
SymbolKind,
|
||||
CompletionItem,
|
||||
CompletionItemKind
|
||||
CompletionProvider, FqnUtilities, LanguageClient, PhpDocument, PhpDocumentLoader, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\Index\ReadableIndex;
|
||||
use LanguageServer\Protocol\{
|
||||
FormattingOptions, Hover, Location, MarkedString, Position, Range, ReferenceContext, SymbolDescriptor, SymbolLocationInformation, TextDocumentIdentifier, TextDocumentItem, VersionedTextDocumentIdentifier
|
||||
};
|
||||
use Microsoft\PhpParser as Tolerant;
|
||||
use Sabre\Event\Promise;
|
||||
use Sabre\Uri;
|
||||
use function LanguageServer\{
|
||||
isVendored, waitForEvent
|
||||
};
|
||||
use function Sabre\Event\coroutine;
|
||||
use function LanguageServer\{waitForEvent, isVendored};
|
||||
|
||||
/**
|
||||
* Provides method handlers for all textDocument/* methods
|
||||
|
@ -53,7 +36,7 @@ class TextDocument
|
|||
protected $project;
|
||||
|
||||
/**
|
||||
* @var DefinitionResolverInterface
|
||||
* @var TolerantDefinitionResolver
|
||||
*/
|
||||
protected $definitionResolver;
|
||||
|
||||
|
@ -79,7 +62,7 @@ class TextDocument
|
|||
|
||||
/**
|
||||
* @param PhpDocumentLoader $documentLoader
|
||||
* @param DefinitionResolverInterface $definitionResolver
|
||||
* @param TolerantDefinitionResolver $definitionResolver
|
||||
* @param LanguageClient $client
|
||||
* @param ReadableIndex $index
|
||||
* @param \stdClass $composerJson
|
||||
|
@ -87,7 +70,7 @@ class TextDocument
|
|||
*/
|
||||
public function __construct(
|
||||
PhpDocumentLoader $documentLoader,
|
||||
DefinitionResolverInterface $definitionResolver,
|
||||
TolerantDefinitionResolver $definitionResolver,
|
||||
LanguageClient $client,
|
||||
ReadableIndex $index,
|
||||
\stdClass $composerJson = null,
|
||||
|
|
|
@ -3,16 +3,15 @@ declare(strict_types = 1);
|
|||
|
||||
namespace LanguageServer;
|
||||
|
||||
use LanguageServer\Protocol\TolerantSymbolInformation;
|
||||
use PhpParser\Node;
|
||||
use phpDocumentor\Reflection\{
|
||||
DocBlock, DocBlockFactory, Types, Type, Fqsen, TypeResolver
|
||||
};
|
||||
use LanguageServer\Protocol\SymbolInformation;
|
||||
use LanguageServer\Index\ReadableIndex;
|
||||
use LanguageServer\Protocol\TolerantSymbolInformation;
|
||||
use Microsoft\PhpParser as Tolerant;
|
||||
use phpDocumentor\Reflection\{
|
||||
DocBlock, DocBlockFactory, Fqsen, Type, TypeResolver, Types
|
||||
};
|
||||
use PhpParser\Node;
|
||||
|
||||
class TolerantDefinitionResolver implements DefinitionResolverInterface
|
||||
class TolerantDefinitionResolver
|
||||
{
|
||||
/**
|
||||
* The current project index (for retrieving existing definitions)
|
||||
|
@ -197,7 +196,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
// TODO interface implementations.
|
||||
} elseif (
|
||||
$node instanceof Tolerant\Node\Statement\InterfaceDeclaration &&
|
||||
// TODO - this hould be better represented in the parser API
|
||||
// TODO - this should be better represented in the parser API
|
||||
$node->interfaceBaseClause !== null && $node->interfaceBaseClause->interfaceNameList !== null
|
||||
) {
|
||||
$def->extends = [];
|
||||
|
@ -252,6 +251,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
}
|
||||
// If the node is a function or constant, it could be namespaced, but PHP falls back to global
|
||||
// http://php.net/manual/en/language.namespaces.fallback.php
|
||||
// TODO - verify that this is not a method
|
||||
$globalFallback = TolerantParserHelpers::isConstantFetch($node) || $parent instanceof Tolerant\Node\Expression\CallExpression;
|
||||
// Return the Definition object from the index index
|
||||
return $this->index->getDefinition($fqn, $globalFallback);
|
||||
|
@ -1085,8 +1085,8 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
// INPUT OUTPUT
|
||||
// namespace A\B;
|
||||
// class C {
|
||||
// function a () {} A\B\C::a()
|
||||
// static function b() {} A\B\C->b()
|
||||
// function a () {} A\B\C->a()
|
||||
// static function b() {} A\B\C::b()
|
||||
// }
|
||||
else if ($node instanceof Tolerant\Node\MethodDeclaration) {
|
||||
// Class method: use ClassName->methodName() as name
|
||||
|
@ -1111,7 +1111,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
// namespace A\B;
|
||||
// class C {
|
||||
// static $a = 4, $b = 4 A\B\C::$a, A\B\C::$b
|
||||
// $a = 4, $b = 4 A\B\C->$a, A\B\C->$b
|
||||
// $a = 4, $b = 4 A\B\C->$a, A\B\C->$b // TODO verify variable name
|
||||
// }
|
||||
else if (
|
||||
($propertyDeclaration = TolerantParserHelpers::tryGetPropertyDeclaration($node)) !== null &&
|
||||
|
|
|
@ -7,7 +7,7 @@ use PHPUnit\Framework\TestCase;
|
|||
use PhpParser\{Node};
|
||||
use phpDocumentor\Reflection\DocBlockFactory;
|
||||
use LanguageServer\{
|
||||
ParserResourceFactory
|
||||
TolerantDefinitionResolver, TolerantTreeAnalyzer
|
||||
};
|
||||
use LanguageServer\Index\{Index};
|
||||
use function LanguageServer\pathToUri;
|
||||
|
@ -67,14 +67,14 @@ class DefinitionCollectorTest extends TestCase
|
|||
private function collectDefinitions($path):array
|
||||
{
|
||||
$uri = pathToUri($path);
|
||||
$parser = ParserResourceFactory::getParser();
|
||||
$parser = new Tolerant\Parser();
|
||||
|
||||
$docBlockFactory = DocBlockFactory::createInstance();
|
||||
$index = new Index;
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($index);
|
||||
$definitionResolver = new TolerantDefinitionResolver($index);
|
||||
$content = file_get_contents($path);
|
||||
|
||||
$treeAnalyzer = ParserResourceFactory::getTreeAnalyzer($parser, $content, $docBlockFactory, $definitionResolver, $uri);
|
||||
$treeAnalyzer = new TolerantTreeAnalyzer($parser, $content, $docBlockFactory, $definitionResolver, $uri);
|
||||
return $treeAnalyzer->getDefinitionNodes();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,22 +3,14 @@ declare(strict_types = 1);
|
|||
|
||||
namespace LanguageServer\Tests\Server;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use LanguageServer\Tests\MockProtocolStream;
|
||||
use LanguageServer\{
|
||||
ParserResourceFactory, Server, Client, LanguageClient, Project, PhpDocument, PhpDocumentLoader, DefinitionResolver
|
||||
PhpDocument, PhpDocumentLoader, Project, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||
use LanguageServer\Protocol\{
|
||||
TextDocumentItem,
|
||||
TextDocumentIdentifier,
|
||||
SymbolKind,
|
||||
DiagnosticSeverity,
|
||||
FormattingOptions,
|
||||
ClientCapabilities
|
||||
use LanguageServer\Index\{
|
||||
DependenciesIndex, Index, ProjectIndex
|
||||
};
|
||||
use AdvancedJsonRpc\{Request as RequestBody, Response as ResponseBody};
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use function LanguageServer\pathToUri;
|
||||
|
||||
class PhpDocumentLoaderTest extends TestCase
|
||||
|
@ -34,7 +26,7 @@ class PhpDocumentLoaderTest extends TestCase
|
|||
$this->loader = new PhpDocumentLoader(
|
||||
new FileSystemContentRetriever,
|
||||
$projectIndex,
|
||||
ParserResourceFactory::getDefinitionResolver($projectIndex)
|
||||
new TolerantDefinitionResolver($projectIndex)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,28 +3,29 @@ declare(strict_types = 1);
|
|||
|
||||
namespace LanguageServer\Tests\Server;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use phpDocumentor\Reflection\DocBlockFactory;
|
||||
use LanguageServer\Tests\MockProtocolStream;
|
||||
use LanguageServer\{
|
||||
ParserResourceFactory, LanguageClient, PhpDocument, DefinitionResolver, Parser
|
||||
PhpDocument, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\Index\{
|
||||
Index
|
||||
};
|
||||
use LanguageServer\Protocol\{
|
||||
Position
|
||||
};
|
||||
use LanguageServer\NodeVisitor\NodeAtPositionFinder;
|
||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||
use LanguageServer\Protocol\{SymbolKind, Position, ClientCapabilities};
|
||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||
use PhpParser\Node;
|
||||
use function LanguageServer\isVendored;
|
||||
use Microsoft\PhpParser as Tolerant;
|
||||
use phpDocumentor\Reflection\DocBlockFactory;
|
||||
use PhpParser\Node;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use function LanguageServer\isVendored;
|
||||
|
||||
class PhpDocumentTest extends TestCase
|
||||
{
|
||||
public function createDocument(string $uri, string $content)
|
||||
{
|
||||
$parser = ParserResourceFactory::getParser();
|
||||
$parser = new Tolerant\Parser();
|
||||
$docBlockFactory = DocBlockFactory::createInstance();
|
||||
$index = new Index;
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($index);
|
||||
$definitionResolver = new TolerantDefinitionResolver($index);
|
||||
return new PhpDocument($uri, $content, $index, $parser, $docBlockFactory, $definitionResolver);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,13 +6,12 @@ namespace LanguageServer\Tests\Server;
|
|||
use PHPUnit\Framework\TestCase;
|
||||
use LanguageServer\Tests\MockProtocolStream;
|
||||
use LanguageServer\{
|
||||
ParserResourceFactory, Server, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||
Server, LanguageClient, PhpDocumentLoader, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\Index\{ProjectIndex, StubsIndex, GlobalIndex, DependenciesIndex, Index};
|
||||
use LanguageServer\Index\{ProjectIndex, DependenciesIndex, Index};
|
||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||
use LanguageServer\Protocol\{Position, Location, Range, ClientCapabilities};
|
||||
use LanguageServer\Protocol\{Position, Location, Range};
|
||||
use function LanguageServer\pathToUri;
|
||||
use Sabre\Event\Promise;
|
||||
|
||||
abstract class ServerTestCase extends TestCase
|
||||
{
|
||||
|
@ -52,7 +51,7 @@ abstract class ServerTestCase extends TestCase
|
|||
$projectIndex = new ProjectIndex($sourceIndex, $dependenciesIndex);
|
||||
$projectIndex->setComplete();
|
||||
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||
$definitionResolver = new TolerantDefinitionResolver($projectIndex);
|
||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||
$this->documentLoader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||
$this->textDocument = new Server\TextDocument($this->documentLoader, $definitionResolver, $client, $projectIndex);
|
||||
|
|
|
@ -6,16 +6,15 @@ namespace LanguageServer\Tests\Server\TextDocument;
|
|||
use PHPUnit\Framework\TestCase;
|
||||
use LanguageServer\Tests\MockProtocolStream;
|
||||
use LanguageServer\{
|
||||
ParserResourceFactory, Server, LanguageClient, PhpDocumentLoader, CompletionProvider, DefinitionResolver
|
||||
Server, LanguageClient, PhpDocumentLoader, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex, GlobalIndex, StubsIndex};
|
||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||
use LanguageServer\Protocol\{
|
||||
TextDocumentIdentifier,
|
||||
TextEdit,
|
||||
Range,
|
||||
Position,
|
||||
ClientCapabilities,
|
||||
CompletionList,
|
||||
CompletionItem,
|
||||
CompletionItemKind
|
||||
|
@ -38,7 +37,7 @@ class CompletionTest extends TestCase
|
|||
{
|
||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||
$definitionResolver = new TolerantDefinitionResolver($projectIndex);
|
||||
$contentRetriever = new FileSystemContentRetriever;
|
||||
$this->loader = new PhpDocumentLoader($contentRetriever, $projectIndex, $definitionResolver);
|
||||
$this->loader->load(pathToUri(__DIR__ . '/../../../fixtures/global_symbols.php'))->wait();
|
||||
|
|
|
@ -6,12 +6,11 @@ namespace LanguageServer\Tests\Server\TextDocument\Definition;
|
|||
use LanguageServer\Tests\MockProtocolStream;
|
||||
use LanguageServer\Tests\Server\ServerTestCase;
|
||||
use LanguageServer\{
|
||||
ParserResourceFactory, Server, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||
Server, LanguageClient, PhpDocumentLoader, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||
use LanguageServer\Protocol\{TextDocumentIdentifier, Position, Range, Location, ClientCapabilities};
|
||||
use Sabre\Event\Promise;
|
||||
use LanguageServer\Protocol\{TextDocumentIdentifier, Position, Range, Location};
|
||||
|
||||
class GlobalFallbackTest extends ServerTestCase
|
||||
{
|
||||
|
@ -20,7 +19,7 @@ class GlobalFallbackTest extends ServerTestCase
|
|||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||
$projectIndex->setComplete();
|
||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||
$definitionResolver = new TolerantDefinitionResolver($projectIndex);
|
||||
$contentRetriever = new FileSystemContentRetriever;
|
||||
$loader = new PhpDocumentLoader($contentRetriever, $projectIndex, $definitionResolver);
|
||||
$this->textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
||||
|
|
|
@ -6,18 +6,15 @@ namespace LanguageServer\Tests\Server\TextDocument;
|
|||
use PHPUnit\Framework\TestCase;
|
||||
use LanguageServer\Tests\MockProtocolStream;
|
||||
use LanguageServer\{
|
||||
ParserResourceFactory, Server, Client, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||
Server, LanguageClient, PhpDocumentLoader, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||
use LanguageServer\Protocol\{
|
||||
TextDocumentIdentifier,
|
||||
TextDocumentItem,
|
||||
VersionedTextDocumentIdentifier,
|
||||
TextDocumentContentChangeEvent,
|
||||
Range,
|
||||
Position,
|
||||
ClientCapabilities
|
||||
Position
|
||||
};
|
||||
|
||||
class DidChangeTest extends TestCase
|
||||
|
@ -26,7 +23,7 @@ class DidChangeTest extends TestCase
|
|||
{
|
||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||
$definitionResolver = new TolerantDefinitionResolver($projectIndex);
|
||||
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||
$textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
||||
$phpDocument = $loader->open('whatever', "<?php\necho 'Hello, World'\n");
|
||||
|
|
|
@ -6,12 +6,11 @@ namespace LanguageServer\Tests\Server\TextDocument;
|
|||
use PHPUnit\Framework\TestCase;
|
||||
use LanguageServer\Tests\MockProtocolStream;
|
||||
use LanguageServer\{
|
||||
ParserResourceFactory, Server, Client, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||
Server, LanguageClient, PhpDocumentLoader, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||
use LanguageServer\Protocol\{TextDocumentItem, TextDocumentIdentifier, ClientCapabilities};
|
||||
use Exception;
|
||||
use LanguageServer\Protocol\{TextDocumentItem, TextDocumentIdentifier};
|
||||
|
||||
class DidCloseTest extends TestCase
|
||||
{
|
||||
|
@ -19,7 +18,7 @@ class DidCloseTest extends TestCase
|
|||
{
|
||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||
$definitionResolver = new TolerantDefinitionResolver($projectIndex);
|
||||
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||
$textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
||||
$phpDocument = $loader->open('whatever', "<?php\necho 'Hello, World'\n");
|
||||
|
|
|
@ -6,7 +6,7 @@ namespace LanguageServer\Tests\Server\TextDocument;
|
|||
use PHPUnit\Framework\TestCase;
|
||||
use LanguageServer\Tests\MockProtocolStream;
|
||||
use LanguageServer\{
|
||||
ParserResourceFactory, Server, Client, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||
Server, LanguageClient, PhpDocumentLoader, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||
|
@ -14,7 +14,6 @@ use LanguageServer\Protocol\{
|
|||
TextDocumentIdentifier,
|
||||
TextDocumentItem,
|
||||
FormattingOptions,
|
||||
ClientCapabilities,
|
||||
TextEdit,
|
||||
Range,
|
||||
Position
|
||||
|
@ -27,7 +26,7 @@ class FormattingTest extends TestCase
|
|||
{
|
||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||
$definitionResolver = new TolerantDefinitionResolver($projectIndex);
|
||||
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||
$textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
||||
|
||||
|
|
|
@ -6,11 +6,11 @@ namespace LanguageServer\Tests\Server\TextDocument;
|
|||
use PHPUnit\Framework\TestCase;
|
||||
use LanguageServer\Tests\MockProtocolStream;
|
||||
use LanguageServer\{
|
||||
ParserResourceFactory, Server, Client, LanguageClient, ClientHandler, PhpDocumentLoader, DefinitionResolver
|
||||
Server, Client, LanguageClient, ClientHandler, PhpDocumentLoader, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||
use LanguageServer\Protocol\{TextDocumentIdentifier, TextDocumentItem, DiagnosticSeverity, ClientCapabilities};
|
||||
use LanguageServer\Protocol\{TextDocumentItem, DiagnosticSeverity};
|
||||
use Sabre\Event\Promise;
|
||||
use JsonMapper;
|
||||
|
||||
|
@ -40,7 +40,7 @@ class ParseErrorsTest extends TestCase
|
|||
}
|
||||
};
|
||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||
$definitionResolver = new TolerantDefinitionResolver($projectIndex);
|
||||
$loader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||
$this->textDocument = new Server\TextDocument($loader, $definitionResolver, $client, $projectIndex);
|
||||
}
|
||||
|
|
|
@ -3,14 +3,17 @@ declare(strict_types = 1);
|
|||
|
||||
namespace LanguageServer\Tests\Server\TextDocument\References;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use LanguageServer\Tests\MockProtocolStream;
|
||||
use LanguageServer\{
|
||||
ParserResourceFactory, Server, LanguageClient, PhpDocumentLoader, DefinitionResolver
|
||||
LanguageClient, PhpDocumentLoader, Server, TolerantDefinitionResolver
|
||||
};
|
||||
use LanguageServer\Index\{Index, ProjectIndex, DependenciesIndex};
|
||||
use LanguageServer\ContentRetriever\FileSystemContentRetriever;
|
||||
use LanguageServer\Protocol\{TextDocumentIdentifier, Position, ReferenceContext, Location, Range, ClientCapabilities};
|
||||
use LanguageServer\Index\{
|
||||
DependenciesIndex, Index, ProjectIndex
|
||||
};
|
||||
use LanguageServer\Protocol\{
|
||||
Location, Position, Range, ReferenceContext, TextDocumentIdentifier
|
||||
};
|
||||
use LanguageServer\Tests\MockProtocolStream;
|
||||
use LanguageServer\Tests\Server\ServerTestCase;
|
||||
|
||||
class GlobalFallbackTest extends ServerTestCase
|
||||
|
@ -19,7 +22,7 @@ class GlobalFallbackTest extends ServerTestCase
|
|||
{
|
||||
$projectIndex = new ProjectIndex(new Index, new DependenciesIndex);
|
||||
$projectIndex->setComplete();
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($projectIndex);
|
||||
$definitionResolver = new TolerantDefinitionResolver($projectIndex);
|
||||
$client = new LanguageClient(new MockProtocolStream, new MockProtocolStream);
|
||||
$this->documentLoader = new PhpDocumentLoader(new FileSystemContentRetriever, $projectIndex, $definitionResolver);
|
||||
$this->textDocument = new Server\TextDocument($this->documentLoader, $definitionResolver, $client, $projectIndex);
|
||||
|
|
|
@ -8,8 +8,8 @@ use Exception;
|
|||
use LanguageServer\Definition;
|
||||
use LanguageServer\Index\Index;
|
||||
use LanguageServer\ParserKind;
|
||||
use LanguageServer\ParserResourceFactory;
|
||||
use LanguageServer\PhpDocument;
|
||||
use LanguageServer\TolerantDefinitionResolver;
|
||||
use phpDocumentor\Reflection\DocBlock;
|
||||
use phpDocumentor\Reflection\DocBlockFactory;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
@ -60,8 +60,14 @@ class ValidationTest extends TestCase
|
|||
echo "Test file: " . realpath($testCaseFile) . PHP_EOL;
|
||||
|
||||
$fileContents = file_get_contents($testCaseFile);
|
||||
$expectedValues = $this->getExpectedTestValues($testCaseFile, $frameworkName, $fileContents);
|
||||
$actualValues = $this->getActualTestValues($testCaseFile, $frameworkName, $fileContents);
|
||||
$actualValues = $this->getActualTestValues($testCaseFile, $fileContents);
|
||||
|
||||
$outputFile = getExpectedValuesFile($testCaseFile);
|
||||
if (!file_exists($outputFile)) {
|
||||
file_put_contents(json_encode($actualValues, JSON_PRETTY_PRINT));
|
||||
}
|
||||
|
||||
$expectedValues = (array)json_decode(file_get_contents($outputFile));
|
||||
|
||||
try {
|
||||
$this->assertEquals($expectedValues['definitions'], $actualValues['definitions']);
|
||||
|
@ -81,56 +87,11 @@ class ValidationTest extends TestCase
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $filename
|
||||
* @param $frameworkName
|
||||
* @param $fileContents
|
||||
* @return array
|
||||
*/
|
||||
private function getExpectedTestValues($filename, $frameworkName, $fileContents) {
|
||||
global $parserKind;
|
||||
$parserKind = ParserKind::PHP_PARSER;
|
||||
|
||||
$outputFile = getExpectedValuesFile($filename);
|
||||
if (file_exists($outputFile)) {
|
||||
return (array)json_decode(file_get_contents($outputFile));
|
||||
}
|
||||
|
||||
private function getActualTestValues($filename, $fileContents): array {
|
||||
$index = new Index();
|
||||
$parser = ParserResourceFactory::getParser();
|
||||
$parser = new Tolerant\Parser();
|
||||
$docBlockFactory = DocBlockFactory::createInstance();
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($index);
|
||||
|
||||
try {
|
||||
$document = new PhpDocument($filename, $fileContents, $index, $parser, $docBlockFactory, $definitionResolver);
|
||||
} catch (\Throwable $e) {
|
||||
$this->markTestSkipped('Baseline parser failed: '. $e->getTraceAsString());
|
||||
}
|
||||
|
||||
if ($document->getStmts() === null) {
|
||||
$this->markTestSkipped('Baseline parser failed: null AST');
|
||||
}
|
||||
|
||||
$expectedRefs = $index->references;
|
||||
$this->filterSkippedReferences($expectedRefs);
|
||||
$expectedDefs = $this->getTestValuesFromDefs($document->getDefinitions());
|
||||
|
||||
$refsAndDefs = array(
|
||||
'references' => json_decode(json_encode($expectedRefs)),
|
||||
'definitions' => json_decode(json_encode($expectedDefs))
|
||||
);
|
||||
|
||||
return $refsAndDefs;
|
||||
}
|
||||
|
||||
private function getActualTestValues($filename, $frameworkName, $fileContents): array {
|
||||
global $parserKind;
|
||||
$parserKind = ParserKind::TOLERANT_PHP_PARSER;
|
||||
|
||||
$index = new Index();
|
||||
$parser = ParserResourceFactory::getParser();
|
||||
$docBlockFactory = DocBlockFactory::createInstance();
|
||||
$definitionResolver = ParserResourceFactory::getDefinitionResolver($index);
|
||||
$definitionResolver = new TolerantDefinitionResolver($index);
|
||||
|
||||
$document = new PhpDocument($filename, $fileContents, $index, $parser, $docBlockFactory, $definitionResolver);
|
||||
|
||||
|
|
Loading…
Reference in New Issue