]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Use _ctmp%d_ for compiler variables since they are globally mapped. Fix templates
authorLuca Bruno <lucabru@src.gnome.org>
Sat, 1 Feb 2014 17:26:35 +0000 (18:26 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 11 Mar 2019 12:52:38 +0000 (13:52 +0100)
codegen/valaccodebasemodule.vala
codegen/valaccodetransformer.vala
vala/valatemplate.vala

index 5402828272839281f08479933c606b346ba5655c..81c98f413cff5d37694ea58a5ad641573ffa3fc8 100644 (file)
@@ -2412,7 +2412,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        }
                        // 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);
index 413b64a1af5e3a3c2cfd7bd2923c9bdf30f0c0b8..4b8c68a0db1ffdd027307acd356b2489b516d467 100644 (file)
@@ -530,7 +530,7 @@ public class Vala.CCodeTransformer : CodeTransformer {
                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 ()");
                }
        }
 
@@ -545,7 +545,7 @@ public class Vala.CCodeTransformer : CodeTransformer {
                } 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]));
                                }
index cf45522cf067d93db0b7ff9268a7e8abfab93a82..7921d30f6b22cb06e7ca47c1abbcb54181300a61 100644 (file)
@@ -51,6 +51,25 @@ public class Vala.Template : Expression {
                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) {