visitSubExpr method

  1. @override
Uint8List visitSubExpr(
  1. SubExpr expr
)
override

Implementation

@override
Uint8List visitSubExpr(SubExpr expr) {
  final bytesBuilder = BytesBuilder();
  final array = compileAST(expr.object);
  bytesBuilder.add(array);
  final key = compileAST(expr.key);
  bytesBuilder.addByte(OpCode.createStackFrame);
  bytesBuilder.add(key);
  bytesBuilder.addByte(OpCode.retractStackFrame);
  bytesBuilder.addByte(OpCode.subGet);
  bytesBuilder.addByte(expr.isNullable ? 1 : 0);
  Uint8List? objectId;
  if (expr.object is IdentifierExpr) {
    objectId = _utf8String((expr.object as IdentifierExpr).id);
  }
  if (objectId != null) {
    bytesBuilder.addByte(1);
    bytesBuilder.add(objectId);
  } else {
    bytesBuilder.addByte(0);
  }
  return bytesBuilder.toBytes();
}