Rename LexicalScope.Empty -> Base

"Empty" is slightly confusing because although the scope has no declared
symbols, it is not empty: it has a parent scope which can contain
symbols and can have parents as well
This commit is contained in:
Alexander Udalov
2017-06-01 14:26:16 +03:00
parent 1df6f2f9a0
commit e67e0440bb
9 changed files with 16 additions and 14 deletions
@@ -109,7 +109,7 @@ open class PartialAnalysisHandlerExtension : AnalysisHandlerExtension {
val containingDescriptor = containingDeclaration ?: return null
return when (containingDescriptor) {
is ClassDescriptorWithResolutionScopes -> containingDescriptor.scopeForInitializerResolution
is PackageFragmentDescriptor -> LexicalScope.Empty(containingDescriptor.getMemberScope().memberScopeAsImportingScope(), this)
is PackageFragmentDescriptor -> LexicalScope.Base(containingDescriptor.getMemberScope().memberScopeAsImportingScope(), this)
else -> null
}
}
@@ -89,7 +89,7 @@ class FileScopeFactory(
}
}
val lexicalScope = LexicalScope.Empty(lazyImportingScope, topLevelDescriptorProvider.getPackageFragment(file.packageFqName)!!)
val lexicalScope = LexicalScope.Base(lazyImportingScope, topLevelDescriptorProvider.getPackageFragment(file.packageFqName)!!)
val importResolver = object : ImportResolver {
override fun forceResolveAllImports() {
@@ -129,7 +129,7 @@ class LazyAnnotationDescriptor(
private val source = annotationEntry.toSourceElement()
val scope = if (c.scope.ownerDescriptor is PackageFragmentDescriptor) {
LexicalScope.Empty(c.scope, FileDescriptorForVisibilityChecks(source, c.scope.ownerDescriptor))
LexicalScope.Base(c.scope, FileDescriptorForVisibilityChecks(source, c.scope.ownerDescriptor))
}
else {
c.scope
@@ -29,7 +29,7 @@ interface HierarchicalScope : ResolutionScope {
fun printStructure(p: Printer)
}
interface LexicalScope: HierarchicalScope {
interface LexicalScope : HierarchicalScope {
override val parent: HierarchicalScope
val ownerDescriptor: DeclarationDescriptor
@@ -39,7 +39,7 @@ interface LexicalScope: HierarchicalScope {
val kind: LexicalScopeKind
class Empty(
class Base(
parent: HierarchicalScope,
override val ownerDescriptor: DeclarationDescriptor
) : BaseHierarchicalScope(parent), LexicalScope {
@@ -56,7 +56,7 @@ interface LexicalScope: HierarchicalScope {
get() = LexicalScopeKind.EMPTY
override fun printStructure(p: Printer) {
p.println("Empty lexical scope with owner = $ownerDescriptor and parent = $parent")
p.println("Base lexical scope with owner = $ownerDescriptor and parent = $parent")
}
}
}
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
import org.jetbrains.kotlin.resolve.scopes.utils.memberScopeAsImportingScope
fun ModuleDescriptor.builtInPackageAsLexicalScope(): LexicalScope.Empty {
fun ModuleDescriptor.builtInPackageAsLexicalScope(): LexicalScope.Base {
val packageView = getPackage(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME)
return LexicalScope.Empty(packageView.memberScope.memberScopeAsImportingScope(), this)
return LexicalScope.Base(packageView.memberScope.memberScopeAsImportingScope(), this)
}
@@ -161,10 +161,10 @@ private fun getClassInnerScope(outerScope: LexicalScope, descriptor: ClassDescri
fun getKDocLinkResolutionScope(resolutionFacade: ResolutionFacade, descriptor: DeclarationDescriptor): LexicalScope {
return when (descriptor) {
is PackageFragmentDescriptor ->
LexicalScope.Empty(getPackageInnerScope(descriptor).memberScopeAsImportingScope(), descriptor)
LexicalScope.Base(getPackageInnerScope(descriptor).memberScopeAsImportingScope(), descriptor)
is PackageViewDescriptor ->
LexicalScope.Empty(descriptor.memberScope.memberScopeAsImportingScope(), descriptor)
LexicalScope.Base(descriptor.memberScope.memberScopeAsImportingScope(), descriptor)
is ClassDescriptor ->
getClassInnerScope(getOuterScope(descriptor, resolutionFacade), descriptor)
@@ -134,7 +134,7 @@ class KDocNameCompletionSession(
return (
if (collectFormParentScopes)
scope.collectDescriptorsFiltered(nameFilter = nameFilter).asSequence()
else if (scope is LexicalScope.Empty)
else if (scope is LexicalScope.Base)
scope.parent.getContributedDescriptors(nameFilter = nameFilter).asSequence()
else
(scope.getContributedDescriptors(nameFilter = nameFilter).asSequence()
@@ -162,8 +162,10 @@ object ReplaceWithAnnotationAnalyzer {
getResolutionScope(moduleDescriptor.getPackage(descriptor.fqName), ownerDescriptor, additionalScopes)
}
is PackageViewDescriptor ->
LexicalScope.Empty(chainImportingScopes(listOf(descriptor.memberScope.memberScopeAsImportingScope()) + additionalScopes)!!, ownerDescriptor)
is PackageViewDescriptor -> LexicalScope.Base(
chainImportingScopes(listOf(descriptor.memberScope.memberScopeAsImportingScope()) + additionalScopes)!!,
ownerDescriptor
)
is ClassDescriptor -> {
val outerScope = getResolutionScope(descriptor.containingDeclaration, ownerDescriptor, additionalScopes) ?: return null
@@ -194,7 +194,7 @@ fun DeclarationDescriptor.getContainingScope(): LexicalScope? {
val containingDescriptor = containingDeclaration ?: return null
return when (containingDescriptor) {
is ClassDescriptorWithResolutionScopes -> containingDescriptor.scopeForInitializerResolution
is PackageFragmentDescriptor -> LexicalScope.Empty(containingDescriptor.getMemberScope().memberScopeAsImportingScope(), this)
is PackageFragmentDescriptor -> LexicalScope.Base(containingDescriptor.getMemberScope().memberScopeAsImportingScope(), this)
else -> null
}
}