Fixes and refactors
This commit is contained in:
committed by
Dmitriy Novozhilov
parent
2e2e70fede
commit
19bfc43bee
+3
-3
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPackageMemberScope
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
import org.jetbrains.kotlin.types.TypeAttributeTranslator
|
||||
import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslatorsForInjection
|
||||
import org.jetbrains.kotlin.types.checker.NewKotlinTypeChecker
|
||||
import java.io.InputStream
|
||||
|
||||
@@ -47,7 +47,7 @@ class MetadataPackageFragmentProvider(
|
||||
contractDeserializer: ContractDeserializer,
|
||||
kotlinTypeChecker: NewKotlinTypeChecker,
|
||||
samConversionResolver: SamConversionResolver,
|
||||
typeAttributeTranslators: List<TypeAttributeTranslator>
|
||||
typeAttributeTranslators: TypeAttributeTranslatorsForInjection
|
||||
) : AbstractDeserializedPackageFragmentProvider(storageManager, finder, moduleDescriptor) {
|
||||
init {
|
||||
components = DeserializationComponents(
|
||||
@@ -68,7 +68,7 @@ class MetadataPackageFragmentProvider(
|
||||
BuiltInSerializerProtocol.extensionRegistry,
|
||||
kotlinTypeChecker,
|
||||
samConversionResolver,
|
||||
typeAttributeTranslators = typeAttributeTranslators
|
||||
typeAttributeTranslators = typeAttributeTranslators.translators
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+10
-4
@@ -67,9 +67,13 @@ class TypeDeserializer(
|
||||
return simpleType(proto, expandTypeAliases = true)
|
||||
}
|
||||
|
||||
private fun List<TypeAttributeTranslator>.toAttributes(annotations: Annotations): TypeAttributes {
|
||||
private fun List<TypeAttributeTranslator>.toAttributes(
|
||||
annotations: Annotations,
|
||||
constructor: TypeConstructor,
|
||||
containingDeclaration: DeclarationDescriptor
|
||||
): TypeAttributes {
|
||||
val translated = this.map { translator ->
|
||||
translator.toAttributes(annotations)
|
||||
translator.toAttributes(annotations, constructor, containingDeclaration)
|
||||
}.flatten()
|
||||
return TypeAttributes.create(translated)
|
||||
}
|
||||
@@ -92,7 +96,7 @@ class TypeDeserializer(
|
||||
c.components.annotationAndConstantLoader.loadTypeAnnotations(proto, c.nameResolver)
|
||||
}
|
||||
|
||||
val attributes = c.components.typeAttributeTranslators.toAttributes(annotations)
|
||||
val attributes = c.components.typeAttributeTranslators.toAttributes(annotations, constructor, c.containingDeclaration)
|
||||
|
||||
fun ProtoBuf.Type.collectAllArguments(): List<ProtoBuf.Type.Argument> =
|
||||
argumentList + outerType(c.typeTable)?.collectAllArguments().orEmpty()
|
||||
@@ -107,7 +111,9 @@ class TypeDeserializer(
|
||||
expandTypeAliases && declarationDescriptor is TypeAliasDescriptor -> {
|
||||
val expandedType = with(KotlinTypeFactory) { declarationDescriptor.computeExpandedType(arguments) }
|
||||
val expandedAttributes = c.components.typeAttributeTranslators.toAttributes(
|
||||
Annotations.create(annotations + expandedType.annotations)
|
||||
Annotations.create(annotations + expandedType.annotations),
|
||||
constructor,
|
||||
c.containingDeclaration
|
||||
)
|
||||
expandedType
|
||||
.makeNullableAsSpecified(expandedType.isNullable() || proto.nullable)
|
||||
|
||||
Reference in New Issue
Block a user