Uast: replacing most usages of resolveCallToDeclaration with resolveToPsiMethod
This commit is contained in:
+1
-1
@@ -48,7 +48,7 @@ class KotlinUBinaryExpression(
|
||||
override val operatorIdentifier: UIdentifier?
|
||||
get() = KotlinUIdentifier(sourcePsi.operationReference.getReferencedNameElement(), this)
|
||||
|
||||
override fun resolveOperator() = sourcePsi.operationReference.resolveCallToDeclaration() as? PsiMethod
|
||||
override fun resolveOperator(): PsiMethod? = resolveToPsiMethod(sourcePsi)
|
||||
|
||||
override val operator = when (sourcePsi.operationToken) {
|
||||
KtTokens.EQ -> UastBinaryOperator.ASSIGN
|
||||
|
||||
+2
-3
@@ -179,7 +179,7 @@ class KotlinUFunctionCallExpression(
|
||||
return variants.flatMap {
|
||||
when (val source = it.toSource()) {
|
||||
is KtClass -> source.toLightClass()?.constructors?.asSequence().orEmpty()
|
||||
else -> resolveSource(sourcePsi, it, source)?.let { sequenceOf(it) }.orEmpty()
|
||||
else -> resolveToPsiMethod(sourcePsi, it, source)?.let { sequenceOf(it) }.orEmpty()
|
||||
}
|
||||
}.map { TypedResolveResult(it) }.asIterable()
|
||||
})
|
||||
@@ -189,8 +189,7 @@ class KotlinUFunctionCallExpression(
|
||||
|
||||
override fun resolve(): PsiMethod? {
|
||||
val descriptor = resolvedCall?.resultingDescriptor ?: return null
|
||||
val source = descriptor.toSource()
|
||||
return resolveSource(sourcePsi, descriptor, source)
|
||||
return resolveToPsiMethod(sourcePsi, descriptor)
|
||||
}
|
||||
|
||||
override fun accept(visitor: UastVisitor) {
|
||||
|
||||
+2
-2
@@ -62,7 +62,7 @@ class KotlinUObjectLiteralExpression(
|
||||
psi.typeArguments.map { it.typeReference.toPsiType(this, boxed = true) }
|
||||
}
|
||||
|
||||
override fun resolve() = superClassConstructorCall?.resolveCallToDeclaration() as? PsiMethod
|
||||
override fun resolve() = superClassConstructorCall?.let { resolveToPsiMethod(it) }
|
||||
|
||||
override fun getArgumentForParameter(i: Int): UExpression? =
|
||||
superClassConstructorCall?.let { it.getResolvedCall(it.analyze()) }?.let { getArgumentExpressionByIndex(i, it, this) }
|
||||
@@ -75,7 +75,7 @@ class KotlinUObjectLiteralExpression(
|
||||
override val javaPsi: PsiElement? get() = null
|
||||
override val psi: KtSuperTypeCallEntry get() = sourcePsi
|
||||
|
||||
override fun resolve() = (sourcePsi.resolveCallToDeclaration() as? PsiMethod)?.containingClass
|
||||
override fun resolve() = resolveToPsiMethod(sourcePsi)?.containingClass
|
||||
|
||||
override val annotations: List<UAnnotation>
|
||||
get() = emptyList()
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ class KotlinUPostfixExpression(
|
||||
override val operatorIdentifier: UIdentifier?
|
||||
get() = KotlinUIdentifier(sourcePsi.operationReference, this)
|
||||
|
||||
override fun resolveOperator() = sourcePsi.operationReference.resolveCallToDeclaration() as? PsiMethod
|
||||
override fun resolveOperator(): PsiMethod? = resolveToPsiMethod(sourcePsi)
|
||||
|
||||
override fun resolve(): PsiMethod? = when (sourcePsi.operationToken) {
|
||||
KtTokens.EXCLEXCL -> operand.tryResolve() as? PsiMethod
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ class KotlinUPrefixExpression(
|
||||
override val operatorIdentifier: UIdentifier?
|
||||
get() = KotlinUIdentifier(sourcePsi.operationReference, this)
|
||||
|
||||
override fun resolveOperator() = sourcePsi.operationReference.resolveCallToDeclaration() as? PsiMethod
|
||||
override fun resolveOperator(): PsiMethod? = resolveToPsiMethod(sourcePsi)
|
||||
|
||||
override val operator = when (sourcePsi.operationToken) {
|
||||
KtTokens.EXCL -> UastPrefixOperator.LOGICAL_NOT
|
||||
|
||||
+1
-4
@@ -187,10 +187,7 @@ open class KotlinUSimpleReferenceExpression(
|
||||
override val kind: UastCallKind
|
||||
get() = UastCallKind.METHOD_CALL
|
||||
|
||||
override fun resolve(): PsiMethod? {
|
||||
val source = accessorDescriptor.toSource()
|
||||
return resolveSource(sourcePsi, accessorDescriptor, source)
|
||||
}
|
||||
override fun resolve(): PsiMethod? = resolveToPsiMethod(sourcePsi, accessorDescriptor)
|
||||
}
|
||||
|
||||
private fun KtExpression.readWriteAccess(): ReferenceAccess {
|
||||
|
||||
+8
-1
@@ -96,7 +96,14 @@ internal fun DeclarationDescriptor.toSource(): PsiElement? {
|
||||
}
|
||||
}
|
||||
|
||||
internal fun resolveSource(context: KtElement, descriptor: DeclarationDescriptor, source: PsiElement?): PsiMethod? {
|
||||
internal fun resolveToPsiMethod(context: KtElement): PsiMethod? =
|
||||
context.getResolvedCall(context.analyze())?.resultingDescriptor?.let { resolveToPsiMethod(context, it) }
|
||||
|
||||
internal fun resolveToPsiMethod(
|
||||
context: KtElement,
|
||||
descriptor: DeclarationDescriptor,
|
||||
source: PsiElement? = descriptor.toSource()
|
||||
): PsiMethod? {
|
||||
|
||||
if (descriptor is ConstructorDescriptor && descriptor.isPrimary
|
||||
&& source is KtClassOrObject && source.primaryConstructor == null
|
||||
|
||||
Reference in New Issue
Block a user