From 40c7c14aa71798a93235b18660eed5c05ff8d4ac Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Thu, 17 Sep 2015 20:29:12 +0300 Subject: [PATCH] Minor. Use util function getResolutionScope() --- .../kotlin/idea/completion/BasicCompletionSession.kt | 2 +- .../jetbrains/kotlin/idea/completion/CompletionUtils.kt | 9 ++++++--- .../kotlin/idea/completion/smart/SmartCompletion.kt | 2 +- .../org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt | 6 +++--- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt index 6275019bf60..3d35aff3f7b 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt @@ -236,7 +236,7 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration, // if "this" is parsed correctly in the current context - insert it and all this@xxx items "this" -> { if (expression != null) { - collector.addElements(thisExpressionItems(bindingContext, expression, prefix).map { it.createLookupElement() }) + collector.addElements(thisExpressionItems(bindingContext, expression, prefix, resolutionFacade).map { it.createLookupElement() }) } else { // for completion in secondary constructor delegation call diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionUtils.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionUtils.kt index 361f05afe08..227a4700b90 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionUtils.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionUtils.kt @@ -29,6 +29,8 @@ import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor import org.jetbrains.kotlin.idea.JetIcons import org.jetbrains.kotlin.idea.completion.handlers.CastReceiverInsertHandler import org.jetbrains.kotlin.idea.completion.handlers.WithTailInsertHandler +import org.jetbrains.kotlin.idea.core.getResolutionScope +import org.jetbrains.kotlin.idea.resolve.ResolutionFacade import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.ShortenReferences import org.jetbrains.kotlin.idea.util.findLabelAndCall @@ -40,6 +42,7 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.render import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.inline.InlineUtil +import org.jetbrains.kotlin.resolve.scopes.utils.asJetScope import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.typeUtil.TypeNullability import org.jetbrains.kotlin.types.typeUtil.nullability @@ -185,13 +188,13 @@ class ThisItemLookupObject(val receiverParameter: ReceiverParameterDescriptor, v fun ThisItemLookupObject.createLookupElement() = createKeywordElement("this", labelName.labelNameToTail(), lookupObject = this) .withTypeText(DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(receiverParameter.type)) -fun thisExpressionItems(bindingContext: BindingContext, position: JetExpression, prefix: String): Collection { - val scope = bindingContext[BindingContext.RESOLUTION_SCOPE, position] ?: return listOf() +fun thisExpressionItems(bindingContext: BindingContext, position: JetExpression, prefix: String, resolutionFacade: ResolutionFacade): Collection { + val scope = position.getResolutionScope(bindingContext, resolutionFacade) val psiFactory = JetPsiFactory(position) val result = ArrayList() - for ((receiver, expressionFactory) in scope.getImplicitReceiversWithInstanceToExpression()) { + for ((receiver, expressionFactory) in scope.asJetScope().getImplicitReceiversWithInstanceToExpression()) { if (expressionFactory == null) continue // if prefix does not start with "this@" do not include immediate this in the form with label val expression = expressionFactory.createExpression(psiFactory, shortThis = !prefix.startsWith("this@")) as? JetThisExpression ?: continue diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/SmartCompletion.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/SmartCompletion.kt index bf487705998..2228bf005a7 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/SmartCompletion.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/SmartCompletion.kt @@ -220,7 +220,7 @@ class SmartCompletion( private fun MutableCollection.addThisItems(place: JetExpression, expectedInfos: Collection, smartCastCalculator: SmartCastCalculator) { if (shouldCompleteThisItems(prefixMatcher)) { - val items = thisExpressionItems(bindingContext, place, prefixMatcher.getPrefix()) + val items = thisExpressionItems(bindingContext, place, prefixMatcher.getPrefix(), resolutionFacade) for (item in items) { val types = smartCastCalculator.types(item.receiverParameter).map { FuzzyType(it, emptyList()) } val classifier = { expectedInfo: ExpectedInfo -> types.classifyExpectedInfo(expectedInfo) } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt index c570f39da7d..1634d9ca5f1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt @@ -34,13 +34,13 @@ import org.jetbrains.kotlin.idea.actions.KotlinAddImportAction import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.getResolveScope import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper +import org.jetbrains.kotlin.idea.core.getResolutionScope import org.jetbrains.kotlin.idea.core.isVisible import org.jetbrains.kotlin.idea.project.ProjectStructureUtil import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.psi.JetPsiUtil import org.jetbrains.kotlin.psi.JetSimpleNameExpression import org.jetbrains.kotlin.psi.psiUtil.isImportDirectiveExpression -import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.utils.CachedValueProperty import java.util.* @@ -119,8 +119,8 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction