Rename $stmts to $sourceFileNode everywhere
The root node is now a SourceFileNode, not an arraypull/398/head
parent
4c1d7bd1bc
commit
fe7e9d5800
|
@ -56,9 +56,9 @@ class PhpDocument
|
||||||
/**
|
/**
|
||||||
* The AST of the document
|
* The AST of the document
|
||||||
*
|
*
|
||||||
* @var Node
|
* @var Node\SourceFileNode
|
||||||
*/
|
*/
|
||||||
private $stmts;
|
private $sourceFileNode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Map from fully qualified name (FQN) to Definition
|
* Map from fully qualified name (FQN) to Definition
|
||||||
|
@ -172,7 +172,7 @@ class PhpDocument
|
||||||
$this->index->addReferenceUri($fqn, $this->uri);
|
$this->index->addReferenceUri($fqn, $this->uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->stmts = $treeAnalyzer->getStmts();
|
$this->sourceFileNode = $treeAnalyzer->getSourceFileNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -221,11 +221,11 @@ class PhpDocument
|
||||||
/**
|
/**
|
||||||
* Returns the AST of the document
|
* Returns the AST of the document
|
||||||
*
|
*
|
||||||
* @return Node | null
|
* @return Node\SourceFileNode|null
|
||||||
*/
|
*/
|
||||||
public function getStmts()
|
public function getSourceFileNode()
|
||||||
{
|
{
|
||||||
return $this->stmts;
|
return $this->sourceFileNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -236,12 +236,12 @@ class PhpDocument
|
||||||
*/
|
*/
|
||||||
public function getNodeAtPosition(Position $position)
|
public function getNodeAtPosition(Position $position)
|
||||||
{
|
{
|
||||||
if ($this->stmts === null) {
|
if ($this->sourceFileNode === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$offset = $position->toOffset($this->stmts->getFileContents());
|
$offset = $position->toOffset($this->sourceFileNode->getFileContents());
|
||||||
$node = $this->stmts->getDescendantNodeAtPosition($offset);
|
$node = $this->sourceFileNode->getDescendantNodeAtPosition($offset);
|
||||||
if ($node !== null && $node->getStart() > $offset) {
|
if ($node !== null && $node->getStart() > $offset) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,8 +15,8 @@ class TreeAnalyzer
|
||||||
/** @var PhpParser\Parser */
|
/** @var PhpParser\Parser */
|
||||||
private $parser;
|
private $parser;
|
||||||
|
|
||||||
/** @var Node */
|
/** @var Node\SourceFileNode */
|
||||||
private $stmts;
|
private $sourceFileNode;
|
||||||
|
|
||||||
/** @var Diagnostic[] */
|
/** @var Diagnostic[] */
|
||||||
private $diagnostics;
|
private $diagnostics;
|
||||||
|
@ -46,17 +46,17 @@ class TreeAnalyzer
|
||||||
$this->docBlockFactory = $docBlockFactory;
|
$this->docBlockFactory = $docBlockFactory;
|
||||||
$this->definitionResolver = $definitionResolver;
|
$this->definitionResolver = $definitionResolver;
|
||||||
$this->content = $content;
|
$this->content = $content;
|
||||||
$this->stmts = $this->parser->parseSourceFile($content, $uri);
|
$this->sourceFileNode = $this->parser->parseSourceFile($content, $uri);
|
||||||
|
|
||||||
// TODO - docblock errors
|
// TODO - docblock errors
|
||||||
|
|
||||||
$this->collectDefinitionsAndReferences($this->stmts);
|
$this->collectDefinitionsAndReferences($this->sourceFileNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function collectDefinitionsAndReferences(Node $stmts)
|
private function collectDefinitionsAndReferences(Node $sourceFileNode)
|
||||||
{
|
{
|
||||||
foreach ($stmts::CHILD_NAMES as $name) {
|
foreach ($sourceFileNode::CHILD_NAMES as $name) {
|
||||||
$node = $stmts->$name;
|
$node = $sourceFileNode->$name;
|
||||||
|
|
||||||
if ($node === null) {
|
if ($node === null) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -200,10 +200,10 @@ class TreeAnalyzer
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Node[]
|
* @return Node\SourceFileNode
|
||||||
*/
|
*/
|
||||||
public function getStmts()
|
public function getSourceFileNode()
|
||||||
{
|
{
|
||||||
return $this->stmts;
|
return $this->sourceFileNode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,11 +14,11 @@ class DefinitionResolverTest extends TestCase
|
||||||
{
|
{
|
||||||
$parser = new PhpParser\Parser;
|
$parser = new PhpParser\Parser;
|
||||||
$doc = new MockPhpDocument;
|
$doc = new MockPhpDocument;
|
||||||
$stmts = $parser->parseSourceFile("<?php\ndefine('TEST_DEFINE', true);", $doc->getUri());
|
$sourceFileNode = $parser->parseSourceFile("<?php\ndefine('TEST_DEFINE', true);", $doc->getUri());
|
||||||
|
|
||||||
$index = new Index;
|
$index = new Index;
|
||||||
$definitionResolver = new DefinitionResolver($index);
|
$definitionResolver = new DefinitionResolver($index);
|
||||||
$def = $definitionResolver->createDefinitionFromNode($stmts->statementList[1]->expression, '\TEST_DEFINE');
|
$def = $definitionResolver->createDefinitionFromNode($sourceFileNode->statementList[1]->expression, '\TEST_DEFINE');
|
||||||
|
|
||||||
$this->assertInstanceOf(\phpDocumentor\Reflection\Types\Boolean::class, $def->type);
|
$this->assertInstanceOf(\phpDocumentor\Reflection\Types\Boolean::class, $def->type);
|
||||||
}
|
}
|
||||||
|
@ -27,11 +27,11 @@ class DefinitionResolverTest extends TestCase
|
||||||
{
|
{
|
||||||
$parser = new PhpParser\Parser;
|
$parser = new PhpParser\Parser;
|
||||||
$doc = new MockPhpDocument;
|
$doc = new MockPhpDocument;
|
||||||
$stmts = $parser->parseSourceFile("<?php\ndefine('TEST_DEFINE', true);", $doc->getUri());
|
$sourceFileNode = $parser->parseSourceFile("<?php\ndefine('TEST_DEFINE', true);", $doc->getUri());
|
||||||
|
|
||||||
$index = new Index;
|
$index = new Index;
|
||||||
$definitionResolver = new DefinitionResolver($index);
|
$definitionResolver = new DefinitionResolver($index);
|
||||||
$type = $definitionResolver->getTypeFromNode($stmts->statementList[1]->expression);
|
$type = $definitionResolver->getTypeFromNode($sourceFileNode->statementList[1]->expression);
|
||||||
|
|
||||||
$this->assertInstanceOf(\phpDocumentor\Reflection\Types\Boolean::class, $type);
|
$this->assertInstanceOf(\phpDocumentor\Reflection\Types\Boolean::class, $type);
|
||||||
}
|
}
|
||||||
|
@ -41,11 +41,11 @@ class DefinitionResolverTest extends TestCase
|
||||||
// define('XXX') (only one argument) must not introduce a new symbol
|
// define('XXX') (only one argument) must not introduce a new symbol
|
||||||
$parser = new PhpParser\Parser;
|
$parser = new PhpParser\Parser;
|
||||||
$doc = new MockPhpDocument;
|
$doc = new MockPhpDocument;
|
||||||
$stmts = $parser->parseSourceFile("<?php\ndefine('TEST_DEFINE');", $doc->getUri());
|
$sourceFileNode = $parser->parseSourceFile("<?php\ndefine('TEST_DEFINE');", $doc->getUri());
|
||||||
|
|
||||||
$index = new Index;
|
$index = new Index;
|
||||||
$definitionResolver = new DefinitionResolver($index);
|
$definitionResolver = new DefinitionResolver($index);
|
||||||
$fqn = $definitionResolver->getDefinedFqn($stmts->statementList[1]->expression);
|
$fqn = $definitionResolver->getDefinedFqn($sourceFileNode->statementList[1]->expression);
|
||||||
|
|
||||||
$this->assertNull($fqn);
|
$this->assertNull($fqn);
|
||||||
}
|
}
|
||||||
|
@ -54,11 +54,11 @@ class DefinitionResolverTest extends TestCase
|
||||||
{
|
{
|
||||||
$parser = new PhpParser\Parser;
|
$parser = new PhpParser\Parser;
|
||||||
$doc = new MockPhpDocument;
|
$doc = new MockPhpDocument;
|
||||||
$stmts = $parser->parseSourceFile("<?php\ndefine('TEST_DEFINE', true);", $doc->getUri());
|
$sourceFileNode = $parser->parseSourceFile("<?php\ndefine('TEST_DEFINE', true);", $doc->getUri());
|
||||||
|
|
||||||
$index = new Index;
|
$index = new Index;
|
||||||
$definitionResolver = new DefinitionResolver($index);
|
$definitionResolver = new DefinitionResolver($index);
|
||||||
$fqn = $definitionResolver->getDefinedFqn($stmts->statementList[1]->expression);
|
$fqn = $definitionResolver->getDefinedFqn($sourceFileNode->statementList[1]->expression);
|
||||||
|
|
||||||
$this->assertEquals('TEST_DEFINE', $fqn);
|
$this->assertEquals('TEST_DEFINE', $fqn);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue