diff options
author | Jürg Billeter <j@bitron.ch> | 2009-09-05 14:09:06 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2009-09-05 14:09:06 +0200 |
commit | accc2080755543a4b183549b47d268e3f329d85e (patch) | |
tree | 0a3de115caeb1c73a4beaaf77833c6159ac2ef80 /vala/valamemberinitializer.vala | |
parent | 3fe8c8aa53c5c0bb074b7f45db873ded5afccd8e (diff) | |
download | vala-accc2080755543a4b183549b47d268e3f329d85e.tar.gz |
Fix crash when creating structs in member initializer
Diffstat (limited to 'vala/valamemberinitializer.vala')
-rw-r--r-- | vala/valamemberinitializer.vala | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/vala/valamemberinitializer.vala b/vala/valamemberinitializer.vala index 3ca96b629..2057e3181 100644 --- a/vala/valamemberinitializer.vala +++ b/vala/valamemberinitializer.vala @@ -1,6 +1,6 @@ /* valamemberinitializer.vala * - * Copyright (C) 2007 Jürg Billeter + * Copyright (C) 2007-2009 Jürg Billeter * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -35,13 +35,21 @@ public class Vala.MemberInitializer : CodeNode { /** * Initializer expression. */ - public Expression initializer { get; set; } + public Expression initializer { + get { return _initializer; } + set { + _initializer = value; + _initializer.parent_node = this; + } + } /** * The symbol this expression refers to. */ public weak Symbol symbol_reference { get; set; } + Expression _initializer; + /** * Creates a new member initializer. * @@ -63,5 +71,11 @@ public class Vala.MemberInitializer : CodeNode { public override bool check (SemanticAnalyzer analyzer) { return initializer.check (analyzer); } + + public override void replace_expression (Expression old_node, Expression new_node) { + if (initializer == old_node) { + initializer = new_node; + } + } } |