From 1118b11bcd5b2967ade5c17f4e42feaa98712899 Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Wed, 6 Aug 2025 17:24:51 -0400 Subject: [PATCH] generate: Properly check assignment within .Decode --- generate/generate.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/generate/generate.go b/generate/generate.go index 2f6c634..8763b2b 100644 --- a/generate/generate.go +++ b/generate/generate.go @@ -246,15 +246,24 @@ func (this *Generator) generateMessage(method uint16, message Message) (n int, e n += nn; if err != nil { return n, err } nn, err = this.generateErrorCheck() n += nn; if err != nil { return n, err } - nn, err = this.iprintf("if !tag.Is(") + + nn, err = this.iprintf("if !(") n += nn; if err != nil { return n, err } - nn, err = this.generateTN(message.Type) + nn, err = this.generateCanAssign(message.Type, "tag") n += nn; if err != nil { return n, err } nn, err = this.printf(") {\n") n += nn; if err != nil { return n, err } - // TODO skip value using the correct TAPE function and return + 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(message.Type, "this", "tag") n += nn; if err != nil { return n, err } nn, err = this.iprintf("return n, nil\n")