Minor. refactoring in Qualifier.
This commit is contained in:
+1
-4
@@ -21,10 +21,7 @@ import org.jetbrains.kotlin.diagnostics.Errors
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.classValueDescriptor
|
import org.jetbrains.kotlin.resolve.descriptorUtil.classValueDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.classValueTypeDescriptor
|
import org.jetbrains.kotlin.resolve.descriptorUtil.classValueTypeDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.hasCompanionObject
|
import org.jetbrains.kotlin.resolve.descriptorUtil.hasCompanionObject
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ClassQualifier
|
import org.jetbrains.kotlin.resolve.scopes.receivers.*
|
||||||
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.validation.SymbolUsageValidator
|
import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator
|
||||||
import org.jetbrains.kotlin.types.expressions.ExpressionTypingContext
|
import org.jetbrains.kotlin.types.expressions.ExpressionTypingContext
|
||||||
|
|
||||||
|
|||||||
@@ -27,42 +27,44 @@ import org.jetbrains.kotlin.types.KotlinType
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
interface QualifierReceiver : Receiver {
|
interface QualifierReceiver : Receiver {
|
||||||
|
val descriptor: DeclarationDescriptor
|
||||||
|
|
||||||
val staticScope: MemberScope
|
val staticScope: MemberScope
|
||||||
|
|
||||||
val classValueReceiver: ReceiverValue?
|
val classValueReceiver: ReceiverValue?
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class Qualifier(val referenceExpression: KtSimpleNameExpression) : QualifierReceiver {
|
interface Qualifier : QualifierReceiver {
|
||||||
val expression: KtExpression
|
val referenceExpression: KtSimpleNameExpression
|
||||||
get() = referenceExpression.getTopmostParentQualifiedExpressionForSelector() ?: referenceExpression
|
|
||||||
|
|
||||||
abstract val descriptor: DeclarationDescriptor
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val Qualifier.expression: KtExpression
|
||||||
|
get() = referenceExpression.getTopmostParentQualifiedExpressionForSelector() ?: referenceExpression
|
||||||
|
|
||||||
class PackageQualifier(
|
class PackageQualifier(
|
||||||
referenceExpression: KtSimpleNameExpression,
|
override val referenceExpression: KtSimpleNameExpression,
|
||||||
override val descriptor: PackageViewDescriptor
|
override val descriptor: PackageViewDescriptor
|
||||||
) : Qualifier(referenceExpression) {
|
) : Qualifier {
|
||||||
|
|
||||||
override val staticScope: MemberScope get() = descriptor.memberScope
|
|
||||||
|
|
||||||
override val classValueReceiver: ReceiverValue? get() = null
|
override val classValueReceiver: ReceiverValue? get() = null
|
||||||
|
override val staticScope: MemberScope get() = descriptor.memberScope
|
||||||
|
|
||||||
override fun toString() = "Package{$descriptor}"
|
override fun toString() = "Package{$descriptor}"
|
||||||
}
|
}
|
||||||
|
|
||||||
class TypeParameterQualifier(
|
class TypeParameterQualifier(
|
||||||
referenceExpression: KtSimpleNameExpression,
|
override val referenceExpression: KtSimpleNameExpression,
|
||||||
override val descriptor: TypeParameterDescriptor
|
override val descriptor: TypeParameterDescriptor
|
||||||
) : Qualifier(referenceExpression) {
|
) : Qualifier {
|
||||||
override val staticScope: MemberScope get() = MemberScope.Empty
|
|
||||||
override val classValueReceiver: ReceiverValue? get() = null
|
override val classValueReceiver: ReceiverValue? get() = null
|
||||||
|
override val staticScope: MemberScope get() = MemberScope.Empty
|
||||||
|
|
||||||
|
override fun toString() = "TypeParameter{$descriptor}"
|
||||||
}
|
}
|
||||||
|
|
||||||
class ClassQualifier(
|
class ClassQualifier(
|
||||||
referenceExpression: KtSimpleNameExpression,
|
override val referenceExpression: KtSimpleNameExpression,
|
||||||
override val descriptor: ClassDescriptor
|
override val descriptor: ClassDescriptor
|
||||||
) : Qualifier(referenceExpression) {
|
) : Qualifier {
|
||||||
override val classValueReceiver: ClassValueReceiver? = descriptor.classValueType?.let {
|
override val classValueReceiver: ClassValueReceiver? = descriptor.classValueType?.let {
|
||||||
ClassValueReceiver(this, it)
|
ClassValueReceiver(this, it)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-4
@@ -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.calls.callUtil.getResolvedCall
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.classValueType
|
import org.jetbrains.kotlin.resolve.descriptorUtil.classValueType
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ClassQualifier
|
import org.jetbrains.kotlin.resolve.scopes.receivers.*
|
||||||
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.source.getPsi
|
import org.jetbrains.kotlin.resolve.source.getPsi
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
|
import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
|
||||||
|
|||||||
Reference in New Issue
Block a user