[vala/wip/transform: 83/121] Set parent_node when replacing expressions



commit 2c1f995c5e0ab9390766cfb67a7fac4123942ef9
Author: Luca Bruno <lucabru src gnome org>
Date:   Mon Oct 29 21:04:18 2012 +0100

    Set parent_node when replacing expressions

 tests/structs/structs.vala            |   16 ++++++++++++++++
 vala/valaarraycreationexpression.vala |    1 +
 vala/valaforstatement.vala            |    2 ++
 vala/valainitializerlist.vala         |    1 +
 vala/valatuple.vala                   |    1 +
 5 files changed, 21 insertions(+), 0 deletions(-)
---
diff --git a/tests/structs/structs.vala b/tests/structs/structs.vala
index 543975a..90ef408 100644
--- a/tests/structs/structs.vala
+++ b/tests/structs/structs.vala
@@ -34,6 +34,16 @@ struct StructWithNamedCreationMethod {
        public int field;
 }
 
+
+delegate void Func ();
+
+struct StructWithFunc {
+       int foo;
+
+       public StructWithFunc (Func f) {
+       }
+}
+
 void test_in_parameter (SimpleStruct st) {
        stdout.printf ("test_in_parameter: st.field = %d\n", st.field);
 }
@@ -53,6 +63,12 @@ void test_out_parameter (out SimpleStruct st) {
        st.field = 3;
 }
 
+void test_struct_with_func () {
+       var foes = new StructWithFunc[] {
+               StructWithFunc (() => {})
+       };
+}
+
 void main () {
        stdout.printf ("Structs Test:\n");
 
diff --git a/vala/valaarraycreationexpression.vala b/vala/valaarraycreationexpression.vala
index 43135b3..6d71ea6 100644
--- a/vala/valaarraycreationexpression.vala
+++ b/vala/valaarraycreationexpression.vala
@@ -135,6 +135,7 @@ public class Vala.ArrayCreationExpression : Expression {
                for (int i = 0; i < sizes.size; i++) {
                        if (sizes[i] == old_node) {
                                sizes[i] = new_node;
+                               new_node.parent_node = this;
                                return;
                        }
                }
diff --git a/vala/valaforstatement.vala b/vala/valaforstatement.vala
index c79a6d1..8c91219 100644
--- a/vala/valaforstatement.vala
+++ b/vala/valaforstatement.vala
@@ -143,11 +143,13 @@ public class Vala.ForStatement : BaseStatement {
                for (int i=0; i < initializer.size; i++) {
                        if (initializer[i] == old_node) {
                                initializer[i] = new_node;
+                               new_node.parent_node = this;
                        }
                }
                for (int i=0; i < iterator.size; i++) {
                        if (iterator[i] == old_node) {
                                iterator[i] = new_node;
+                               new_node.parent_node = this;
                        }
                }
        }
diff --git a/vala/valainitializerlist.vala b/vala/valainitializerlist.vala
index 6108946..bd57bcc 100644
--- a/vala/valainitializerlist.vala
+++ b/vala/valainitializerlist.vala
@@ -114,6 +114,7 @@ public class Vala.InitializerList : Expression {
                for (int i = 0; i < initializers.size; i++) {
                        if (initializers[i] == old_node) {
                                initializers[i] = new_node;
+                               new_node.parent_node = this;
                        }
                }
        }
diff --git a/vala/valatuple.vala b/vala/valatuple.vala
index d35795a..f813138 100644
--- a/vala/valatuple.vala
+++ b/vala/valatuple.vala
@@ -60,6 +60,7 @@ public class Vala.Tuple : Expression {
                for (int i = 0; i < expression_list.size; i++) {
                        if (expression_list[i] == old_node) {
                                expression_list[i] = new_node;
+                               new_node.parent_node = this;
                        }
                }
        }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]