Removed hack for package directive completion
This commit is contained in:
@@ -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)
|
||||
|
||||
+4
-3
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user