visitStringInterpolationExpr method

  1. @override
Uint8List visitStringInterpolationExpr(
  1. ASTStringInterpolation expr
)
override

Implementation

@override
Uint8List visitStringInterpolationExpr(ASTStringInterpolation expr) {
  final bytesBuilder = BytesBuilder();
  // Compile interpolations first — they push onto operand stack
  for (final node in expr.interpolations) {
    bytesBuilder.add(compileAST(node));
  }
  // Terminal opcode
  bytesBuilder.addByte(OpCode.makeString);
  var literal = expr.text;
  _lexicon.escapeCharacters.forEach((key, value) {
    literal = literal.replaceAll(key, value);
  });
  bytesBuilder.add(_utf8String(literal));
  bytesBuilder.addByte(expr.interpolations.length);
  return bytesBuilder.toBytes();
}