]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Set correct parent_statement for MemberInitializer
authorSimon Werbeck <simon.werbeck@gmail.com>
Fri, 28 Sep 2012 14:13:05 +0000 (16:13 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Thu, 28 Mar 2013 21:41:09 +0000 (22:41 +0100)
Fixes bug 603056.

tests/Makefile.am
tests/structs/bug603056.vala [new file with mode: 0644]
vala/valaexpression.vala

index a647bb5e83a3031192f54d1f1ba038eb796da10d..8392c677a8d4324e375378119467bebafb29f67c 100644 (file)
@@ -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 (file)
index 0000000..d4646b1
--- /dev/null
@@ -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);
+}
index dd005afcaed59adfe358c13c0760c15690939ff2..620086e9806d220a32506065cf8402d0c5c2780c 100644 (file)
@@ -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;
                        }