From 04f5804dffa53c43acb864ab0134f6b94d87e0aa Mon Sep 17 00:00:00 2001 From: 0x4261756D <38735823+0x4261756D@users.noreply.github.com> Date: Wed, 21 Feb 2024 16:01:58 +0100 Subject: [PATCH] Fix trailing comma handling in ParseFieldlist This is pretty ugly since it checks for every token type that could follow to make it a valid field but the previous check was flat out wrong --- Parser.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Parser.cs b/Parser.cs index b4148f3..3113a2e 100644 --- a/Parser.cs +++ b/Parser.cs @@ -1186,11 +1186,12 @@ class Parser while(index < tokens.Length && IsFieldsep(tokens[index])) { index += 1; - fields.Add(ParseField(tokens)); - } - if(index < tokens.Length && IsFieldsep(tokens[index])) - { - index += 1; + if(index < tokens.Length && tokens[index].type is TokenType.SquareOpen or + TokenType.Name or TokenType.Nil or TokenType.True or TokenType.False or TokenType.Numeral or TokenType.StringLiteral or + TokenType.DotDotDot or TokenType.CurlyOpen or TokenType.Function or TokenType.Minus or TokenType.Hash or TokenType.Not or TokenType.Nil or TokenType.RoundOpen) + { + fields.Add(ParseField(tokens)); + } } // NOTE: Since at least 1 field is parsed the list accesses are safe return new FieldlistNode(exps: fields, startRegion: fields[0].startRegion, endRegion: fields[^1].endRegion);