Dropped JetReference.resolveMap()

This commit is contained in:
Valentin Kipyatkov
2015-03-24 16:20:23 +03:00
parent 67de85aed1
commit 04a6ebf0d6
2 changed files with 6 additions and 10 deletions
@@ -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