ChainedScope -> ChainedMemberScope

This commit is contained in:
Zalim Bashorov
2015-12-15 17:11:11 +03:00
parent 674a15daa1
commit 5008a66a5b
8 changed files with 20 additions and 19 deletions
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.resolve.jvm.JvmClassName
import org.jetbrains.kotlin.resolve.scopes.ChainedScope import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope
import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.serialization.PackageData import org.jetbrains.kotlin.serialization.PackageData
import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.ProtoBuf
@@ -130,7 +130,7 @@ public class IncrementalPackageFragmentProvider(
MemberScope.Empty MemberScope.Empty
} }
else { else {
ChainedScope("Member scope for incremental compilation: union of package parts data", *scopes.toTypedArray()) ChainedMemberScope("Member scope for incremental compilation: union of package parts data", *scopes.toTypedArray())
} }
} }
} }
@@ -153,7 +153,7 @@ public class IncrementalPackageFragmentProvider(
MemberScope.Empty MemberScope.Empty
else { else {
val scopes = partsData.map { IncrementalPackageScope(JvmProtoBufUtil.readPackageDataFrom(it.data, it.strings)) } val scopes = partsData.map { IncrementalPackageScope(JvmProtoBufUtil.readPackageDataFrom(it.data, it.strings)) }
ChainedScope( ChainedMemberScope(
"Member scope for incremental compilation: union of multifile class parts data for $multifileClassFqName", "Member scope for incremental compilation: union of multifile class parts data for $multifileClassFqName",
*scopes.toTypedArray<MemberScope>()) *scopes.toTypedArray<MemberScope>())
} }
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.psi.KtSimpleNameExpression
import org.jetbrains.kotlin.psi.psiUtil.getTopmostParentQualifiedExpressionForSelector import org.jetbrains.kotlin.psi.psiUtil.getTopmostParentQualifiedExpressionForSelector
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.descriptorUtil.classValueType import org.jetbrains.kotlin.resolve.descriptorUtil.classValueType
import org.jetbrains.kotlin.resolve.scopes.ChainedScope import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope
import org.jetbrains.kotlin.resolve.scopes.FilteringScope import org.jetbrains.kotlin.resolve.scopes.FilteringScope
import org.jetbrains.kotlin.resolve.scopes.ScopeUtils import org.jetbrains.kotlin.resolve.scopes.ScopeUtils
import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.resolve.scopes.MemberScope
@@ -112,7 +112,7 @@ class ClassQualifier(
scopes.add(classifier.unsubstitutedInnerClassesScope) scopes.add(classifier.unsubstitutedInnerClassesScope)
} }
return ChainedScope("Member scope for $name as class or object", *scopes.toTypedArray()) return ChainedMemberScope("Member scope for $name as class or object", *scopes.toTypedArray())
} }
override fun getNestedClassesAndPackageMembersScope(): MemberScope { override fun getNestedClassesAndPackageMembersScope(): MemberScope {
@@ -128,7 +128,7 @@ class ClassQualifier(
scopes.add(ScopeUtils.getStaticNestedClassesScope(classifier)) scopes.add(ScopeUtils.getStaticNestedClassesScope(classifier))
} }
return ChainedScope("Static scope for $name as class or object", *scopes.toTypedArray()) return ChainedMemberScope("Static scope for $name as class or object", *scopes.toTypedArray())
} }
override fun toString() = "Class{$classifier}" override fun toString() = "Class{$classifier}"
@@ -27,8 +27,6 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations;
import org.jetbrains.kotlin.resolve.calls.inference.CallHandle; import org.jetbrains.kotlin.resolve.calls.inference.CallHandle;
import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystem; import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystem;
import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilderImpl; import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilderImpl;
import org.jetbrains.kotlin.resolve.scopes.ChainedScope;
import org.jetbrains.kotlin.resolve.scopes.MemberScope;
import org.jetbrains.kotlin.resolve.scopes.TypeIntersectionScope; import org.jetbrains.kotlin.resolve.scopes.TypeIntersectionScope;
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker; import org.jetbrains.kotlin.types.checker.KotlinTypeChecker;
@@ -194,7 +194,7 @@ public abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdi
private val scope: MemberScope private val scope: MemberScope
init { init {
scope = ChainedScope("synthetic package view for test", ScopeWithClassifiers(classes), *packageScopes.toTypedArray()) scope = ChainedMemberScope("synthetic package view for test", ScopeWithClassifiers(classes), *packageScopes.toTypedArray())
} }
override val fqName: FqName override val fqName: FqName
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor;
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor; import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor;
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader; import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.resolve.scopes.ChainedScope; import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope;
import org.jetbrains.kotlin.resolve.scopes.MemberScope; import org.jetbrains.kotlin.resolve.scopes.MemberScope;
import org.jetbrains.kotlin.serialization.ClassData; import org.jetbrains.kotlin.serialization.ClassData;
import org.jetbrains.kotlin.serialization.ClassDataWithSource; import org.jetbrains.kotlin.serialization.ClassDataWithSource;
@@ -108,7 +108,7 @@ public final class DeserializedDescriptorResolver {
if (list.isEmpty()) { if (list.isEmpty()) {
return MemberScope.Empty.INSTANCE; return MemberScope.Empty.INSTANCE;
} }
return new ChainedScope("Member scope for union of package parts data", list.toArray(new MemberScope[list.size()])); return new ChainedMemberScope("Member scope for union of package parts data", list.toArray(new MemberScope[list.size()]));
} }
@Nullable @Nullable
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.resolve.scopes.ChainedScope import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope
import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.resolve.scopes.LazyScopeAdapter import org.jetbrains.kotlin.resolve.scopes.LazyScopeAdapter
import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.storage.StorageManager
@@ -46,7 +46,7 @@ public class LazyPackageViewDescriptorImpl(
else { else {
// Packages from SubpackagesScope are got via getContributedDescriptors(DescriptorKindFilter.PACKAGES, MemberScope.ALL_NAME_FILTER) // Packages from SubpackagesScope are got via getContributedDescriptors(DescriptorKindFilter.PACKAGES, MemberScope.ALL_NAME_FILTER)
val scopes = fragments.map { it.getMemberScope() } + SubpackagesScope(module, fqName) val scopes = fragments.map { it.getMemberScope() } + SubpackagesScope(module, fqName)
ChainedScope("package view scope for $fqName in ${module.getName()}", *scopes.toTypedArray()) ChainedMemberScope("package view scope for $fqName in ${module.getName()}", *scopes.toTypedArray())
} }
}) })
@@ -16,14 +16,16 @@
package org.jetbrains.kotlin.resolve.scopes package org.jetbrains.kotlin.resolve.scopes
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.incremental.components.LookupLocation import org.jetbrains.kotlin.incremental.components.LookupLocation
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.util.collectionUtils.getFirstMatch import org.jetbrains.kotlin.util.collectionUtils.getFirstMatch
import org.jetbrains.kotlin.util.collectionUtils.getFromAllScopes import org.jetbrains.kotlin.util.collectionUtils.getFromAllScopes
import org.jetbrains.kotlin.utils.Printer import org.jetbrains.kotlin.utils.Printer
public class ChainedScope( public class ChainedMemberScope(
internal val debugName: String, internal val debugName: String,
vararg scopes: MemberScope vararg scopes: MemberScope
) : MemberScope { ) : MemberScope {
@@ -16,14 +16,15 @@
package org.jetbrains.kotlin.resolve.scopes package org.jetbrains.kotlin.resolve.scopes
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.incremental.components.LookupLocation import org.jetbrains.kotlin.incremental.components.LookupLocation
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.selectMostSpecificInEachOverridableGroup import org.jetbrains.kotlin.resolve.selectMostSpecificInEachOverridableGroup
import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.utils.Printer import org.jetbrains.kotlin.utils.Printer
class TypeIntersectionScope private constructor(override val workerScope: ChainedScope) : AbstractScopeAdapter() { class TypeIntersectionScope private constructor(override val workerScope: ChainedMemberScope) : AbstractScopeAdapter() {
override fun getContributedFunctions(name: Name, location: LookupLocation) = override fun getContributedFunctions(name: Name, location: LookupLocation) =
super.getContributedFunctions(name, location).selectMostSpecificInEachOverridableGroup { this } super.getContributedFunctions(name, location).selectMostSpecificInEachOverridableGroup { this }
@@ -45,7 +46,7 @@ class TypeIntersectionScope private constructor(override val workerScope: Chaine
companion object { companion object {
@JvmStatic @JvmStatic
fun create(message: String, types: List<KotlinType>): MemberScope { fun create(message: String, types: List<KotlinType>): MemberScope {
val chainedScope = ChainedScope(message, *types.map { it.memberScope }.toTypedArray()) val chainedScope = ChainedMemberScope(message, *types.map { it.memberScope }.toTypedArray())
if (types.size <= 1) return chainedScope if (types.size <= 1) return chainedScope
return TypeIntersectionScope(chainedScope) return TypeIntersectionScope(chainedScope)