AW
Size: a a a
AW
AW
ВС
AW
AD
AO
AE
@Serializer(forClass = ClassName::class)
companion object : UnionTypeSerializer<ClassName>(ClassName::class) {
override fun choose(element: JsonElement): KClass<out ClassName> = when {
element is JsonLiteral && element.isString -> Named::class
element is JsonObject && element["nodeType"]!!.content == "Stmt_Class" -> Anonymous::class
else -> Expr::class
}
}
companion object Adapter {
@ToJson
fun toJson(name: ClassName): Any = when (name) {
is Named -> name.name
is Expr -> name.expr
is Anonymous -> name.expr
}
@FromJson
fun fromJson(
reader: JsonReader,
nodeAdapter: JsonAdapter<NodeAbstract>
): ClassName = when (val node = nodeAdapter.fromJson(reader)) {
is Name -> Named(node)
is Stmt.Class -> Anonymous(node)
is NodeAbstract.Expr -> Expr(node)
else -> throw JsonDataException("Unexpected node $node")
}
}
AW
AN
AN
AE
AE
AW
AD
AE
AN
AN
AW
AM
AD