compiler: support byte slice declaration

This commit is contained in:
Evgenii Stratonikov 2020-05-19 17:02:26 +03:00
parent 582469028b
commit 34a4c15932
2 changed files with 13 additions and 0 deletions

View file

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

View file

@ -130,6 +130,17 @@ var sliceTestCases = []testCase{
}`, }`,
[]byte{2, 3}, []byte{2, 3},
}, },
{
"declare byte slice",
`package foo
func Main() []byte {
var a []byte
a = append(a, 1)
a = append(a, 2)
return a
}`,
[]byte{1, 2},
},
{ {
"declare compound slice", "declare compound slice",
`package foo `package foo