浏览代码

Fix: fail to parse empty elseif/else blocks

AnnulusGames 11 月之前
父节点
当前提交
4a103a90e5
共有 1 个文件被更改,包括 6 次插入8 次删除
  1. 6 8
      src/Lua/CodeAnalysis/Syntax/Parser.cs

+ 6 - 8
src/Lua/CodeAnalysis/Syntax/Parser.cs

@@ -309,22 +309,20 @@ public ref struct Parser
                     MoveNextWithValidation(ref enumerator);
                     MoveNextWithValidation(ref enumerator);
                     enumerator.SkipEoL();
                     enumerator.SkipEoL();
 
 
-                    // skip 'then' keyword
-                    CheckCurrentAndSkip(ref enumerator, SyntaxTokenType.Then, out _);
-                    enumerator.SkipEoL();
+                    // check 'then' keyword
+                    CheckCurrent(ref enumerator, SyntaxTokenType.Then);
 
 
                     // set elseif state
                     // set elseif state
                     state = 1;
                     state = 1;
+
+                    continue;
                 }
                 }
                 else if (tokenType is SyntaxTokenType.Else)
                 else if (tokenType is SyntaxTokenType.Else)
                 {
                 {
-                    // skip 'else' keywords
-                    MoveNextWithValidation(ref enumerator);
-
-                    enumerator.SkipEoL();
-
                     // set else state
                     // set else state
                     state = 2;
                     state = 2;
+
+                    continue;
                 }
                 }
                 else if (tokenType is SyntaxTokenType.End)
                 else if (tokenType is SyntaxTokenType.End)
                 {
                 {