visitMemberExpr method

  1. @override
Uint8List visitMemberExpr(
  1. MemberExpr expr
)
override

Implementation

@override
Uint8List visitMemberExpr(MemberExpr expr) {
  final bytesBuilder = BytesBuilder();
  final object = compileAST(expr.object);
  bytesBuilder.add(object);
  final key = compileAST(expr.key);
  bytesBuilder.add(key);
  bytesBuilder.addByte(OpCode.memberGet);
  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();
}