]> 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>
Thu, 15 Apr 2021 14:49:14 +0000 (16:49 +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 00e05cad454f7c49f51f600eea6ac8e1369ff887..1b3d4783139e605cf6608f8b3f7c7ddc6d3ef159 100644 (file)
@@ -835,6 +835,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 cba7c51b2aa96b12807766d43d17fb79d417f236..e85d45e6fdb3b31ebbdc9ced9e2bbc26871f8a2d 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;