Remove scope from Qualifier
This commit is contained in:
@@ -407,16 +407,17 @@ class QualifiedExpressionResolver(val symbolUsageValidator: SymbolUsageValidator
|
||||
): Qualifier? {
|
||||
val name = expression.getReferencedNameAsName()
|
||||
|
||||
val location = KotlinLookupLocation(expression)
|
||||
val qualifierDescriptor = when (receiver) {
|
||||
is PackageQualifier -> {
|
||||
val childPackageFQN = receiver.descriptor.fqName.child(name)
|
||||
receiver.descriptor.module.getPackage(childPackageFQN).check { !it.isEmpty() } ?:
|
||||
receiver.descriptor.memberScope.getContributedClassifier(name, KotlinLookupLocation(expression))
|
||||
receiver.descriptor.memberScope.getContributedClassifier(name, location)
|
||||
}
|
||||
is ClassQualifier -> receiver.scope.getContributedClassifier(name, KotlinLookupLocation(expression))
|
||||
null -> context.scope.findClassifier(name, KotlinLookupLocation(expression)) ?:
|
||||
is ClassQualifier -> receiver.staticScope.getContributedClassifier(name, location)
|
||||
null -> context.scope.findClassifier(name, location) ?:
|
||||
context.scope.ownerDescriptor.module.getPackage(FqName.ROOT.child(name)).check { !it.isEmpty() }
|
||||
is ReceiverValue -> receiver.type.memberScope.memberScopeAsImportingScope().findClassifier(name, KotlinLookupLocation(expression))
|
||||
is ReceiverValue -> receiver.type.memberScope.memberScopeAsImportingScope().findClassifier(name, location)
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
||||
@@ -22,11 +22,8 @@ import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getTopmostParentQualifiedExpressionForSelector
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.classValueType
|
||||
import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.FilteringScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.ScopeUtils
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import java.util.*
|
||||
|
||||
interface QualifierReceiver : Receiver {
|
||||
@@ -40,8 +37,6 @@ abstract class Qualifier(val referenceExpression: KtSimpleNameExpression) : Qual
|
||||
get() = referenceExpression.getTopmostParentQualifiedExpressionForSelector() ?: referenceExpression
|
||||
|
||||
abstract val descriptor: DeclarationDescriptor
|
||||
|
||||
abstract val scope: MemberScope
|
||||
}
|
||||
|
||||
class PackageQualifier(
|
||||
@@ -49,8 +44,6 @@ class PackageQualifier(
|
||||
override val descriptor: PackageViewDescriptor
|
||||
) : Qualifier(referenceExpression) {
|
||||
|
||||
override val scope: MemberScope get() = descriptor.memberScope
|
||||
|
||||
override val staticScope: MemberScope get() = descriptor.memberScope
|
||||
|
||||
override val classValueReceiver: ReceiverValue? get() = null
|
||||
@@ -62,7 +55,6 @@ class TypeParameterQualifier(
|
||||
referenceExpression: KtSimpleNameExpression,
|
||||
override val descriptor: TypeParameterDescriptor
|
||||
) : Qualifier(referenceExpression) {
|
||||
override val scope: MemberScope get() = MemberScope.Empty
|
||||
override val staticScope: MemberScope get() = MemberScope.Empty
|
||||
override val classValueReceiver: ReceiverValue? get() = null
|
||||
}
|
||||
@@ -75,30 +67,13 @@ class ClassQualifier(
|
||||
ClassValueReceiver(this, it)
|
||||
}
|
||||
|
||||
override val scope: MemberScope get() {
|
||||
val scopes = ArrayList<MemberScope>(3)
|
||||
|
||||
val classObjectTypeScope = descriptor.classValueType?.memberScope?.let {
|
||||
FilteringScope(it) { it !is ClassDescriptor }
|
||||
}
|
||||
scopes.addIfNotNull(classObjectTypeScope)
|
||||
|
||||
scopes.add(descriptor.staticScope)
|
||||
|
||||
if (descriptor.kind != ClassKind.ENUM_ENTRY) {
|
||||
scopes.add(descriptor.unsubstitutedInnerClassesScope)
|
||||
}
|
||||
|
||||
return ChainedMemberScope("Member scope for ${descriptor.name} as class or object", scopes)
|
||||
}
|
||||
|
||||
override val staticScope: MemberScope get() {
|
||||
val scopes = ArrayList<MemberScope>(2)
|
||||
|
||||
scopes.add(descriptor.staticScope)
|
||||
|
||||
if (descriptor.kind != ClassKind.ENUM_ENTRY) {
|
||||
scopes.add(ScopeUtils.getStaticNestedClassesScope(descriptor))
|
||||
scopes.add(descriptor.unsubstitutedInnerClassesScope)
|
||||
}
|
||||
|
||||
return ChainedMemberScope("Static scope for ${descriptor.name} as class or object", scopes)
|
||||
|
||||
Reference in New Issue
Block a user