fix subscript expression resolution
parent
4653f100a7
commit
1ff1b38ec2
|
@ -121,7 +121,6 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
||||||
|
|
||||||
if ($docBlock !== null) {
|
if ($docBlock !== null) {
|
||||||
$parameterDocBlockTag = $this->getDocBlockTagForParameter($docBlock, $variableName);
|
$parameterDocBlockTag = $this->getDocBlockTagForParameter($docBlock, $variableName);
|
||||||
var_dump($parameterDocBlockTag);
|
|
||||||
return $parameterDocBlockTag !== null ? $parameterDocBlockTag->getDescription()->render() : null;
|
return $parameterDocBlockTag !== null ? $parameterDocBlockTag->getDescription()->render() : null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -640,17 +639,19 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
||||||
|| ($scopedAccess = $expr) instanceof Tolerant\Node\Expression\ScopedPropertyAccessExpression
|
|| ($scopedAccess = $expr) instanceof Tolerant\Node\Expression\ScopedPropertyAccessExpression
|
||||||
) {
|
) {
|
||||||
$classType = $this->resolveClassNameToType($scopedAccess->scopeResolutionQualifier);
|
$classType = $this->resolveClassNameToType($scopedAccess->scopeResolutionQualifier);
|
||||||
|
var_dump($classType);
|
||||||
if (!($classType instanceof Types\Object_) || $classType->getFqsen() === null /*|| $expr->name instanceof Tolerant\Node\Expression*/) {
|
if (!($classType instanceof Types\Object_) || $classType->getFqsen() === null /*|| $expr->name instanceof Tolerant\Node\Expression*/) {
|
||||||
return new Types\Mixed;
|
return new Types\Mixed;
|
||||||
}
|
}
|
||||||
$fqn = substr((string)$classType->getFqsen(), 1) . '::';
|
$fqn = substr((string)$classType->getFqsen(), 1) . '::';
|
||||||
if ($expr instanceof Tolerant\Node\Expression\ScopedPropertyAccessExpression && $expr->memberName instanceof Tolerant\Node\Expression\Variable) {
|
// if ($expr instanceof Tolerant\Node\Expression\ScopedPropertyAccessExpression && $expr->memberName instanceof Tolerant\Node\Expression\Variable) {
|
||||||
$fqn .= '$';
|
// $fqn .= '$';
|
||||||
}
|
// }
|
||||||
$fqn .= $scopedAccess->memberName->getText() ?? $scopedAccess->memberName->getText($expr->getFileContents()); // TODO is there a cleaner way to do this?
|
$fqn .= $scopedAccess->memberName->getText() ?? $scopedAccess->memberName->getText($expr->getFileContents()); // TODO is there a cleaner way to do this?
|
||||||
if ($expr instanceof Tolerant\Node\Expression\CallExpression) {
|
if ($expr instanceof Tolerant\Node\Expression\CallExpression) {
|
||||||
$fqn .= '()';
|
$fqn .= '()';
|
||||||
}
|
}
|
||||||
|
var_dump($fqn);
|
||||||
$def = $this->index->getDefinition($fqn);
|
$def = $this->index->getDefinition($fqn);
|
||||||
if ($def === null) {
|
if ($def === null) {
|
||||||
return new Types\Mixed;
|
return new Types\Mixed;
|
||||||
|
@ -783,7 +784,9 @@ class TolerantDefinitionResolver implements DefinitionResolverInterface
|
||||||
return new Types\Array_($valueType, $keyType);
|
return new Types\Array_($valueType, $keyType);
|
||||||
}
|
}
|
||||||
if ($expr instanceof Tolerant\Node\Expression\SubscriptExpression) {
|
if ($expr instanceof Tolerant\Node\Expression\SubscriptExpression) {
|
||||||
|
var_dump("SUBSCRIPT");
|
||||||
$varType = $this->resolveExpressionNodeToType($expr->postfixExpression);
|
$varType = $this->resolveExpressionNodeToType($expr->postfixExpression);
|
||||||
|
var_dump($varType);
|
||||||
if (!($varType instanceof Types\Array_)) {
|
if (!($varType instanceof Types\Array_)) {
|
||||||
return new Types\Mixed;
|
return new Types\Mixed;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue