Minor. refactoring in Qualifier.

This commit is contained in:
Stanislav Erokhin
2016-02-22 21:12:36 +03:00
parent f130de2468
commit 226e690a86
3 changed files with 19 additions and 23 deletions
@@ -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
@@ -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)
}
@@ -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