diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt index cfbe0bcd4e0..2973204b1c3 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt @@ -327,12 +327,4 @@ public class ReferenceVariantsHelper( } return type } - - public fun getPackageReferenceVariants( - expression: KtSimpleNameExpression, - nameFilter: (Name) -> Boolean - ): Collection { - val resolutionScope = expression.getResolutionScope(context, resolutionFacade) - return resolutionScope.collectDescriptorsFiltered(DescriptorKindFilter.PACKAGES, nameFilter).filter(visibilityFilter) - } } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt index 864282fd63a..aa02b1fac7b 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt @@ -44,7 +44,6 @@ import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo import org.jetbrains.kotlin.resolve.lazy.* import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassDescriptor import org.jetbrains.kotlin.resolve.scopes.LexicalScope -import org.jetbrains.kotlin.resolve.scopes.utils.memberScopeAsImportingScope import org.jetbrains.kotlin.utils.addToStdlib.check public class ResolveElementCache( @@ -309,12 +308,6 @@ public class ResolveElementCache( if (ktElement is KtSimpleNameExpression) { val header = ktElement.getParentOfType(true)!! - //TODO: temporary code until we don't have top-level scope in file - if (trace.getBindingContext()[BindingContext.LEXICAL_SCOPE, ktElement] == null) { - val scope = resolveSession.getModuleDescriptor().getPackage(header.getFqName(ktElement).parent()).memberScope.memberScopeAsImportingScope() - trace.record(BindingContext.LEXICAL_SCOPE, ktElement, scope) - } - if (Name.isValidIdentifier(ktElement.getReferencedName())) { if (trace.getBindingContext()[BindingContext.REFERENCE_TARGET, ktElement] == null) { val fqName = header.getFqName(ktElement) diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/PackageDirectiveCompletion.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/PackageDirectiveCompletion.kt index d1368ff4f6f..258352f895f 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/PackageDirectiveCompletion.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/PackageDirectiveCompletion.kt @@ -22,11 +22,11 @@ import com.intellij.codeInsight.completion.PlainPrefixMatcher import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.patterns.PlatformPatterns import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade -import org.jetbrains.kotlin.idea.codeInsight.ReferenceVariantsHelper import org.jetbrains.kotlin.idea.util.CallType import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtPackageDirective import org.jetbrains.kotlin.psi.KtSimpleNameExpression +import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter /** * Performs completion in package directive. Should suggest only packages and avoid showing fake package produced by @@ -51,9 +51,10 @@ object PackageDirectiveCompletion { val result = result.withPrefixMatcher(prefixMatcher) val resolutionFacade = expression.getResolutionFacade() - val bindingContext = resolutionFacade.analyze(expression) - val variants = ReferenceVariantsHelper(bindingContext, resolutionFacade, { true }).getPackageReferenceVariants(expression, prefixMatcher.asNameFilter()) + val packageMemberScope = resolutionFacade.moduleDescriptor.getPackage(file.packageFqName.parent()).memberScope + + val variants = packageMemberScope.getDescriptors(DescriptorKindFilter.PACKAGES, prefixMatcher.asNameFilter()) val lookupElementFactory = BasicLookupElementFactory(resolutionFacade.project, InsertHandlerProvider(callType = CallType.PACKAGE_DIRECTIVE, expectedInfosCalculator = { emptyList() })) for (variant in variants) { val lookupElement = lookupElementFactory.createLookupElement(variant)