diff options
author | Princeton Ferro <princetonferro@gmail.com> | 2020-04-09 21:15:45 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2020-04-11 16:03:30 +0200 |
commit | 4368a4fa667148378dcdbd251a4ae4e00c9a8e5a (patch) | |
tree | 92ec8605cb8798f4fb3caf1e841bcfb9addea7ca /vala/valaparser.vala | |
parent | 5cebc0e477287d9759b506a5bc5e37797cb3a156 (diff) | |
download | vala-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.vala | 14 |
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: |