Removed hack for package directive completion

This commit is contained in:
Valentin Kipyatkov
2015-10-26 15:01:24 +03:00
parent a5982281af
commit c239e84aa0
3 changed files with 4 additions and 18 deletions
@@ -327,12 +327,4 @@ public class ReferenceVariantsHelper(
}
return type
}
public fun getPackageReferenceVariants(
expression: KtSimpleNameExpression,
nameFilter: (Name) -> Boolean
): Collection<DeclarationDescriptor> {
val resolutionScope = expression.getResolutionScope(context, resolutionFacade)
return resolutionScope.collectDescriptorsFiltered(DescriptorKindFilter.PACKAGES, nameFilter).filter(visibilityFilter)
}
}
@@ -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<KtPackageDirective>(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)
@@ -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)