Fix deserialize signatures for types and values
このコミットが含まれているのは:
コミット
4bc51a9f97
|
@ -321,9 +321,7 @@ func (p *FunctionalPropertyGenerator) serializationFuncs() (*codegen.Method, *co
|
|||
jen.List(
|
||||
jen.Id("v"),
|
||||
jen.Err(),
|
||||
).Op(":=").Add(kind.DeserializeFn.Clone().Call().Call(
|
||||
jen.Id("i"),
|
||||
)),
|
||||
).Op(":=").Add(kind.deserializeFnCode(jen.Id("i"))),
|
||||
jen.Err().Op("!=").Nil(),
|
||||
).Block(
|
||||
jen.Id(codegen.This()).Op(":=").Op("&").Id(p.StructName()).Values(
|
||||
|
@ -844,7 +842,7 @@ func (p *FunctionalPropertyGenerator) addUnknownDeserializeCode(existing jen.Cod
|
|||
),
|
||||
jen.Return(
|
||||
jen.Id(codegen.This()),
|
||||
jen.Err(),
|
||||
jen.Nil(),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
|
|
@ -201,7 +201,7 @@ func (m *ManagerGenerator) createDeserializationMethod(deserName string, pubPkg,
|
|||
/*param=*/ nil,
|
||||
[]jen.Code{
|
||||
jen.Func().Params(
|
||||
jen.Map(jen.String()).Interface(),
|
||||
jen.Interface(),
|
||||
).Params(
|
||||
jen.Qual(pubPkg.Path(), interfaceName),
|
||||
jen.Error(),
|
||||
|
@ -210,7 +210,7 @@ func (m *ManagerGenerator) createDeserializationMethod(deserName string, pubPkg,
|
|||
[]jen.Code{
|
||||
jen.Return(
|
||||
jen.Func().Params(
|
||||
jen.Id("m").Map(jen.String()).Interface(),
|
||||
jen.Id("v").Interface(),
|
||||
).Params(
|
||||
jen.Qual(pubPkg.Path(), interfaceName),
|
||||
jen.Error(),
|
||||
|
@ -218,7 +218,7 @@ func (m *ManagerGenerator) createDeserializationMethod(deserName string, pubPkg,
|
|||
jen.List(
|
||||
jen.Id("i"),
|
||||
jen.Err(),
|
||||
).Op(":=").Qual(privPkg.Path(), deserName).Call(jen.Id("m")),
|
||||
).Op(":=").Qual(privPkg.Path(), deserName).Call(jen.Id("v")),
|
||||
jen.Return(jen.List(
|
||||
jen.Id("i"),
|
||||
jen.Err(),
|
||||
|
|
|
@ -96,6 +96,17 @@ func (k Kind) lessFnCode(this, other *jen.Statement) *jen.Statement {
|
|||
return lessCall
|
||||
}
|
||||
|
||||
func (k Kind) deserializeFnCode(this *jen.Statement) *jen.Statement {
|
||||
// LessFn is not nil, this means it is a value.
|
||||
if k.LessFn != nil {
|
||||
return k.DeserializeFn.Clone().Call(this)
|
||||
} else {
|
||||
// If LessFn is nil, this means it is a type. Which requires an
|
||||
// additional Call.
|
||||
return k.DeserializeFn.Clone().Call().Call(this)
|
||||
}
|
||||
}
|
||||
|
||||
// PropertyGenerator is a common base struct used in both Functional and
|
||||
// NonFunctional ActivityStreams properties. It provides common naming patterns,
|
||||
// logic, and common Go code to be generated.
|
||||
|
|
|
@ -645,9 +645,10 @@ func (t *TypeGenerator) kindDeserializationFunc() (deser *codegen.Function) {
|
|||
deser = codegen.NewCommentedFunction(
|
||||
t.PrivatePackage().Path(),
|
||||
t.deserializationFnName(),
|
||||
[]jen.Code{jen.Id("m").Map(jen.String()).Interface()},
|
||||
[]jen.Code{jen.Id("i").Interface()},
|
||||
[]jen.Code{jen.Op("*").Id(t.TypeName()), jen.Error()},
|
||||
[]jen.Code{
|
||||
// TODO: Assertion that interface is a map.
|
||||
jen.Id(codegen.This()).Op(":=").Op("&").Id(t.TypeName()).Values(jen.Dict{
|
||||
jen.Id(unknownMember): jen.Make(jen.Map(jen.String()).Interface()),
|
||||
}),
|
||||
|
|
読み込み中…
新しいイシューから参照