[vala/0.48] parser: Handle incomplete expression statements



commit 6d6adad3f3db9217e7adeb1e41f71216247ff538
Author: Princeton Ferro <princetonferro gmail com>
Date:   Thu Apr 9 21:15:45 2020 +0200

    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.

 vala/valaparser.vala | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)
---
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:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]