update definition resolver interfaces
parent
591ecbd7d3
commit
b1eb43516d
|
@ -42,7 +42,7 @@ class DefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node
|
||||
* @return string
|
||||
*/
|
||||
public function getDeclarationLineFromNode(Node $node): string
|
||||
public function getDeclarationLineFromNode($node): string
|
||||
{
|
||||
if ($node instanceof Node\Stmt\PropertyProperty || $node instanceof Node\Const_) {
|
||||
// Properties and constants can have multiple declarations
|
||||
|
@ -70,7 +70,7 @@ class DefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDocumentationFromNode(Node $node)
|
||||
public function getDocumentationFromNode($node)
|
||||
{
|
||||
if ($node instanceof Node\Stmt\PropertyProperty || $node instanceof Node\Const_) {
|
||||
$node = $node->getAttribute('parentNode');
|
||||
|
@ -101,7 +101,7 @@ class DefinitionResolver implements DefinitionResolverInterface
|
|||
* @param string $fqn
|
||||
* @return Definition
|
||||
*/
|
||||
public function createDefinitionFromNode(Node $node, string $fqn = null): Definition
|
||||
public function createDefinitionFromNode($node, string $fqn = null): Definition
|
||||
{
|
||||
$parent = $node->getAttribute('parentNode');
|
||||
$def = new Definition;
|
||||
|
@ -141,7 +141,7 @@ class DefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node Any reference node
|
||||
* @return Definition|null
|
||||
*/
|
||||
public function resolveReferenceNodeToDefinition(Node $node)
|
||||
public function resolveReferenceNodeToDefinition($node)
|
||||
{
|
||||
// Variables are not indexed globally, as they stay in the file scope anyway
|
||||
if ($node instanceof Node\Expr\Variable) {
|
||||
|
@ -177,7 +177,7 @@ class DefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node
|
||||
* @return string|null
|
||||
*/
|
||||
public function resolveReferenceNodeToFqn(Node $node)
|
||||
public function resolveReferenceNodeToFqn($node)
|
||||
{
|
||||
$parent = $node->getAttribute('parentNode');
|
||||
|
||||
|
@ -393,7 +393,7 @@ class DefinitionResolver implements DefinitionResolverInterface
|
|||
* @param \PhpParser\Node\Expr $expr
|
||||
* @return \phpDocumentor\Reflection\Type
|
||||
*/
|
||||
public function resolveExpressionNodeToType(Node\Expr $expr): Type
|
||||
public function resolveExpressionNodeToType($expr): Type
|
||||
{
|
||||
if ($expr instanceof Node\Expr\Variable || $expr instanceof Node\Expr\ClosureUse) {
|
||||
if ($expr instanceof Node\Expr\Variable && $expr->name === 'this') {
|
||||
|
@ -691,7 +691,7 @@ class DefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node
|
||||
* @return \phpDocumentor\Reflection\Type|null
|
||||
*/
|
||||
public function getTypeFromNode(Node $node)
|
||||
public function getTypeFromNode($node)
|
||||
{
|
||||
if ($node instanceof Node\Param) {
|
||||
// Parameters
|
||||
|
@ -798,7 +798,7 @@ class DefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node
|
||||
* @return string|null
|
||||
*/
|
||||
public static function getDefinedFqn(Node $node)
|
||||
public static function getDefinedFqn($node)
|
||||
{
|
||||
$parent = $node->getAttribute('parentNode');
|
||||
// Anonymous classes don't count as a definition
|
||||
|
|
|
@ -4,59 +4,60 @@ 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 $node
|
||||
* @param Node | Tolerant\Node $node
|
||||
* @return string
|
||||
*/
|
||||
public function getDeclarationLineFromNode(Node $node) : string;
|
||||
public function getDeclarationLineFromNode($node) : string;
|
||||
|
||||
/**
|
||||
* Gets the documentation string for a node, if it has one
|
||||
*
|
||||
* @param Node $node
|
||||
* @param Node | Tolerant\Node $node
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDocumentationFromNode(Node $node);
|
||||
public function getDocumentationFromNode($node);
|
||||
|
||||
/**
|
||||
* Create a Definition for a definition node
|
||||
*
|
||||
* @param Node $node
|
||||
* @param Node | Tolerant\Node $node
|
||||
* @param string $fqn
|
||||
* @return Definition
|
||||
*/
|
||||
public function createDefinitionFromNode(Node $node, string $fqn = null) : Definition;
|
||||
public function createDefinitionFromNode($node, string $fqn = null) : Definition;
|
||||
|
||||
/**
|
||||
* Given any node, returns the Definition object of the symbol that is referenced
|
||||
*
|
||||
* @param Node $node Any reference node
|
||||
* @param Node | Tolerant\Node $node Any reference node
|
||||
* @return Definition|null
|
||||
*/
|
||||
public function resolveReferenceNodeToDefinition(Node $node);
|
||||
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 $node
|
||||
* @param Node | Tolerant\Node $node
|
||||
* @return string|null
|
||||
*/
|
||||
public function resolveReferenceNodeToFqn(Node $node);
|
||||
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 $expr
|
||||
* @param \PhpParser\Node\Expr | Tolerant\Node $expr
|
||||
* @return \phpDocumentor\Reflection\Type
|
||||
*/
|
||||
public function resolveExpressionNodeToType(Node\Expr $expr) : Type;
|
||||
public function resolveExpressionNodeToType($expr) : Type;
|
||||
|
||||
/**
|
||||
* Returns the type a reference to this symbol will resolve to.
|
||||
|
@ -69,8 +70,17 @@ interface DefinitionResolverInterface
|
|||
* If it is unknown, will be Types\Mixed.
|
||||
* Returns null if the node does not have a type.
|
||||
*
|
||||
* @param Node $node
|
||||
* @param Node | Tolerant\Node $node
|
||||
* @return \phpDocumentor\Reflection\Type|null
|
||||
*/
|
||||
public function getTypeFromNode(Node $node);
|
||||
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);
|
||||
}
|
|
@ -42,7 +42,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node
|
||||
* @return string
|
||||
*/
|
||||
public function getDeclarationLineFromNode(Node $node): string
|
||||
public function getDeclarationLineFromNode($node): string
|
||||
{
|
||||
if ($node instanceof Node\Stmt\PropertyProperty || $node instanceof Node\Const_) {
|
||||
// Properties and constants can have multiple declarations
|
||||
|
@ -70,7 +70,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDocumentationFromNode(Node $node)
|
||||
public function getDocumentationFromNode($node)
|
||||
{
|
||||
if ($node instanceof Node\Stmt\PropertyProperty || $node instanceof Node\Const_) {
|
||||
$node = $node->getAttribute('parentNode');
|
||||
|
@ -101,7 +101,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
* @param string $fqn
|
||||
* @return Definition
|
||||
*/
|
||||
public function createDefinitionFromNode(Node $node, string $fqn = null): Definition
|
||||
public function createDefinitionFromNode($node, string $fqn = null): Definition
|
||||
{
|
||||
$parent = $node->getAttribute('parentNode');
|
||||
$def = new Definition;
|
||||
|
@ -141,7 +141,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node Any reference node
|
||||
* @return Definition|null
|
||||
*/
|
||||
public function resolveReferenceNodeToDefinition(Node $node)
|
||||
public function resolveReferenceNodeToDefinition($node)
|
||||
{
|
||||
// Variables are not indexed globally, as they stay in the file scope anyway
|
||||
if ($node instanceof Node\Expr\Variable) {
|
||||
|
@ -177,7 +177,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node
|
||||
* @return string|null
|
||||
*/
|
||||
public function resolveReferenceNodeToFqn(Node $node)
|
||||
public function resolveReferenceNodeToFqn($node)
|
||||
{
|
||||
$parent = $node->getAttribute('parentNode');
|
||||
|
||||
|
@ -393,7 +393,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
* @param \PhpParser\Node\Expr $expr
|
||||
* @return \phpDocumentor\Reflection\Type
|
||||
*/
|
||||
public function resolveExpressionNodeToType(Node\Expr $expr): Type
|
||||
public function resolveExpressionNodeToType($expr): Type
|
||||
{
|
||||
if ($expr instanceof Node\Expr\Variable || $expr instanceof Node\Expr\ClosureUse) {
|
||||
if ($expr instanceof Node\Expr\Variable && $expr->name === 'this') {
|
||||
|
@ -691,7 +691,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node
|
||||
* @return \phpDocumentor\Reflection\Type|null
|
||||
*/
|
||||
public function getTypeFromNode(Node $node)
|
||||
public function getTypeFromNode($node)
|
||||
{
|
||||
if ($node instanceof Node\Param) {
|
||||
// Parameters
|
||||
|
@ -798,7 +798,7 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
|||
* @param Node $node
|
||||
* @return string|null
|
||||
*/
|
||||
public static function getDefinedFqn(Node $node)
|
||||
public static function getDefinedFqn($node)
|
||||
{
|
||||
$parent = $node->getAttribute('parentNode');
|
||||
// Anonymous classes don't count as a definition
|
||||
|
|
Loading…
Reference in New Issue