compiler: support var-declaration of byte slices

Related #801.
This commit is contained in:
Evgenii Stratonikov 2020-05-13 13:24:49 +03:00
parent 3a4ed7dfe8
commit 1a4a0c154b
2 changed files with 13 additions and 1 deletions

View file

@ -235,7 +235,8 @@ func (c *codegen) emitDefault(t types.Type) {
if isCompoundSlice(t) {
emit.Opcode(c.prog.BinWriter, opcode.NEWARRAY0)
} else {
emit.Bytes(c.prog.BinWriter, []byte{})
emit.Int(c.prog.BinWriter, 0)
emit.Opcode(c.prog.BinWriter, opcode.NEWBUFFER)
}
case *types.Struct:
emit.Int(c.prog.BinWriter, int64(t.NumFields()))

View file

@ -201,6 +201,17 @@ var sliceTestCases = []testCase{
}`,
[]byte{0x61, 0x62, 0x63},
},
{
"declare and append byte-slice",
`package foo
func Main() []byte {
var a []byte
a = append(a, 1)
a = append(a, 2)
return a
}`,
[]byte{1, 2},
},
}
func TestSliceOperations(t *testing.T) {