Do not report error about 'initializer required for @Transient properties' on lateinit vars
Fixes https://github.com/Kotlin/kotlinx.serialization/issues/553
This commit is contained in:
+1
-1
@@ -114,7 +114,7 @@ open class SerializationPluginDeclarationChecker : DeclarationChecker {
|
||||
filterUninitialized = false
|
||||
) + declaration.primaryConstructorPropertiesDescriptorsMap(trace.bindingContext)
|
||||
propertiesMap.forEach { (descriptor, declaration) ->
|
||||
val isInitialized = declarationHasInitializer(declaration)
|
||||
val isInitialized = declarationHasInitializer(declaration) || descriptor.isLateInit
|
||||
val isMarkedTransient = descriptor.annotations.serialTransient
|
||||
val hasBackingField = descriptor.hasBackingField(trace.bindingContext)
|
||||
if (!hasBackingField && isMarkedTransient) {
|
||||
|
||||
Vendored
+3
@@ -6,4 +6,7 @@ import kotlinx.serialization.*
|
||||
@Serializable
|
||||
data class WithTransients(<!PLUGIN_ERROR("This property is marked as @Transient and therefore must have an initializing expression")!>@Transient val missing: Int<!>) {
|
||||
<!PLUGIN_WARNING("Property does not have backing field which makes it non-serializable and therefore @Transient is redundant")!>@Transient<!> val redundant: Int get() = 42
|
||||
|
||||
@Transient
|
||||
lateinit var allowTransientLateinitWithoutInitializer: String
|
||||
}
|
||||
|
||||
Vendored
+1
@@ -3,6 +3,7 @@ package
|
||||
@kotlinx.serialization.Serializable public final data class WithTransients {
|
||||
public constructor WithTransients(/*0*/ missing: kotlin.Int)
|
||||
@kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public /*synthesized*/ constructor WithTransients(/*0*/ seen1: kotlin.Int, /*1*/ serializationConstructorMarker: kotlinx.serialization.SerializationConstructorMarker?)
|
||||
@kotlinx.serialization.Transient public final lateinit var allowTransientLateinitWithoutInitializer: kotlin.String
|
||||
@kotlinx.serialization.Transient public final val missing: kotlin.Int
|
||||
@kotlinx.serialization.Transient public final val redundant: kotlin.Int
|
||||
public final operator /*synthesized*/ fun component1(): kotlin.Int
|
||||
|
||||
Reference in New Issue
Block a user