Minor. Make DeserializedType subclass of AbstractLazyType
This commit is contained in:
+4
-13
@@ -29,36 +29,29 @@ import org.jetbrains.kotlin.utils.toReadOnlyList
|
|||||||
class DeserializedType(
|
class DeserializedType(
|
||||||
c: DeserializationContext,
|
c: DeserializationContext,
|
||||||
private val typeProto: ProtoBuf.Type
|
private val typeProto: ProtoBuf.Type
|
||||||
) : AbstractJetType(), LazyType {
|
) : AbstractLazyType(c.storageManager), LazyType {
|
||||||
private val typeDeserializer = c.typeDeserializer
|
private val typeDeserializer = c.typeDeserializer
|
||||||
|
|
||||||
private val constructor = c.storageManager.createLazyValue {
|
override fun computeTypeConstructor() = typeDeserializer.typeConstructor(typeProto)
|
||||||
typeDeserializer.typeConstructor(typeProto)
|
|
||||||
}
|
|
||||||
|
|
||||||
private val arguments = c.storageManager.createLazyValue {
|
override fun computeArguments() =
|
||||||
typeProto.getArgumentList().mapIndexed {
|
typeProto.getArgumentList().mapIndexed {
|
||||||
index, proto ->
|
index, proto ->
|
||||||
typeDeserializer.typeArgument(getConstructor().getParameters().getOrNull(index), proto)
|
typeDeserializer.typeArgument(getConstructor().getParameters().getOrNull(index), proto)
|
||||||
}.toReadOnlyList()
|
}.toReadOnlyList()
|
||||||
}
|
|
||||||
|
|
||||||
private val memberScope = c.storageManager.createLazyValue {
|
override fun computeMemberScope() =
|
||||||
if (isError()) {
|
if (isError()) {
|
||||||
ErrorUtils.createErrorScope(getConstructor().toString())
|
ErrorUtils.createErrorScope(getConstructor().toString())
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
getTypeMemberScope(getConstructor(), getArguments())
|
getTypeMemberScope(getConstructor(), getArguments())
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private val annotations = DeserializedAnnotations(c.storageManager) {
|
private val annotations = DeserializedAnnotations(c.storageManager) {
|
||||||
c.components.annotationAndConstantLoader.loadTypeAnnotations(typeProto, c.nameResolver)
|
c.components.annotationAndConstantLoader.loadTypeAnnotations(typeProto, c.nameResolver)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getConstructor(): TypeConstructor = constructor()
|
|
||||||
|
|
||||||
override fun getArguments(): List<TypeProjection> = arguments()
|
|
||||||
|
|
||||||
override fun isMarkedNullable(): Boolean = typeProto.getNullable()
|
override fun isMarkedNullable(): Boolean = typeProto.getNullable()
|
||||||
|
|
||||||
@@ -71,8 +64,6 @@ class DeserializedType(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getMemberScope(): JetScope = memberScope()
|
|
||||||
|
|
||||||
override fun isError(): Boolean {
|
override fun isError(): Boolean {
|
||||||
val descriptor = getConstructor().getDeclarationDescriptor()
|
val descriptor = getConstructor().getDeclarationDescriptor()
|
||||||
return descriptor != null && ErrorUtils.isError(descriptor)
|
return descriptor != null && ErrorUtils.isError(descriptor)
|
||||||
|
|||||||
Reference in New Issue
Block a user