Fixes and refactors

This commit is contained in:
Irene Dea
2021-10-21 13:22:51 -07:00
committed by Dmitriy Novozhilov
parent 2e2e70fede
commit 19bfc43bee
70 changed files with 263 additions and 327 deletions
@@ -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
)
}
@@ -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)