diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2021-04-15 16:49:14 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2021-04-28 08:44:24 +0200 |
commit | 9ee5fbf4f00c8ea5c2dc3e0b9aff453b4ec09fef (patch) | |
tree | de753c8ae7deb81b8b498efe1727bb4481b7af57 | |
parent | cc65cabdc3c47a1a1a4ecc887642b594d7ffa4a6 (diff) | |
download | vala-9ee5fbf4f00c8ea5c2dc3e0b9aff453b4ec09fef.tar.gz |
parser: Allow empty member-initializer and accept trailing comma
-rw-r--r-- | tests/Makefile.am | 3 | ||||
-rw-r--r-- | tests/parser/member-initializer-empty.vala | 7 | ||||
-rw-r--r-- | tests/parser/member-initializer-trailing-comma.vala | 9 | ||||
-rw-r--r-- | tests/parser/member-initializer.vala | 9 | ||||
-rw-r--r-- | vala/valaparser.vala | 8 |
5 files changed, 34 insertions, 2 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 03b221b9c..79656a816 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -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 index 000000000..732503bf2 --- /dev/null +++ b/tests/parser/member-initializer-empty.vala @@ -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 index 000000000..8e7503c8e --- /dev/null +++ b/tests/parser/member-initializer-trailing-comma.vala @@ -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 index 000000000..7795c14f6 --- /dev/null +++ b/tests/parser/member-initializer.vala @@ -0,0 +1,9 @@ +class Foo { + public int i; +} + +void main () { + var foo = new Foo () { + i = 23 + }; +} diff --git a/vala/valaparser.vala b/vala/valaparser.vala index d3f0875fe..41cd47698 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -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; |