Allow '@Serializable' on a type usage (for kotlinx.serialization/367)
This commit is contained in:
+1
@@ -113,6 +113,7 @@ fun AbstractSerialGenerator.findTypeSerializerOrContext(
|
||||
): ClassDescriptor? {
|
||||
if (kType.isTypeParameter()) return null
|
||||
if (kType.isMarkedNullable) return findTypeSerializerOrContext(module, kType.makeNotNullable(), annotations, sourceElement)
|
||||
annotations.serializableWith(module)?.let { return it.toClassDescriptor }
|
||||
additionalSerializersInScopeOfCurrentFile[kType]?.let { return it }
|
||||
if (kType in contextualKClassListInCurrentFile) return module.getClassFromSerializationPackage(SpecialBuiltins.contextSerializer)
|
||||
return analyzeSpecialSerializers(module, annotations) ?: findTypeSerializer(module, kType) ?: throw CompilationException(
|
||||
|
||||
+4
-1
@@ -78,7 +78,10 @@ internal fun extractKSerializerArgumentFromImplementation(implementationClass: C
|
||||
}
|
||||
|
||||
internal val DeclarationDescriptor.serializableWith: KotlinType?
|
||||
get() = annotations.findAnnotationKotlinTypeValue(SerializationAnnotations.serializableAnnotationFqName, module,"with")
|
||||
get() = annotations.serializableWith(module)
|
||||
|
||||
internal fun Annotations.serializableWith(module: ModuleDescriptor): KotlinType? =
|
||||
this.findAnnotationKotlinTypeValue(SerializationAnnotations.serializableAnnotationFqName, module,"with")
|
||||
|
||||
internal val DeclarationDescriptor.serializerForClass: KotlinType?
|
||||
get() = annotations.findAnnotationKotlinTypeValue(SerializationAnnotations.serializerAnnotationFqName, module, "forClass")
|
||||
|
||||
Reference in New Issue
Block a user