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;
|
||||
}
|
||||
|
||||
@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
|
||||
@Contract("null, _ -> null")
|
||||
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.imports.canBeReferencedViaImport
|
||||
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.getResolutionScope
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.KtPsiUtil.getConventionName
|
||||
import org.jetbrains.kotlin.psi.KtPsiUtil.isSelectorInQualified
|
||||
import org.jetbrains.kotlin.psi.psiUtil.anyDescendantOfType
|
||||
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.utils.addImportingScope
|
||||
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.utils.CachedValueProperty
|
||||
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) {
|
||||
override fun getCallTypeAndReceiver() = CallTypeAndReceiver.detect(element)
|
||||
|
||||
override val importNames = element.extractImportNames()
|
||||
override val importNames = element.mainReference.resolvesByNames
|
||||
|
||||
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) {
|
||||
override val importNames = OperatorNameConventions.INVOKE.singletonList()
|
||||
|
||||
@@ -474,7 +447,7 @@ internal class ImportMemberFix(expression: KtSimpleNameExpression) : ImportFixBa
|
||||
internal class ImportForMismatchingArgumentsFix(expression: KtSimpleNameExpression) : ImportFixBase<KtSimpleNameExpression>(expression) {
|
||||
override fun getCallTypeAndReceiver() = CallTypeAndReceiver.detect(element)
|
||||
|
||||
override val importNames = element.extractImportNames()
|
||||
override val importNames = element.mainReference.resolvesByNames
|
||||
|
||||
override fun getSupportedErrors() = ERRORS
|
||||
|
||||
|
||||
Reference in New Issue
Block a user