visitNominalTypeExpr method

  1. @override
Uint8List visitNominalTypeExpr(
  1. NominalTypeExpr expr
)
override

Implementation

@override
Uint8List visitNominalTypeExpr(NominalTypeExpr expr) {
  final bytesBuilder = BytesBuilder();
  if (expr.isLocal) {
    bytesBuilder.addByte(HTOpCode.local);
  }
  bytesBuilder.addByte(HTValueTypeCode.nominalType);
  bytesBuilder.add(_parseIdentifier(expr.id.id));
  bytesBuilder.addByte(expr.arguments.length); // max 255
  for (final expr in expr.arguments) {
    final typeArg = compileAST(expr); // dont' need end of exec mark here
    bytesBuilder.add(typeArg);
  }
  bytesBuilder.addByte(expr.isNullable ? 1 : 0); // bool isNullable
  return bytesBuilder.toBytes();
}