1
0
Fork 0

update definition resolver interfaces

pull/357/head
Sara Itani 2017-03-01 16:01:06 -08:00
parent 591ecbd7d3
commit b1eb43516d
3 changed files with 40 additions and 30 deletions

View File

@ -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

View File

@ -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);
}

View File

@ -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