From: Simon Werbeck Date: Fri, 28 Sep 2012 14:13:05 +0000 (+0200) Subject: Set correct parent_statement for MemberInitializer X-Git-Tag: 0.20.1~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fb7687a16cf78c9ecf19720a3c70271dfaf98967;p=thirdparty%2Fvala.git Set correct parent_statement for MemberInitializer Fixes bug 603056. --- diff --git a/tests/Makefile.am b/tests/Makefile.am index a647bb5e8..8392c677a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -71,6 +71,7 @@ TESTS = \ structs/bug583603.vala \ structs/bug595587.vala \ structs/bug596144.vala \ + structs/bug603056.vala \ structs/bug606202.vala \ structs/bug609642.vala \ structs/bug613513.vala \ diff --git a/tests/structs/bug603056.vala b/tests/structs/bug603056.vala new file mode 100644 index 000000000..d4646b1ac --- /dev/null +++ b/tests/structs/bug603056.vala @@ -0,0 +1,9 @@ +public struct Foo { + uint8 param; +} + +void main() { + bool b = true; + var foo = Foo() { param = b ? 10 : 20 }; + assert (foo.param == 10); +} diff --git a/vala/valaexpression.vala b/vala/valaexpression.vala index dd005afca..620086e98 100644 --- a/vala/valaexpression.vala +++ b/vala/valaexpression.vala @@ -83,12 +83,15 @@ public abstract class Vala.Expression : CodeNode { var expr = parent_node as Expression; var stmt = parent_node as Statement; var local = parent_node as LocalVariable; + var initializer = parent_node as MemberInitializer; if (stmt != null) { return (Statement) parent_node; } else if (expr != null) { return expr.parent_statement; } else if (local != null) { return (Statement) local.parent_node; + } else if (initializer != null) { + return ((Expression)initializer.parent_node).parent_statement; } else { return null; }