generate: Fix more semantic errors in the generated code

This commit is contained in:
Sasha Koshka 2025-07-08 21:50:29 -04:00
parent e48be0bc15
commit 3bf365a7a9

View File

@ -217,13 +217,17 @@ func (this *Generator) generateEncodeValue(typ Type, valueSource, tagSource stri
// SI stores the value in the tag, so we write nothing here // SI stores the value in the tag, so we write nothing here
break break
} }
nn, err := this.iprintf("nn, err = encoder.WriteInt%d(%s)\n", bitsToBytes(typ.Bits), valueSource) prefix := "WriteUint"
if typ.Signed {
prefix = "WriteInt"
}
nn, err := this.iprintf("nn, err = encoder.%s%d(%s)\n", prefix, typ.Bits, valueSource)
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
nn, err = this.generateErrorCheck() nn, err = this.generateErrorCheck()
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
case TypeFloat: case TypeFloat:
// FP: <value: FloatN> // FP: <value: FloatN>
nn, err := this.iprintf("nn, err = encoder.WriteFloat%d(%s)\n", bitsToBytes(typ.Bits), valueSource) nn, err := this.iprintf("nn, err = encoder.WriteFloat%d(%s)\n", typ.Bits, valueSource)
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
nn, err = this.generateErrorCheck() nn, err = this.generateErrorCheck()
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
@ -504,9 +508,12 @@ func (this *Generator) generateType(typ Type) (n int, err error) {
nn, err := this.generateTypeTableDefined(typ) nn, err := this.generateTypeTableDefined(typ)
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
case TypeNamed: case TypeNamed:
actual, err := this.resolveTypeName(typ.Name) if builtin := this.resolveBuiltinType(typ.Name); builtin != nil {
if err != nil { return n, err } nn, err := this.generateType(builtin)
nn, err := this.generateType(actual) n += nn; if err != nil { return n, err }
return n, nil
}
nn, err := this.print(typ.Name)
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
} }
return n, nil return n, nil