]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
parser: Allow empty member-initializer and accept trailing comma
authorRico Tzschichholz <ricotz@ubuntu.com>
Thu, 15 Apr 2021 14:49:14 +0000 (16:49 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Wed, 28 Apr 2021 06:44:24 +0000 (08:44 +0200)
tests/Makefile.am
tests/parser/member-initializer-empty.vala [new file with mode: 0644]
tests/parser/member-initializer-trailing-comma.vala [new file with mode: 0644]
tests/parser/member-initializer.vala [new file with mode: 0644]
vala/valaparser.vala

index 03b221b9cbd28264472399d6fab8e435e99d3f42..79656a8161dd530ab47e8e842a7d8550728a5f5e 100644 (file)
@@ -823,6 +823,9 @@ TESTS = \
        parser/lock-statement.vala \
        parser/main-block.vala \
        parser/member-access-pointer.vala \
+       parser/member-initializer.vala \
+       parser/member-initializer-empty.vala \
+       parser/member-initializer-trailing-comma.vala \
        parser/method-no-abstract-override.test \
        parser/method-no-abstract-virtual-override.test \
        parser/method-no-abstract-virtual.test \
diff --git a/tests/parser/member-initializer-empty.vala b/tests/parser/member-initializer-empty.vala
new file mode 100644 (file)
index 0000000..732503b
--- /dev/null
@@ -0,0 +1,7 @@
+class Foo {
+       public int i;
+}
+
+void main () {
+       var foo = new Foo () {};
+}
diff --git a/tests/parser/member-initializer-trailing-comma.vala b/tests/parser/member-initializer-trailing-comma.vala
new file mode 100644 (file)
index 0000000..8e7503c
--- /dev/null
@@ -0,0 +1,9 @@
+class Foo {
+       public int i;
+}
+
+void main () {
+       var foo = new Foo () {
+               i = 42,
+       };
+}
diff --git a/tests/parser/member-initializer.vala b/tests/parser/member-initializer.vala
new file mode 100644 (file)
index 0000000..7795c14
--- /dev/null
@@ -0,0 +1,9 @@
+class Foo {
+       public int i;
+}
+
+void main () {
+       var foo = new Foo () {
+               i = 23
+       };
+}
index d3f0875feafa552ac898b89359bad3ed4929b3cb..41cd47698dc5ea155c7ca30f09a7e357aa13dec9 100644 (file)
@@ -1052,9 +1052,13 @@ public class Vala.Parser : CodeVisitor {
        List<MemberInitializer> parse_object_initializer () throws ParseError {
                var list = new ArrayList<MemberInitializer> ();
                if (accept (TokenType.OPEN_BRACE)) {
-                       do {
+                       while (current () != TokenType.CLOSE_BRACE) {
                                list.add (parse_member_initializer ());
-                       } while (accept (TokenType.COMMA));
+
+                               if (!accept (TokenType.COMMA)) {
+                                       break;
+                               }
+                       }
                        expect (TokenType.CLOSE_BRACE);
                }
                return list;