Fix statement recovery infinite loop

This commit is contained in:
nub31
2025-05-25 02:28:15 +02:00
parent 29d4a78034
commit ae14398904
2 changed files with 12 additions and 20 deletions

View File

@@ -1,17 +1,12 @@
import c import c
// Test /// # Documentation
// Test2 /// ## Documentation subtitle
// Test3
// Test4
global func main(args: []string) { global func main(args: []string) {
i = 0 i = 0
printf("%d\n", args.count) printf("%d\n", args.count)
while i < args.count { while i < args.count {
// Test
printf("%s\n", args[i]) printf("%s\n", args[i])
i = i + 1 i = i + 1
} }
i: string = "test"
} }

View File

@@ -82,8 +82,6 @@ public class Parser
ExpectSymbol(Symbol.OpenParen); ExpectSymbol(Symbol.OpenParen);
if (!TryExpectSymbol(Symbol.CloseParen))
{
while (!TryExpectSymbol(Symbol.CloseParen)) while (!TryExpectSymbol(Symbol.CloseParen))
{ {
parameters.Add(ParseFuncParameter()); parameters.Add(ParseFuncParameter());
@@ -97,7 +95,6 @@ public class Parser
.Build()); .Build());
} }
} }
}
var returnType = Optional<NubType>.Empty(); var returnType = Optional<NubType>.Empty();
if (TryExpectSymbol(Symbol.Colon)) if (TryExpectSymbol(Symbol.Colon))
@@ -529,7 +526,7 @@ public class Parser
var startIndex = _index; var startIndex = _index;
ExpectSymbol(Symbol.OpenBrace); ExpectSymbol(Symbol.OpenBrace);
List<StatementNode> statements = []; List<StatementNode> statements = [];
while (!TryExpectSymbol(Symbol.CloseBrace)) while (Peek().HasValue && !TryExpectSymbol(Symbol.CloseBrace))
{ {
try try
{ {