Uast: resolveCallToDeclaration cleanup

This commit is contained in:
Nicolay Mitropolsky
2019-03-20 20:23:00 +03:00
parent 90894176f9
commit 7b590055f8
14 changed files with 19 additions and 22 deletions
@@ -45,7 +45,7 @@ class KotlinUBinaryExpression(
override val operatorIdentifier: UIdentifier?
get() = KotlinUIdentifier(psi.operationReference.getReferencedNameElement(), this)
override fun resolveOperator() = psi.operationReference.resolveCallToDeclaration(context = this) as? PsiMethod
override fun resolveOperator() = psi.operationReference.resolveCallToDeclaration() as? PsiMethod
override val operator = when (psi.operationToken) {
KtTokens.EQ -> UastBinaryOperator.ASSIGN
@@ -48,7 +48,7 @@ class KotlinUCallableReferenceExpression(
override val resolvedName: String?
get() = (resolve() as? PsiNamedElement)?.name
override fun resolve() = psi.callableReference.resolveCallToDeclaration(this)
override fun resolve() = psi.callableReference.resolveCallToDeclaration()
override fun multiResolve(): Iterable<ResolveResult> = getResolveResultVariants(psi.callableReference)
@@ -45,5 +45,5 @@ class KotlinUCallableReferenceExpression(
override val resolvedName: String?
get() = (resolve() as? PsiNamedElement)?.name
override fun resolve() = psi.callableReference.resolveCallToDeclaration(this)
override fun resolve() = psi.callableReference.resolveCallToDeclaration()
}
@@ -45,7 +45,7 @@ class KotlinUCallableReferenceExpression(
override val resolvedName: String?
get() = (resolve() as? PsiNamedElement)?.name
override fun resolve() = psi.callableReference.resolveCallToDeclaration(this)
override fun resolve() = psi.callableReference.resolveCallToDeclaration()
override fun multiResolve(): Iterable<ResolveResult> = getResolveResultVariants(psi.callableReference)
@@ -60,7 +60,7 @@ class KotlinUObjectLiteralExpression(
psi.typeArguments.map { it.typeReference.toPsiType(this, boxed = true) }
}
override fun resolve() = superClassConstructorCall?.resolveCallToDeclaration(this) as? PsiMethod
override fun resolve() = superClassConstructorCall?.resolveCallToDeclaration() as? PsiMethod
override fun getArgumentForParameter(i: Int): UExpression? =
superClassConstructorCall?.let { it.getResolvedCall(it.analyze()) }?.let { getArgumentExpressionByIndex(i, it, this) }
@@ -73,7 +73,7 @@ class KotlinUObjectLiteralExpression(
override val javaPsi = null
override val sourcePsi = psi
override fun resolve() = (psi.resolveCallToDeclaration(this) as? PsiMethod)?.containingClass
override fun resolve() = (psi.resolveCallToDeclaration() as? PsiMethod)?.containingClass
override val annotations: List<UAnnotation>
get() = emptyList()
@@ -40,7 +40,7 @@ class KotlinUPostfixExpression(
override val operatorIdentifier: UIdentifier?
get() = KotlinUIdentifier(psi.operationReference, this)
override fun resolveOperator() = psi.operationReference.resolveCallToDeclaration(context = this) as? PsiMethod
override fun resolveOperator() = psi.operationReference.resolveCallToDeclaration() as? PsiMethod
override fun resolve(): PsiMethod? = when (psi.operationToken) {
KtTokens.EXCLEXCL -> operand.tryResolve() as? PsiMethod
@@ -34,7 +34,7 @@ class KotlinUPrefixExpression(
override val operatorIdentifier: UIdentifier?
get() = KotlinUIdentifier(psi.operationReference, this)
override fun resolveOperator() = psi.operationReference.resolveCallToDeclaration(context = this) as? PsiMethod
override fun resolveOperator() = psi.operationReference.resolveCallToDeclaration() as? PsiMethod
override val operator = when (psi.operationToken) {
KtTokens.EXCL -> UastPrefixOperator.LOGICAL_NOT
@@ -31,8 +31,8 @@ class KotlinUQualifiedReferenceExpression(
override val receiver by lz { KotlinConverter.convertOrEmpty(psi.receiverExpression, this) }
override val selector by lz { KotlinConverter.convertOrEmpty(psi.selectorExpression, this) }
override val accessType = UastQualifiedExpressionAccessType.SIMPLE
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration(this)
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration()
override val resolvedName: String?
get() = (resolve() as? PsiNamedElement)?.name
@@ -32,8 +32,8 @@ class KotlinUQualifiedReferenceExpression(
override val receiver by lz { KotlinConverter.convertOrEmpty(psi.receiverExpression, this) }
override val selector by lz { KotlinConverter.convertOrEmpty(psi.selectorExpression, this) }
override val accessType = UastQualifiedExpressionAccessType.SIMPLE
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration(this)
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration()
override val resolvedName: String?
get() = (resolve() as? PsiNamedElement)?.name
@@ -35,7 +35,7 @@ class KotlinUSafeQualifiedExpression(
override val resolvedName: String?
get() = (resolve() as? PsiNamedElement)?.name
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration(this)
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration()
override fun multiResolve(): Iterable<ResolveResult> = getResolveResultVariants(psi.selectorExpression)
}
@@ -32,6 +32,6 @@ class KotlinUSafeQualifiedExpression(
override val resolvedName: String?
get() = (resolve() as? PsiNamedElement)?.name
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration(this)
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration()
}
@@ -43,7 +43,7 @@ open class KotlinUSimpleReferenceExpression(
givenParent: UElement?
) : KotlinAbstractUExpression(givenParent), USimpleNameReferenceExpression, KotlinUElementWithType, KotlinEvaluatableUElement {
private val resolvedDeclaration: PsiElement? by lz {
psi.resolveCallToDeclaration(this)?.let { return@lz it }
psi.resolveCallToDeclaration()?.let { return@lz it }
val declarationDescriptor = psi.analyze()[BindingContext.REFERENCE_TARGET, psi] ?: return@lz null
@@ -43,7 +43,7 @@ open class KotlinUSimpleReferenceExpression(
givenParent: UElement?
) : KotlinAbstractUExpression(givenParent), USimpleNameReferenceExpression, KotlinUElementWithType, KotlinEvaluatableUElement {
private val resolvedDeclaration: PsiElement? by lz {
psi.resolveCallToDeclaration(this)?.let { return@lz it }
psi.resolveCallToDeclaration()?.let { return@lz it }
val declarationDescriptor = psi.analyze()[BindingContext.REFERENCE_TARGET, psi] ?: return@lz null
@@ -280,10 +280,7 @@ internal fun PsiElement.getMaybeLightElement(): PsiElement? {
}
}
internal fun KtElement.resolveCallToDeclaration(
context: KotlinAbstractUElement,
resultingDescriptor: DeclarationDescriptor? = null
): PsiElement? {
internal fun KtElement.resolveCallToDeclaration(resultingDescriptor: DeclarationDescriptor? = null): PsiElement? {
val descriptor = resultingDescriptor ?: run {
val resolvedCall = getResolvedCall(analyze()) ?: return null
resolvedCall.resultingDescriptor