visitSubExpr method
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();
}