From df0e2dd50a1746456547f4fc0f638cab887fdcfc Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 6 Feb 2019 10:55:01 +0300 Subject: [PATCH] Fix for canBeResolvedViaImport: check isExtension earlier This commit fixes mistake in d202e96e and fixes broken tests Related to KT-29713 --- .../org/jetbrains/kotlin/idea/references/referenceUtil.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt index e2ddfd7dd4d..dcbd12b8d24 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/referenceUtil.kt @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.idea.references -import com.intellij.ide.scratch.ScratchUtil import com.intellij.psi.* import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.builtins.isExtensionFunctionType @@ -264,13 +263,13 @@ fun KtExpression.readWriteAccessWithFullExpression(useResolveForReadWrite: Boole fun KtReference.canBeResolvedViaImport(target: DeclarationDescriptor, bindingContext: BindingContext): Boolean { if (this is KDocReference) return element.getQualifiedName().size == 1 - val referenceExpression = this.element as? KtNameReferenceExpression ?: return false - return referenceExpression.canBeResolvedViaImport(target, bindingContext) + return element.canBeResolvedViaImport(target, bindingContext) } -fun KtSimpleNameExpression.canBeResolvedViaImport(target: DeclarationDescriptor, bindingContext: BindingContext): Boolean { +fun KtElement.canBeResolvedViaImport(target: DeclarationDescriptor, bindingContext: BindingContext): Boolean { if (!target.canBeReferencedViaImport()) return false if (target.isExtension) return true // assume that any type of reference can use imports when resolved to extension + if (this !is KtNameReferenceExpression) return false val callTypeAndReceiver = CallTypeAndReceiver.detect(this) if (callTypeAndReceiver.receiver != null) {