]> git.sur5r.net Git - cc65/commitdiff
Improve error recovery
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 6 Mar 2003 12:12:25 +0000 (12:12 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 6 Mar 2003 12:12:25 +0000 (12:12 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2002 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/declare.c

index b6e78e27c5ddddea7b19e4d0f041aca5bb33a2cf..6d0c47f5e87e552a18b14222d235fe80a9253131 100644 (file)
@@ -1084,6 +1084,9 @@ static unsigned ParseStructInit (type* Type, int AllowFlexibleMembers)
     unsigned  StructSize;
     unsigned  Size;
 
+    static const token_t EndTokens[] = { TOK_RCURLY, TOK_SEMI };
+
+
     /* Consume the opening curly brace */
     ConsumeLCurly ();
 
@@ -1099,7 +1102,12 @@ static unsigned ParseStructInit (type* Type, int AllowFlexibleMembers)
     Tab = Entry->V.S.SymTab;
     if (Tab == 0) {
        Error ("Cannot initialize variables with incomplete type");
-       /* Returning here will cause lots of errors, but recovery is difficult */
+        /* Try error recovery */
+        SkipTokens (EndTokens, sizeof(EndTokens)/sizeof(EndTokens[0]));
+        if (CurTok.Tok == TOK_RCURLY) {
+            NextToken ();
+        }
+       /* Nothing initialized */
        return 0;
     }