From 226e690a869058dfbb663f77d9e879e5b90eedd5 Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Mon, 22 Feb 2016 21:12:36 +0300 Subject: [PATCH] Minor. refactoring in Qualifier. --- .../resolve/QualifiedExpressionResolveUtil.kt | 5 +-- .../resolve/scopes/receivers/Qualifier.kt | 32 ++++++++++--------- .../CreateCallableFromCallActionFactory.kt | 5 +-- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolveUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolveUtil.kt index c08f5c98039..f8621682dc7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolveUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolveUtil.kt @@ -21,10 +21,7 @@ import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.resolve.descriptorUtil.classValueDescriptor import org.jetbrains.kotlin.resolve.descriptorUtil.classValueTypeDescriptor import org.jetbrains.kotlin.resolve.descriptorUtil.hasCompanionObject -import org.jetbrains.kotlin.resolve.scopes.receivers.ClassQualifier -import org.jetbrains.kotlin.resolve.scopes.receivers.PackageQualifier -import org.jetbrains.kotlin.resolve.scopes.receivers.Qualifier -import org.jetbrains.kotlin.resolve.scopes.receivers.TypeParameterQualifier +import org.jetbrains.kotlin.resolve.scopes.receivers.* import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator import org.jetbrains.kotlin.types.expressions.ExpressionTypingContext diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt index 53b14ae672b..bdfea8fb444 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt @@ -27,42 +27,44 @@ import org.jetbrains.kotlin.types.KotlinType import java.util.* interface QualifierReceiver : Receiver { + val descriptor: DeclarationDescriptor + val staticScope: MemberScope val classValueReceiver: ReceiverValue? } -abstract class Qualifier(val referenceExpression: KtSimpleNameExpression) : QualifierReceiver { - val expression: KtExpression - get() = referenceExpression.getTopmostParentQualifiedExpressionForSelector() ?: referenceExpression - - abstract val descriptor: DeclarationDescriptor +interface Qualifier : QualifierReceiver { + val referenceExpression: KtSimpleNameExpression } +val Qualifier.expression: KtExpression + get() = referenceExpression.getTopmostParentQualifiedExpressionForSelector() ?: referenceExpression + class PackageQualifier( - referenceExpression: KtSimpleNameExpression, + override val referenceExpression: KtSimpleNameExpression, override val descriptor: PackageViewDescriptor -) : Qualifier(referenceExpression) { - - override val staticScope: MemberScope get() = descriptor.memberScope - +) : Qualifier { override val classValueReceiver: ReceiverValue? get() = null + override val staticScope: MemberScope get() = descriptor.memberScope override fun toString() = "Package{$descriptor}" } class TypeParameterQualifier( - referenceExpression: KtSimpleNameExpression, + override val referenceExpression: KtSimpleNameExpression, override val descriptor: TypeParameterDescriptor -) : Qualifier(referenceExpression) { - override val staticScope: MemberScope get() = MemberScope.Empty +) : Qualifier { override val classValueReceiver: ReceiverValue? get() = null + override val staticScope: MemberScope get() = MemberScope.Empty + + override fun toString() = "TypeParameter{$descriptor}" } class ClassQualifier( - referenceExpression: KtSimpleNameExpression, + override val referenceExpression: KtSimpleNameExpression, override val descriptor: ClassDescriptor -) : Qualifier(referenceExpression) { +) : Qualifier { override val classValueReceiver: ClassValueReceiver? = descriptor.classValueType?.let { ClassValueReceiver(this, it) } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt index ac55f49c3fb..3d207fceb73 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt @@ -40,10 +40,7 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getCall import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.descriptorUtil.classValueType -import org.jetbrains.kotlin.resolve.scopes.receivers.ClassQualifier -import org.jetbrains.kotlin.resolve.scopes.receivers.Qualifier -import org.jetbrains.kotlin.resolve.scopes.receivers.Receiver -import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue +import org.jetbrains.kotlin.resolve.scopes.receivers.* import org.jetbrains.kotlin.resolve.source.getPsi import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf