#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  return [ 1, 2 ];
"
frame size: 0
parameter count: 1
bytecode array length: 6
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   34 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
  /*   50 S> */ B(Return),
]
constant pool: [
  TUPLE2_TYPE,
]
handlers: [
]

---
snippet: "
  var a = 1; return [ a, a + 1 ];
"
frame size: 3
parameter count: 1
bytecode array length: 36
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(CreateArrayLiteral), U8(0), U8(1), U8(37),
                B(Star), R(2),
                B(LdaZero),
                B(Star), R(1),
                B(Ldar), R(0),
  /*   54 E> */ B(StaKeyedProperty), R(2), R(1), U8(2),
                B(LdaSmi), I8(1),
                B(Star), R(1),
                B(Ldar), R(0),
  /*   59 E> */ B(AddSmi), I8(1), U8(0),
                B(StaKeyedProperty), R(2), R(1), U8(2),
                B(Ldar), R(2),
  /*   65 S> */ B(Return),
]
constant pool: [
  TUPLE2_TYPE,
]
handlers: [
]

---
snippet: "
  return [ [ 1, 2 ], [ 3 ] ];
"
frame size: 0
parameter count: 1
bytecode array length: 6
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   34 S> */ B(CreateArrayLiteral), U8(0), U8(2), U8(4),
  /*   61 S> */ B(Return),
]
constant pool: [
  TUPLE2_TYPE,
]
handlers: [
]

---
snippet: "
  var a = 1; return [ [ a, 2 ], [ a + 2 ] ];
"
frame size: 5
parameter count: 1
bytecode array length: 66
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(CreateArrayLiteral), U8(0), U8(7), U8(4),
                B(Star), R(2),
                B(LdaZero),
                B(Star), R(1),
                B(CreateArrayLiteral), U8(1), U8(0), U8(37),
                B(Star), R(4),
                B(LdaZero),
                B(Star), R(3),
                B(Ldar), R(0),
  /*   56 E> */ B(StaKeyedProperty), R(4), R(3), U8(1),
                B(Ldar), R(4),
                B(StaKeyedProperty), R(2), R(1), U8(8),
                B(LdaSmi), I8(1),
                B(Star), R(1),
                B(CreateArrayLiteral), U8(2), U8(4), U8(37),
                B(Star), R(4),
                B(LdaZero),
                B(Star), R(3),
                B(Ldar), R(0),
  /*   68 E> */ B(AddSmi), I8(2), U8(3),
                B(StaKeyedProperty), R(4), R(3), U8(5),
                B(Ldar), R(4),
                B(StaKeyedProperty), R(2), R(1), U8(8),
                B(Ldar), R(2),
  /*   76 S> */ B(Return),
]
constant pool: [
  TUPLE2_TYPE,
  TUPLE2_TYPE,
  TUPLE2_TYPE,
]
handlers: [
]

