visitAssertStmt method

  1. @override
Uint8List visitAssertStmt(
  1. AssertStmt stmt
)
override

Implementation

@override
Uint8List visitAssertStmt(AssertStmt stmt) {
  final bytesBuilder = BytesBuilder();
  if (!config.removeAssertion) {
    bytesBuilder.add(_lineInfo(stmt.line, stmt.column));
    final hasDescription = stmt.description != null;
    if (hasDescription) {
      bytesBuilder.add(compileAST(stmt.description!));
    }
    bytesBuilder.add(compileAST(stmt.expr));
    bytesBuilder.addByte(OpCode.assertion);
    final content = stmt.source!.content;
    final text = content.substring(stmt.expr.offset, stmt.expr.end);
    bytesBuilder.add(_utf8String(text.trim()));
    bytesBuilder.addByte(hasDescription ? 1 : 0);
    bytesBuilder.addByte(OpCode.endOfStmt);
  }
  return bytesBuilder.toBytes();
}