summaryrefslogtreecommitdiff
path: root/vala/valaparser.vala
diff options
context:
space:
mode:
authorPrinceton Ferro <princetonferro@gmail.com>2020-04-09 21:15:45 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2020-04-11 16:03:30 +0200
commit4368a4fa667148378dcdbd251a4ae4e00c9a8e5a (patch)
tree92ec8605cb8798f4fb3caf1e841bcfb9addea7ca /vala/valaparser.vala
parent5cebc0e477287d9759b506a5bc5e37797cb3a156 (diff)
downloadvala-4368a4fa667148378dcdbd251a4ae4e00c9a8e5a.tar.gz
parser: Handle incomplete expression statements
Incomplete expression statements are parsed as expression statements now, rather than local variable declarations. This primarily affects incomplete member access expressions at the end of blocks.
Diffstat (limited to 'vala/valaparser.vala')
-rw-r--r--vala/valaparser.vala14
1 files changed, 13 insertions, 1 deletions
diff --git a/vala/valaparser.vala b/vala/valaparser.vala
index 48818a293..e61372975 100644
--- a/vala/valaparser.vala
+++ b/vala/valaparser.vala
@@ -1665,7 +1665,19 @@ public class Vala.Parser : CodeVisitor {
var begin = get_location ();
// decide between declaration and expression statement
- skip_type ();
+ try {
+ skip_type ();
+ } catch (ParseError e) {
+ prev ();
+ var token = current ();
+ next ();
+ if (token == TokenType.DOT || token == TokenType.DOUBLE_COLON) {
+ rollback (begin);
+ return true;
+ } else {
+ throw e;
+ }
+ }
switch (current ()) {
// invocation expression
case TokenType.OPEN_PARENS: