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 val containingDescriptor = containingDeclaration ?: return null
return when (containingDescriptor) { return when (containingDescriptor) {
is ClassDescriptorWithResolutionScopes -> containingDescriptor.scopeForInitializerResolution is ClassDescriptorWithResolutionScopes -> containingDescriptor.scopeForInitializerResolution
is PackageFragmentDescriptor -> LexicalScope.Empty(containingDescriptor.getMemberScope().memberScopeAsImportingScope(), this) is PackageFragmentDescriptor -> LexicalScope.Base(containingDescriptor.getMemberScope().memberScopeAsImportingScope(), this)
else -> null 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 { val importResolver = object : ImportResolver {
override fun forceResolveAllImports() { override fun forceResolveAllImports() {
@@ -129,7 +129,7 @@ class LazyAnnotationDescriptor(
private val source = annotationEntry.toSourceElement() private val source = annotationEntry.toSourceElement()
val scope = if (c.scope.ownerDescriptor is PackageFragmentDescriptor) { 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 { else {
c.scope c.scope
@@ -29,7 +29,7 @@ interface HierarchicalScope : ResolutionScope {
fun printStructure(p: Printer) fun printStructure(p: Printer)
} }
interface LexicalScope: HierarchicalScope { interface LexicalScope : HierarchicalScope {
override val parent: HierarchicalScope override val parent: HierarchicalScope
val ownerDescriptor: DeclarationDescriptor val ownerDescriptor: DeclarationDescriptor
@@ -39,7 +39,7 @@ interface LexicalScope: HierarchicalScope {
val kind: LexicalScopeKind val kind: LexicalScopeKind
class Empty( class Base(
parent: HierarchicalScope, parent: HierarchicalScope,
override val ownerDescriptor: DeclarationDescriptor override val ownerDescriptor: DeclarationDescriptor
) : BaseHierarchicalScope(parent), LexicalScope { ) : BaseHierarchicalScope(parent), LexicalScope {
@@ -56,7 +56,7 @@ interface LexicalScope: HierarchicalScope {
get() = LexicalScopeKind.EMPTY get() = LexicalScopeKind.EMPTY
override fun printStructure(p: Printer) { 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.LexicalScope
import org.jetbrains.kotlin.resolve.scopes.utils.memberScopeAsImportingScope 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) 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 { fun getKDocLinkResolutionScope(resolutionFacade: ResolutionFacade, descriptor: DeclarationDescriptor): LexicalScope {
return when (descriptor) { return when (descriptor) {
is PackageFragmentDescriptor -> is PackageFragmentDescriptor ->
LexicalScope.Empty(getPackageInnerScope(descriptor).memberScopeAsImportingScope(), descriptor) LexicalScope.Base(getPackageInnerScope(descriptor).memberScopeAsImportingScope(), descriptor)
is PackageViewDescriptor -> is PackageViewDescriptor ->
LexicalScope.Empty(descriptor.memberScope.memberScopeAsImportingScope(), descriptor) LexicalScope.Base(descriptor.memberScope.memberScopeAsImportingScope(), descriptor)
is ClassDescriptor -> is ClassDescriptor ->
getClassInnerScope(getOuterScope(descriptor, resolutionFacade), descriptor) getClassInnerScope(getOuterScope(descriptor, resolutionFacade), descriptor)
@@ -134,7 +134,7 @@ class KDocNameCompletionSession(
return ( return (
if (collectFormParentScopes) if (collectFormParentScopes)
scope.collectDescriptorsFiltered(nameFilter = nameFilter).asSequence() scope.collectDescriptorsFiltered(nameFilter = nameFilter).asSequence()
else if (scope is LexicalScope.Empty) else if (scope is LexicalScope.Base)
scope.parent.getContributedDescriptors(nameFilter = nameFilter).asSequence() scope.parent.getContributedDescriptors(nameFilter = nameFilter).asSequence()
else else
(scope.getContributedDescriptors(nameFilter = nameFilter).asSequence() (scope.getContributedDescriptors(nameFilter = nameFilter).asSequence()
@@ -162,8 +162,10 @@ object ReplaceWithAnnotationAnalyzer {
getResolutionScope(moduleDescriptor.getPackage(descriptor.fqName), ownerDescriptor, additionalScopes) getResolutionScope(moduleDescriptor.getPackage(descriptor.fqName), ownerDescriptor, additionalScopes)
} }
is PackageViewDescriptor -> is PackageViewDescriptor -> LexicalScope.Base(
LexicalScope.Empty(chainImportingScopes(listOf(descriptor.memberScope.memberScopeAsImportingScope()) + additionalScopes)!!, ownerDescriptor) chainImportingScopes(listOf(descriptor.memberScope.memberScopeAsImportingScope()) + additionalScopes)!!,
ownerDescriptor
)
is ClassDescriptor -> { is ClassDescriptor -> {
val outerScope = getResolutionScope(descriptor.containingDeclaration, ownerDescriptor, additionalScopes) ?: return null val outerScope = getResolutionScope(descriptor.containingDeclaration, ownerDescriptor, additionalScopes) ?: return null
@@ -194,7 +194,7 @@ fun DeclarationDescriptor.getContainingScope(): LexicalScope? {
val containingDescriptor = containingDeclaration ?: return null val containingDescriptor = containingDeclaration ?: return null
return when (containingDescriptor) { return when (containingDescriptor) {
is ClassDescriptorWithResolutionScopes -> containingDescriptor.scopeForInitializerResolution is ClassDescriptorWithResolutionScopes -> containingDescriptor.scopeForInitializerResolution
is PackageFragmentDescriptor -> LexicalScope.Empty(containingDescriptor.getMemberScope().memberScopeAsImportingScope(), this) is PackageFragmentDescriptor -> LexicalScope.Base(containingDescriptor.getMemberScope().memberScopeAsImportingScope(), this)
else -> null else -> null
} }
} }