]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Fix and add more to_string() methods to expressions
authorLuca Bruno <lucabru@src.gnome.org>
Tue, 3 Jan 2012 12:03:53 +0000 (13:03 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 23 Oct 2018 16:45:49 +0000 (18:45 +0200)
16 files changed:
vala/valaaddressofexpression.vala
vala/valaarraycreationexpression.vala
vala/valaassignment.vala
vala/valabinaryexpression.vala
vala/valacastexpression.vala
vala/valaconditionalexpression.vala
vala/valaelementaccess.vala
vala/valainitializerlist.vala
vala/valamemberaccess.vala
vala/valamethodcall.vala
vala/valanamespace.vala
vala/valapointerindirection.vala
vala/valapostfixexpression.vala
vala/valareferencetransferexpression.vala
vala/valasymbol.vala
vala/valatypecheck.vala

index 029325264b3d98d83b970484d53f8e8cf350126b..4948a46c2a4ea6f03ab804a540ffb8b9ad4db3aa 100644 (file)
@@ -62,6 +62,10 @@ public class Vala.AddressofExpression : Expression {
                inner.accept (visitor);
        }
 
+       public override string to_string () {
+               return "&" + inner.to_string ();
+       }
+
        public override void replace_expression (Expression old_node, Expression new_node) {
                if (inner == old_node) {
                        inner = new_node;
index 0969ff0e67c54c145740b1f1e4faf3fbc8470981..d3aebc9dc3ef6c0d2ecdd6964dc13dc483e8f2cd 100644 (file)
@@ -127,6 +127,24 @@ public class Vala.ArrayCreationExpression : Expression {
                return true;
        }
 
+       public override string to_string () {
+               var builder = new StringBuilder ("new ");
+               builder.append_printf ("%s[", element_type.to_string ());
+               bool first = true;
+               foreach (var size in sizes) {
+                       if (first) {
+                               builder.append (size.to_string ());
+                               first = false;
+                       } else {
+                               builder.append_printf (", %s", size.to_string ());
+                       }
+               }
+               if (initializer_list != null) {
+                       builder.append (initializer_list.to_string ());
+               }
+               return builder.str;
+       }
+
        public override void replace_expression (Expression old_node, Expression new_node) {
                for (int i = 0; i < sizes.size; i++) {
                        if (sizes[i] == old_node) {
index 440ac5edca9ab0d874f5954afcc4fcfeaddbfa3b..d00e2f011e1a8b7c21753cb61a3597649944ec6c 100644 (file)
@@ -84,6 +84,27 @@ public class Vala.Assignment : Expression {
                right.accept (visitor);
        }
 
+       private unowned string get_operator_string () {
+               switch (_operator) {
+               case AssignmentOperator.SIMPLE: return "=";
+               case AssignmentOperator.BITWISE_OR: return "|=";
+               case AssignmentOperator.BITWISE_AND: return "&=";
+               case AssignmentOperator.BITWISE_XOR: return "^=";
+               case AssignmentOperator.ADD: return "+=";
+               case AssignmentOperator.SUB: return "-=";
+               case AssignmentOperator.MUL: return "*=";
+               case AssignmentOperator.DIV: return "/=";
+               case AssignmentOperator.PERCENT: return "%=";
+               case AssignmentOperator.SHIFT_LEFT: return "<<=";
+               case AssignmentOperator.SHIFT_RIGHT: return ">>=";
+               default: assert_not_reached ();
+               }
+       }
+
+       public override string to_string () {
+               return "(%s %s %s)".printf (_left.to_string (), get_operator_string (), _right.to_string ());
+       }
+
        public override void replace_expression (Expression old_node, Expression new_node) {
                if (left == old_node) {
                        left = new_node;
index 1e24968aa28fb6717040e989ed3e0a8e5ab9e650..62c1014e895aad3c031b1ef6a5278e40c55ef1a5 100644 (file)
@@ -135,7 +135,7 @@ public class Vala.BinaryExpression : Expression {
        }
 
        public override string to_string () {
-               return _left.to_string () + get_operator_string () + _right.to_string ();
+               return "(%s %s %s)".printf (_left.to_string (), get_operator_string (), _right.to_string ());
        }
 
        public override bool is_constant () {
index 18ed153b8a8888bfe29deba0570542d572d87051..86bdad1d1799641b58b0d4fdd880071ed97fc718 100644 (file)
@@ -102,6 +102,16 @@ public class Vala.CastExpression : Expression {
                }
        }
 
+       public override string to_string () {
+               if (is_non_null_cast) {
+                       return "(!) %s".printf (inner.to_string ());
+               } else if (is_silent_cast) {
+                       return "%s as %s".printf (inner.to_string (), type_reference.to_string ());
+               } else {
+                       return "(%s) %s".printf (type_reference.to_string (), inner.to_string ());
+               }
+       }
+
        public override void replace_expression (Expression old_node, Expression new_node) {
                if (inner == old_node) {
                        inner = new_node;
index 30336289d8b1e429de3cbcdc282ae11987ad847b..a0f0dbba75d2c7ee1692dab202bd9447dfba7f5b 100644 (file)
@@ -110,6 +110,10 @@ public class Vala.ConditionalExpression : Expression {
                false_expression.get_error_types (collection, source_reference);
        }
 
+       public override string to_string () {
+               return "(%s ? %s : %s)".printf (condition.to_string (), true_expression.to_string (), false_expression.to_string ());
+       }
+
        public override void replace_expression (Expression old_node, Expression new_node) {
                if (condition == old_node) {
                        condition = new_node;
index c7c78349093bdab8e36f94e86d548fbaaf034686..bc1072901eb4ae013984eb47f35f8a8d2cc8bdc5 100644 (file)
@@ -75,6 +75,20 @@ public class Vala.ElementAccess : Expression {
                }
        }
 
+       public override string to_string () {
+               var s = "%s[".printf (container.to_string ());
+               bool first = true;
+               foreach (var index in indices) {
+                       if (first) {
+                               s += index.to_string ();
+                               first = false;
+                       } else {
+                               s += ", %s".printf (index.to_string ());
+                       }
+               }
+               return s + "]";
+       }
+
        public override void replace_expression (Expression old_node, Expression new_node) {
                if (container == old_node) {
                        container = new_node;
index aba79290fb56755bf14c53a22a70c52ffed1a4a0..ec4315e0b1ed11251043fc26fdf7275f7346f0e6 100644 (file)
@@ -106,6 +106,20 @@ public class Vala.InitializerList : Expression {
                return true;
        }
 
+       public override string to_string () {
+               var builder = new StringBuilder ("{");
+               bool first = true;
+               foreach (var initializer in initializers) {
+                       if (first) {
+                               builder.append (initializer.to_string ());
+                               first = false;
+                       } else {
+                               builder.append_printf (", %s", initializer.to_string ());
+                       }
+               }
+               return builder.str;
+       }
+
        public override void replace_expression (Expression old_node, Expression new_node) {
                for (int i = 0; i < initializers.size; i++) {
                        if (initializers[i] == old_node) {
index 805b168f3bbb4994221b2050eab2d0f8a77b0a95..d2005f6884ca7fe6e6bf438a7753a377ff00af26 100644 (file)
@@ -136,7 +136,7 @@ public class Vala.MemberAccess : Expression {
                        if (inner == null) {
                                return member_name;
                        } else {
-                               return "%s.%s".printf (inner.to_string (), member_name);
+                               return "%s%s%s".printf (inner.to_string (), pointer_member_access ? "->" : ".", member_name);
                        }
                } else {
                        // ensure to always use fully-qualified name
index 86014c2801e9c8e4666dcdba367e0e8b83b9307b..7fca36e39b613f9afb135ff7716b58e35a37a3b6 100644 (file)
@@ -697,4 +697,26 @@ public class Vala.MethodCall : Expression {
 
                return null;
        }
+
+       public override string to_string () {
+               var b = new StringBuilder ();
+               b.append_c ('(');
+               if (is_yield_expression) {
+                       b.append ("yield ");
+               }
+               b.append (call.to_string ());
+               b.append_c ('(');
+
+               bool first = true;
+               foreach (var expr in argument_list) {
+                       if (!first) {
+                               b.append (", ");
+                       }
+                       b.append (expr.to_string ());
+                       first = false;
+               }
+               b.append ("))");
+
+               return b.str;
+       }
 }
index af062f85c0108c004a7062081c7e6b0728eae6cb..c53fda830c55c6b00cf0fa79e8166710a3d33ccc 100644 (file)
@@ -523,4 +523,12 @@ public class Vala.Namespace : Symbol {
 
                return !error;
        }
+
+       public override string to_string () {
+               if (name == null) {
+                       return "(root namespace)";
+               } else {
+                       return "namespace %s".printf (name);
+               }
+       }
 }
index 20dbcbfdeec73499fb9ff9813a2981d0505817f5..5e99b9dc01964352917d5bd835a373c82b1020ca 100644 (file)
@@ -124,4 +124,8 @@ public class Vala.PointerIndirection : Expression {
        public override void get_used_variables (Collection<Variable> collection) {
                inner.get_used_variables (collection);
        }
+
+       public override string to_string () {
+               return "(*%s)".printf (inner.to_string ());
+       }
 }
index 156ffecf0e8d22b881f7980f556a5cc9ee938513..1dd6466255f6fe247db1b6a904b33956cc4b94a1 100644 (file)
@@ -169,4 +169,8 @@ public class Vala.PostfixExpression : Expression {
 
                codegen.visit_expression (this);
        }
+
+       public override string to_string () {
+               return "(%s%s)".printf (inner.to_string (), increment ? "++" : "--");
+       }
 }
index 9362bbd1ccec051aecb35a37dc25314e57baafb3..6a06b1d65d6c3bc4f596bdd563a62c4605fa0494 100644 (file)
@@ -142,4 +142,8 @@ public class Vala.ReferenceTransferExpression : Expression {
                        collection.add (param);
                }
        }
+
+       public override string to_string () {
+               return "(owned) %s".printf (inner.to_string ());
+       }
 }
index 131969afbbc076765f40ca848611759c5b3fdeb9..59e75a577995533f19de7c99190f6b39de9881cb 100644 (file)
@@ -472,6 +472,10 @@ public abstract class Vala.Symbol : CodeNode {
        public virtual void add_destructor (Destructor d) {
                Report.error (d.source_reference, "unexpected declaration");
        }
+
+       public override string to_string () {
+               return get_full_name ();
+       }
 }
 
 public enum Vala.SymbolAccessibility {
index 5b22d75d474983187ce4fe29d1f311b492295f8e..cb0469a6fcffb6d35011ee3a59e8ff98e163b631 100644 (file)
@@ -132,4 +132,8 @@ public class Vala.TypeCheck : Expression {
 
                codegen.visit_expression (this);
        }
+
+       public override string to_string () {
+               return "(%s is %s)".printf (expression.to_string (), type_reference.to_string ());
+       }
 }