Support for import aliases in code completion
#KT-8848 Fixed
This commit is contained in:
@@ -109,6 +109,16 @@ interface ImportingScope : HierarchicalScope {
|
||||
|
||||
fun getContributedPackage(name: Name): PackageViewDescriptor?
|
||||
|
||||
fun getContributedDescriptors(
|
||||
kindFilter: DescriptorKindFilter = DescriptorKindFilter.ALL,
|
||||
nameFilter: (Name) -> Boolean = MemberScope.ALL_NAME_FILTER,
|
||||
changeNamesForAliased: Boolean
|
||||
): Collection<DeclarationDescriptor>
|
||||
|
||||
override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
return getContributedDescriptors(kindFilter, nameFilter, changeNamesForAliased = false)
|
||||
}
|
||||
|
||||
object Empty : BaseImportingScope(null) {
|
||||
override fun printStructure(p: Printer) {
|
||||
p.println("ImportingScope.Empty")
|
||||
@@ -131,4 +141,11 @@ abstract class BaseImportingScope(parent: ImportingScope?) : BaseHierarchicalSco
|
||||
get() = super.parent as ImportingScope?
|
||||
|
||||
override fun getContributedPackage(name: Name): PackageViewDescriptor? = null
|
||||
|
||||
override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
return getContributedDescriptors(kindFilter, nameFilter, changeNamesForAliased = false)
|
||||
}
|
||||
|
||||
override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean, changeNamesForAliased: Boolean): Collection<DeclarationDescriptor>
|
||||
= emptyList()
|
||||
}
|
||||
|
||||
+6
-6
@@ -40,12 +40,12 @@ class SubpackagesImportingScope(
|
||||
override fun getContributedFunctions(name: Name, location: LookupLocation) = super.getContributedFunctions(name, location)
|
||||
|
||||
//TODO: kept old behavior, but it seems very strange (super call seems more applicable)
|
||||
override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? {
|
||||
return ImportingScope.Empty.getContributedClassifier(name, location)
|
||||
}
|
||||
override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? = null
|
||||
|
||||
override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> =
|
||||
emptyList()
|
||||
|
||||
//TODO: kept old behavior, but it seems very strange (super call seems more applicable)
|
||||
override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
return ImportingScope.Empty.getContributedDescriptors(kindFilter, nameFilter)
|
||||
}
|
||||
override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean, changeNamesForAliased: Boolean): Collection<DeclarationDescriptor>
|
||||
= emptyList()
|
||||
}
|
||||
|
||||
@@ -50,14 +50,18 @@ fun LexicalScope.getDeclarationsByLabel(labelName: Name): Collection<Declaration
|
||||
// Result is guaranteed to be filtered by kind and name.
|
||||
fun HierarchicalScope.collectDescriptorsFiltered(
|
||||
kindFilter: DescriptorKindFilter = DescriptorKindFilter.ALL,
|
||||
nameFilter: (Name) -> Boolean = { true }
|
||||
nameFilter: (Name) -> Boolean = { true },
|
||||
changeNamesForAliased: Boolean = false
|
||||
): Collection<DeclarationDescriptor> {
|
||||
if (kindFilter.kindMask == 0) return listOf()
|
||||
return collectAllFromMeAndParent { it.getContributedDescriptors(kindFilter, nameFilter) }
|
||||
.filter { kindFilter.accepts(it) && nameFilter(it.name) }
|
||||
return collectAllFromMeAndParent {
|
||||
if (it is ImportingScope)
|
||||
it.getContributedDescriptors(kindFilter, nameFilter, changeNamesForAliased)
|
||||
else
|
||||
it.getContributedDescriptors(kindFilter, nameFilter)
|
||||
}.filter { kindFilter.accepts(it) && nameFilter(it.name) }
|
||||
}
|
||||
|
||||
|
||||
@Deprecated("Use getContributedProperties instead") fun LexicalScope.findLocalVariable(name: Name): VariableDescriptor? {
|
||||
return findFirstFromMeAndParent {
|
||||
when {
|
||||
@@ -103,7 +107,7 @@ fun HierarchicalScope.takeSnapshot(): HierarchicalScope = if (this is LexicalWri
|
||||
private class MemberScopeToImportingScopeAdapter(override val parent: ImportingScope?, val memberScope: MemberScope) : ImportingScope {
|
||||
override fun getContributedPackage(name: Name): PackageViewDescriptor? = null
|
||||
|
||||
override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean)
|
||||
override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean, changeNamesForAliased: Boolean)
|
||||
= memberScope.getContributedDescriptors(kindFilter, nameFilter)
|
||||
|
||||
override fun getContributedClassifier(name: Name, location: LookupLocation) = memberScope.getContributedClassifier(name, location)
|
||||
|
||||
Reference in New Issue
Block a user