+2007-03-24 Raffaele Sandrini <rasa@gmx.ch>
+
+ * vala/valaforstatement.vala: assign parent_node to children of this
+ statement; include iterator and initializer in replacement of a child
+ node (fixes segfault using prefix increment expression in the
+ iterator of a for-statement)
+
2007-03-22 Raffaele Sandrini <rasa@gmx.ch>
+
* vala/valaflags.vala, vala/valaenum.vala, vala/valadatatype.vala,
vala/valastruct.vala: add support for default values of types
* vala/valacodegenerator.vala: use default values for initialization
* @param init an initializer expression
*/
public void add_initializer (Expression! init) {
+ init.parent_node = this;
initializer.append (init);
}
* @param iter an iterator expression
*/
public void add_iterator (Expression! iter) {
+ iter.parent_node = this;
iterator.append (iter);
}
}
public override void replace (CodeNode! old_node, CodeNode! new_node) {
+ weak List<Expression> iter;
+
if (condition == old_node) {
condition = (Expression) new_node;
+ return;
+ }
+
+ for (iter = initializer; iter != null; iter = iter.next) {
+ if (iter.data == old_node) {
+ weak List<Expression> silbling = iter.next;
+ initializer.delete_link (iter);
+ initializer.insert_before (silbling, new_node);
+ return;
+ }
}
+
+ for (iter = iterator; iter != null; iter = iter.next) {
+ if (iter.data == old_node) {
+ weak List<Expression> silbling = iter.next;
+ iterator.delete_link (iter);
+ iterator.insert_before (silbling, new_node);
+ return;
+ }
+ }
}
}