Translate attributes in TypeDeserializer
This commit is contained in:
committed by
Dmitriy Novozhilov
parent
d444978ebf
commit
2e2e70fede
+2
-2
@@ -7,12 +7,12 @@ package org.jetbrains.kotlin.types
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
|
||||
interface TypeAttributesTranslator {
|
||||
interface TypeAttributeTranslator {
|
||||
fun toAttributes(annotations: Annotations): TypeAttributes
|
||||
fun toAnnotations(attributes: TypeAttributes): Annotations
|
||||
}
|
||||
|
||||
object DefaultTypeAttributesTranslator : TypeAttributesTranslator {
|
||||
object DefaultTypeAttributeTranslator : TypeAttributeTranslator {
|
||||
override fun toAnnotations(attributes: TypeAttributes): Annotations {
|
||||
return attributes.customAnnotations
|
||||
}
|
||||
@@ -114,9 +114,9 @@ class TypeAttributes private constructor(attributes: List<TypeAttribute<*>>) : A
|
||||
}
|
||||
|
||||
fun TypeAttributes.toDefaultAnnotations(): Annotations =
|
||||
DefaultTypeAttributesTranslator.toAnnotations(this)
|
||||
DefaultTypeAttributeTranslator.toAnnotations(this)
|
||||
|
||||
fun Annotations.toDefaultAttributes(): TypeAttributes = DefaultTypeAttributesTranslator.toAttributes(this)
|
||||
fun Annotations.toDefaultAttributes(): TypeAttributes = DefaultTypeAttributeTranslator.toAttributes(this)
|
||||
|
||||
fun TypeAttributes.replaceAnnotations(newAnnotations: Annotations): TypeAttributes {
|
||||
val withoutCustom = (custom?.let { this.remove(it) } ?: this)
|
||||
|
||||
@@ -534,7 +534,7 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext, TypeSy
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return KotlinTypeFactory.simpleType(
|
||||
DefaultTypeAttributesTranslator.toAttributes(resultingAnnotations),
|
||||
DefaultTypeAttributeTranslator.toAttributes(resultingAnnotations),
|
||||
constructor,
|
||||
arguments as List<TypeProjection>,
|
||||
nullable
|
||||
|
||||
+8
-5
@@ -10,11 +10,12 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||
import org.jetbrains.kotlin.types.*
|
||||
|
||||
interface TypeAttributeTranslatorExtension : TypeAttributesTranslator
|
||||
interface TypeAttributeTranslatorExtension : TypeAttributeTranslator
|
||||
|
||||
class TypeAttributeTranslators private constructor(val translators: List<TypeAttributeTranslator>) {
|
||||
|
||||
constructor(project: Project) : this(getInstances(project) + DefaultTypeAttributeTranslator)
|
||||
|
||||
class TypeAttributeTranslators(project: Project) {
|
||||
val translators: List<TypeAttributesTranslator> =
|
||||
getInstances(project) + DefaultTypeAttributesTranslator
|
||||
|
||||
fun toAttributes(annotations: Annotations): TypeAttributes {
|
||||
val translated = translators.map { translator ->
|
||||
@@ -34,5 +35,7 @@ class TypeAttributeTranslators(project: Project) {
|
||||
ProjectExtensionDescriptor<TypeAttributeTranslatorExtension>(
|
||||
"org.jetbrains.kotlin.extensions.typeAttribute",
|
||||
TypeAttributeTranslatorExtension::class.java
|
||||
)
|
||||
) {
|
||||
val Default = TypeAttributeTranslators(listOf(DefaultTypeAttributeTranslator))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user