[vala/0.50] parser: Allow empty member-initializer and accept trailing comma
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/0.50] parser: Allow empty member-initializer and accept trailing comma
- Date: Wed, 28 Apr 2021 07:07:53 +0000 (UTC)
commit 9ee5fbf4f00c8ea5c2dc3e0b9aff453b4ec09fef
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Thu Apr 15 16:49:14 2021 +0200
parser: Allow empty member-initializer and accept trailing comma
tests/Makefile.am | 3 +++
tests/parser/member-initializer-empty.vala | 7 +++++++
tests/parser/member-initializer-trailing-comma.vala | 9 +++++++++
tests/parser/member-initializer.vala | 9 +++++++++
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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]