Used KtReference.resolvesByNames instead of own code
This commit is contained in:
@@ -285,28 +285,6 @@ public class KtPsiUtil {
|
|||||||
return entries.size() > 1 && entries.get(entries.size() - 1) == declaration;
|
return entries.size() > 1 && entries.get(entries.size() - 1) == declaration;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public static Name getConventionName(@NotNull KtSimpleNameExpression simpleNameExpression) {
|
|
||||||
if (simpleNameExpression.getIdentifier() != null) {
|
|
||||||
return simpleNameExpression.getReferencedNameAsName();
|
|
||||||
}
|
|
||||||
|
|
||||||
PsiElement firstChild = simpleNameExpression.getFirstChild();
|
|
||||||
if (firstChild != null) {
|
|
||||||
IElementType elementType = firstChild.getNode().getElementType();
|
|
||||||
if (elementType instanceof KtToken) {
|
|
||||||
KtToken jetToken = (KtToken) elementType;
|
|
||||||
boolean isPrefixExpression = simpleNameExpression.getParent() instanceof KtPrefixExpression;
|
|
||||||
if (isPrefixExpression) {
|
|
||||||
return OperatorConventions.getNameForOperationSymbol(jetToken, true, false);
|
|
||||||
}
|
|
||||||
return OperatorConventions.getNameForOperationSymbol(jetToken);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Contract("null, _ -> null")
|
@Contract("null, _ -> null")
|
||||||
public static PsiElement getTopmostParentOfTypes(
|
public static PsiElement getTopmostParentOfTypes(
|
||||||
|
|||||||
@@ -50,12 +50,12 @@ import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper
|
|||||||
import org.jetbrains.kotlin.idea.core.isVisible
|
import org.jetbrains.kotlin.idea.core.isVisible
|
||||||
import org.jetbrains.kotlin.idea.imports.canBeReferencedViaImport
|
import org.jetbrains.kotlin.idea.imports.canBeReferencedViaImport
|
||||||
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil
|
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil
|
||||||
|
import org.jetbrains.kotlin.idea.references.mainReference
|
||||||
import org.jetbrains.kotlin.idea.util.CallTypeAndReceiver
|
import org.jetbrains.kotlin.idea.util.CallTypeAndReceiver
|
||||||
import org.jetbrains.kotlin.idea.util.getResolutionScope
|
import org.jetbrains.kotlin.idea.util.getResolutionScope
|
||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.KtPsiUtil.getConventionName
|
|
||||||
import org.jetbrains.kotlin.psi.KtPsiUtil.isSelectorInQualified
|
import org.jetbrains.kotlin.psi.KtPsiUtil.isSelectorInQualified
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.anyDescendantOfType
|
import org.jetbrains.kotlin.psi.psiUtil.anyDescendantOfType
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelectorOrThis
|
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelectorOrThis
|
||||||
@@ -70,7 +70,6 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
|||||||
import org.jetbrains.kotlin.resolve.scopes.ExplicitImportsScope
|
import org.jetbrains.kotlin.resolve.scopes.ExplicitImportsScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.utils.addImportingScope
|
import org.jetbrains.kotlin.resolve.scopes.utils.addImportingScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.utils.collectFunctions
|
import org.jetbrains.kotlin.resolve.scopes.utils.collectFunctions
|
||||||
import org.jetbrains.kotlin.types.expressions.OperatorConventions
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||||
import org.jetbrains.kotlin.utils.CachedValueProperty
|
import org.jetbrains.kotlin.utils.CachedValueProperty
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.singletonList
|
import org.jetbrains.kotlin.utils.addToStdlib.singletonList
|
||||||
@@ -243,7 +242,7 @@ internal abstract class OrdinaryImportFixBase<T : KtExpression>(expression: T) :
|
|||||||
internal class ImportFix(expression: KtSimpleNameExpression) : OrdinaryImportFixBase<KtSimpleNameExpression>(expression) {
|
internal class ImportFix(expression: KtSimpleNameExpression) : OrdinaryImportFixBase<KtSimpleNameExpression>(expression) {
|
||||||
override fun getCallTypeAndReceiver() = CallTypeAndReceiver.detect(element)
|
override fun getCallTypeAndReceiver() = CallTypeAndReceiver.detect(element)
|
||||||
|
|
||||||
override val importNames = element.extractImportNames()
|
override val importNames = element.mainReference.resolvesByNames
|
||||||
|
|
||||||
override fun getSupportedErrors() = ERRORS
|
override fun getSupportedErrors() = ERRORS
|
||||||
|
|
||||||
@@ -257,32 +256,6 @@ internal class ImportFix(expression: KtSimpleNameExpression) : OrdinaryImportFix
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KtSimpleNameExpression.extractImportNames(): Collection<Name> {
|
|
||||||
if (getIdentifier() == null) {
|
|
||||||
val conventionName = getConventionName(this)
|
|
||||||
if (conventionName != null) {
|
|
||||||
if (this is KtOperationReferenceExpression) {
|
|
||||||
val elementType = firstChild.node.elementType
|
|
||||||
if (elementType in OperatorConventions.ASSIGNMENT_OPERATIONS) {
|
|
||||||
val counterpart = OperatorConventions.ASSIGNMENT_OPERATION_COUNTERPARTS[elementType]
|
|
||||||
val counterpartName = OperatorConventions.BINARY_OPERATION_NAMES[counterpart]
|
|
||||||
if (counterpartName != null) {
|
|
||||||
return listOf(conventionName, counterpartName)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return conventionName.singletonOrEmptyList()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (Name.isValidIdentifier(getReferencedName())) {
|
|
||||||
return Name.identifier(getReferencedName()).singletonOrEmptyList()
|
|
||||||
}
|
|
||||||
|
|
||||||
return emptyList()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
internal class InvokeImportFix(expression: KtExpression) : OrdinaryImportFixBase<KtExpression>(expression) {
|
internal class InvokeImportFix(expression: KtExpression) : OrdinaryImportFixBase<KtExpression>(expression) {
|
||||||
override val importNames = OperatorNameConventions.INVOKE.singletonList()
|
override val importNames = OperatorNameConventions.INVOKE.singletonList()
|
||||||
|
|
||||||
@@ -474,7 +447,7 @@ internal class ImportMemberFix(expression: KtSimpleNameExpression) : ImportFixBa
|
|||||||
internal class ImportForMismatchingArgumentsFix(expression: KtSimpleNameExpression) : ImportFixBase<KtSimpleNameExpression>(expression) {
|
internal class ImportForMismatchingArgumentsFix(expression: KtSimpleNameExpression) : ImportFixBase<KtSimpleNameExpression>(expression) {
|
||||||
override fun getCallTypeAndReceiver() = CallTypeAndReceiver.detect(element)
|
override fun getCallTypeAndReceiver() = CallTypeAndReceiver.detect(element)
|
||||||
|
|
||||||
override val importNames = element.extractImportNames()
|
override val importNames = element.mainReference.resolvesByNames
|
||||||
|
|
||||||
override fun getSupportedErrors() = ERRORS
|
override fun getSupportedErrors() = ERRORS
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user