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