From 30e9ead1abc51b6ac2394d12cf909472d4301812 Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Wed, 6 Aug 2025 17:27:04 -0400 Subject: [PATCH] generate: Do the same for .Decode --- generate/generate.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/generate/generate.go b/generate/generate.go index 8763b2b..5f81d26 100644 --- a/generate/generate.go +++ b/generate/generate.go @@ -175,6 +175,24 @@ func (this *Generator) generateTypedef(name string, typ Type) (n int, err error) this.push() nn, err = this.iprintf("var nn int\n") n += nn; if err != nil { return n, err } + + nn, err = this.iprintf("if !(") + n += nn; if err != nil { return n, err } + nn, err = this.generateCanAssign(typ, "tag") + n += nn; if err != nil { return n, err } + nn, err = this.printf(") {\n") + n += nn; if err != nil { return n, err } + this.push() + nn, err = this.iprintf("nn, err = tape.Skim(decoder, tag)") + n += nn; if err != nil { return n, err } + nn, err = this.generateErrorCheck() + n += nn; if err != nil { return n, err } + nn, err = this.iprintf("return n, nil") + n += nn; if err != nil { return n, err } + this.pop() + nn, err = this.iprintf("}\n") + n += nn; if err != nil { return n, err } + nn, err = this.generateDecodeValue(typ, "this", "tag") n += nn; if err != nil { return n, err } nn, err = this.iprintf("return n, nil\n")