Dropped JetReference.resolveMap()
This commit is contained in:
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList
|
|||||||
|
|
||||||
public trait JetReference : PsiPolyVariantReference {
|
public trait JetReference : PsiPolyVariantReference {
|
||||||
public fun resolveToDescriptors(): Collection<DeclarationDescriptor>
|
public fun resolveToDescriptors(): Collection<DeclarationDescriptor>
|
||||||
public fun resolveMap(): Map<DeclarationDescriptor, Collection<PsiElement>>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract class AbstractJetReference<T : JetElement>(element: T)
|
public abstract class AbstractJetReference<T : JetElement>(element: T)
|
||||||
@@ -77,10 +76,6 @@ public abstract class AbstractJetReference<T : JetElement>(element: T)
|
|||||||
return getTargetDescriptors(expression.analyze())
|
return getTargetDescriptors(expression.analyze())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun resolveMap(): Map<DeclarationDescriptor, Collection<PsiElement>> {
|
|
||||||
return getTargetDescriptors(expression.analyze()) keysToMap { resolveToPsiElements(it) }
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun resolveToPsiElements(context: BindingContext, targetDescriptors: Collection<DeclarationDescriptor>): Collection<PsiElement> {
|
private fun resolveToPsiElements(context: BindingContext, targetDescriptors: Collection<DeclarationDescriptor>): Collection<PsiElement> {
|
||||||
if (targetDescriptors.isNotEmpty()) {
|
if (targetDescriptors.isNotEmpty()) {
|
||||||
return targetDescriptors flatMap { target -> resolveToPsiElements(target) }
|
return targetDescriptors flatMap { target -> resolveToPsiElements(target) }
|
||||||
|
|||||||
@@ -119,14 +119,15 @@ public class KotlinCopyPasteReferenceProcessor() : CopyPastePostProcessor<Kotlin
|
|||||||
|
|
||||||
val reference = element.getReference() as? JetReference ?: return listOf()
|
val reference = element.getReference() as? JetReference ?: return listOf()
|
||||||
|
|
||||||
val resolveMap = reference.resolveMap()
|
val descriptors = reference.resolveToDescriptors()
|
||||||
//check whether this reference is unambiguous
|
//check whether this reference is unambiguous
|
||||||
if (reference !is JetMultiReference<*> && resolveMap.size() > 1) return listOf()
|
if (reference !is JetMultiReference<*> && descriptors.size() > 1) return listOf()
|
||||||
|
|
||||||
val collectedData = ArrayList<KotlinReferenceData>()
|
val collectedData = ArrayList<KotlinReferenceData>()
|
||||||
for ((descriptor, declarations) in resolveMap) {
|
for (descriptor in descriptors) {
|
||||||
val declaration = declarations.singleOrNull() ?: continue
|
val declarations = DescriptorToSourceUtilsIde.getAllDeclarations(file.getProject(), descriptor)
|
||||||
if (declaration.isInCopiedArea(file, startOffsets, endOffsets)) continue
|
val declaration = declarations.singleOrNull()
|
||||||
|
if (declaration != null && declaration.isInCopiedArea(file, startOffsets, endOffsets)) continue
|
||||||
|
|
||||||
if (!descriptor.isExtension) {
|
if (!descriptor.isExtension) {
|
||||||
if (element !is JetNameReferenceExpression) continue
|
if (element !is JetNameReferenceExpression) continue
|
||||||
|
|||||||
Reference in New Issue
Block a user