JetReference.resolveToDescriptors() requires BindingContext

This commit is contained in:
Valentin Kipyatkov
2015-03-24 17:10:56 +03:00
parent 04a6ebf0d6
commit 6dc943a739
8 changed files with 66 additions and 66 deletions
@@ -23,6 +23,7 @@ import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElement
import com.intellij.util.IncorrectOperationException
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.analyze
class JetMultiDeclarationReference(element: JetMultiDeclaration) : JetMultiReference<JetMultiDeclaration>(element) {
override fun getTargetDescriptors(context: BindingContext): Collection<DeclarationDescriptor> {
@@ -39,7 +40,8 @@ class JetMultiDeclarationReference(element: JetMultiDeclaration) : JetMultiRefer
}
override fun canRename(): Boolean {
return resolveToDescriptors().all { it is CallableMemberDescriptor && it.getKind() == CallableMemberDescriptor.Kind.SYNTHESIZED}
val bindingContext = expression.analyze() //TODO: should it use full body resolve?
return resolveToDescriptors(bindingContext).all { it is CallableMemberDescriptor && it.getKind() == CallableMemberDescriptor.Kind.SYNTHESIZED}
}
override fun handleElementRename(newElementName: String?): PsiElement? {
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList
public trait JetReference : PsiPolyVariantReference {
public fun resolveToDescriptors(): Collection<DeclarationDescriptor>
public fun resolveToDescriptors(bindingContext: BindingContext): Collection<DeclarationDescriptor>
}
public abstract class AbstractJetReference<T : JetElement>(element: T)
@@ -72,8 +72,8 @@ public abstract class AbstractJetReference<T : JetElement>(element: T)
return resolveToPsiElements(bindingContext, getTargetDescriptors(bindingContext))
}
override fun resolveToDescriptors(): Collection<DeclarationDescriptor> {
return getTargetDescriptors(expression.analyze())
override fun resolveToDescriptors(bindingContext: BindingContext): Collection<DeclarationDescriptor> {
return getTargetDescriptors(bindingContext)
}
private fun resolveToPsiElements(context: BindingContext, targetDescriptors: Collection<DeclarationDescriptor>): Collection<PsiElement> {