}
// compiler-internal variable
if (!variable_name_map.contains (name)) {
- variable_name_map.set (name, "_tmp%d_".printf (next_temp_var_id));
+ variable_name_map.set (name, "_ctmp%d_".printf (next_temp_var_id));
next_temp_var_id++;
}
return variable_name_map.get (name);
if (expr.value_type.data_type != null && expr.value_type.data_type.is_subtype_of (context.analyzer.string_type.data_type)) {
return expr;
} else {
- return expression (@"($expr).to_string ()");
+ return expression (@"$expr.to_string ()");
}
}
} else {
replacement = stringify (expression_list[0]);
if (expression_list.size > 1) {
- var concat = (MethodCall) expression (@"($replacement).concat()");
+ var concat = (MethodCall) expression (@"$replacement.concat()");
for (int i = 1; i < expression_list.size; i++) {
concat.add_argument (stringify (expression_list[i]));
}
return false;
}
+ public override string to_string () {
+ var b = new StringBuilder ();
+ b.append ("@\"");
+
+ foreach (var expr in expression_list) {
+ if (expr is StringLiteral) {
+ unowned string value = ((StringLiteral) expr).value;
+ b.append (value.substring (1, (uint) (value.length - 2)));
+ } else {
+ b.append ("$(");
+ b.append (expr.to_string ());
+ b.append_c (')');
+ }
+ }
+
+ b.append_c ('"');
+ return b.str;
+ }
+
public override void replace_expression (Expression old_node, Expression new_node) {
int index = expression_list.index_of (old_node);
if (index >= 0) {