Uast: resolveCallToDeclaration cleanup
This commit is contained in:
+1
-1
@@ -45,7 +45,7 @@ class KotlinUBinaryExpression(
|
|||||||
override val operatorIdentifier: UIdentifier?
|
override val operatorIdentifier: UIdentifier?
|
||||||
get() = KotlinUIdentifier(psi.operationReference.getReferencedNameElement(), this)
|
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) {
|
override val operator = when (psi.operationToken) {
|
||||||
KtTokens.EQ -> UastBinaryOperator.ASSIGN
|
KtTokens.EQ -> UastBinaryOperator.ASSIGN
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ class KotlinUCallableReferenceExpression(
|
|||||||
override val resolvedName: String?
|
override val resolvedName: String?
|
||||||
get() = (resolve() as? PsiNamedElement)?.name
|
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)
|
override fun multiResolve(): Iterable<ResolveResult> = getResolveResultVariants(psi.callableReference)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -45,5 +45,5 @@ class KotlinUCallableReferenceExpression(
|
|||||||
override val resolvedName: String?
|
override val resolvedName: String?
|
||||||
get() = (resolve() as? PsiNamedElement)?.name
|
get() = (resolve() as? PsiNamedElement)?.name
|
||||||
|
|
||||||
override fun resolve() = psi.callableReference.resolveCallToDeclaration(this)
|
override fun resolve() = psi.callableReference.resolveCallToDeclaration()
|
||||||
}
|
}
|
||||||
+1
-1
@@ -45,7 +45,7 @@ class KotlinUCallableReferenceExpression(
|
|||||||
override val resolvedName: String?
|
override val resolvedName: String?
|
||||||
get() = (resolve() as? PsiNamedElement)?.name
|
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)
|
override fun multiResolve(): Iterable<ResolveResult> = getResolveResultVariants(psi.callableReference)
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -60,7 +60,7 @@ class KotlinUObjectLiteralExpression(
|
|||||||
psi.typeArguments.map { it.typeReference.toPsiType(this, boxed = true) }
|
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? =
|
override fun getArgumentForParameter(i: Int): UExpression? =
|
||||||
superClassConstructorCall?.let { it.getResolvedCall(it.analyze()) }?.let { getArgumentExpressionByIndex(i, it, this) }
|
superClassConstructorCall?.let { it.getResolvedCall(it.analyze()) }?.let { getArgumentExpressionByIndex(i, it, this) }
|
||||||
@@ -73,7 +73,7 @@ class KotlinUObjectLiteralExpression(
|
|||||||
override val javaPsi = null
|
override val javaPsi = null
|
||||||
override val sourcePsi = psi
|
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>
|
override val annotations: List<UAnnotation>
|
||||||
get() = emptyList()
|
get() = emptyList()
|
||||||
|
|||||||
+1
-1
@@ -40,7 +40,7 @@ class KotlinUPostfixExpression(
|
|||||||
override val operatorIdentifier: UIdentifier?
|
override val operatorIdentifier: UIdentifier?
|
||||||
get() = KotlinUIdentifier(psi.operationReference, this)
|
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) {
|
override fun resolve(): PsiMethod? = when (psi.operationToken) {
|
||||||
KtTokens.EXCLEXCL -> operand.tryResolve() as? PsiMethod
|
KtTokens.EXCLEXCL -> operand.tryResolve() as? PsiMethod
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ class KotlinUPrefixExpression(
|
|||||||
override val operatorIdentifier: UIdentifier?
|
override val operatorIdentifier: UIdentifier?
|
||||||
get() = KotlinUIdentifier(psi.operationReference, this)
|
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) {
|
override val operator = when (psi.operationToken) {
|
||||||
KtTokens.EXCL -> UastPrefixOperator.LOGICAL_NOT
|
KtTokens.EXCL -> UastPrefixOperator.LOGICAL_NOT
|
||||||
|
|||||||
+1
-1
@@ -32,7 +32,7 @@ class KotlinUQualifiedReferenceExpression(
|
|||||||
override val selector by lz { KotlinConverter.convertOrEmpty(psi.selectorExpression, this) }
|
override val selector by lz { KotlinConverter.convertOrEmpty(psi.selectorExpression, this) }
|
||||||
override val accessType = UastQualifiedExpressionAccessType.SIMPLE
|
override val accessType = UastQualifiedExpressionAccessType.SIMPLE
|
||||||
|
|
||||||
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration(this)
|
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration()
|
||||||
|
|
||||||
override val resolvedName: String?
|
override val resolvedName: String?
|
||||||
get() = (resolve() as? PsiNamedElement)?.name
|
get() = (resolve() as? PsiNamedElement)?.name
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@ class KotlinUQualifiedReferenceExpression(
|
|||||||
override val selector by lz { KotlinConverter.convertOrEmpty(psi.selectorExpression, this) }
|
override val selector by lz { KotlinConverter.convertOrEmpty(psi.selectorExpression, this) }
|
||||||
override val accessType = UastQualifiedExpressionAccessType.SIMPLE
|
override val accessType = UastQualifiedExpressionAccessType.SIMPLE
|
||||||
|
|
||||||
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration(this)
|
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration()
|
||||||
|
|
||||||
override val resolvedName: String?
|
override val resolvedName: String?
|
||||||
get() = (resolve() as? PsiNamedElement)?.name
|
get() = (resolve() as? PsiNamedElement)?.name
|
||||||
|
|||||||
+1
-1
@@ -36,6 +36,6 @@ class KotlinUSafeQualifiedExpression(
|
|||||||
override val resolvedName: String?
|
override val resolvedName: String?
|
||||||
get() = (resolve() as? PsiNamedElement)?.name
|
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)
|
override fun multiResolve(): Iterable<ResolveResult> = getResolveResultVariants(psi.selectorExpression)
|
||||||
}
|
}
|
||||||
+1
-1
@@ -33,5 +33,5 @@ class KotlinUSafeQualifiedExpression(
|
|||||||
override val resolvedName: String?
|
override val resolvedName: String?
|
||||||
get() = (resolve() as? PsiNamedElement)?.name
|
get() = (resolve() as? PsiNamedElement)?.name
|
||||||
|
|
||||||
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration(this)
|
override fun resolve() = psi.selectorExpression?.resolveCallToDeclaration()
|
||||||
}
|
}
|
||||||
+1
-1
@@ -43,7 +43,7 @@ open class KotlinUSimpleReferenceExpression(
|
|||||||
givenParent: UElement?
|
givenParent: UElement?
|
||||||
) : KotlinAbstractUExpression(givenParent), USimpleNameReferenceExpression, KotlinUElementWithType, KotlinEvaluatableUElement {
|
) : KotlinAbstractUExpression(givenParent), USimpleNameReferenceExpression, KotlinUElementWithType, KotlinEvaluatableUElement {
|
||||||
private val resolvedDeclaration: PsiElement? by lz {
|
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
|
val declarationDescriptor = psi.analyze()[BindingContext.REFERENCE_TARGET, psi] ?: return@lz null
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -43,7 +43,7 @@ open class KotlinUSimpleReferenceExpression(
|
|||||||
givenParent: UElement?
|
givenParent: UElement?
|
||||||
) : KotlinAbstractUExpression(givenParent), USimpleNameReferenceExpression, KotlinUElementWithType, KotlinEvaluatableUElement {
|
) : KotlinAbstractUExpression(givenParent), USimpleNameReferenceExpression, KotlinUElementWithType, KotlinEvaluatableUElement {
|
||||||
private val resolvedDeclaration: PsiElement? by lz {
|
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
|
val declarationDescriptor = psi.analyze()[BindingContext.REFERENCE_TARGET, psi] ?: return@lz null
|
||||||
|
|
||||||
|
|||||||
+1
-4
@@ -280,10 +280,7 @@ internal fun PsiElement.getMaybeLightElement(): PsiElement? {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun KtElement.resolveCallToDeclaration(
|
internal fun KtElement.resolveCallToDeclaration(resultingDescriptor: DeclarationDescriptor? = null): PsiElement? {
|
||||||
context: KotlinAbstractUElement,
|
|
||||||
resultingDescriptor: DeclarationDescriptor? = null
|
|
||||||
): PsiElement? {
|
|
||||||
val descriptor = resultingDescriptor ?: run {
|
val descriptor = resultingDescriptor ?: run {
|
||||||
val resolvedCall = getResolvedCall(analyze()) ?: return null
|
val resolvedCall = getResolvedCall(analyze()) ?: return null
|
||||||
resolvedCall.resultingDescriptor
|
resolvedCall.resultingDescriptor
|
||||||
|
|||||||
Reference in New Issue
Block a user