diff --git a/Parser.Tests/MParserShould.cs b/Parser.Tests/MParserShould.cs index b591791..bec08e8 100644 --- a/Parser.Tests/MParserShould.cs +++ b/Parser.Tests/MParserShould.cs @@ -478,5 +478,18 @@ namespace Parser.Tests Assert.IsInstanceOf(e.BaseClassNameAndArguments); Assert.AreEqual(text, actual.FullText); } + + [Test] + public void ParseFunctionWithEmptyOutputsList() + { + var text = "function [] = a(b) end"; + var sut = CreateParser(text); + var actual = sut.ParseStatement(); + Assert.IsInstanceOf(actual); + var f = (FunctionDeclarationNode) actual; + Assert.AreEqual(0, f.OutputDescription.Outputs.Count); + Assert.AreEqual(text, actual.FullText); + + } } } \ No newline at end of file diff --git a/Parser/MParser.cs b/Parser/MParser.cs index f5bc167..30a7195 100644 --- a/Parser/MParser.cs +++ b/Parser/MParser.cs @@ -128,10 +128,9 @@ namespace Parser private List ParseFunctionOutputList() { var outputs = new List(); - outputs.Add(EatToken(TokenKind.Identifier)); while (CurrentToken.Kind != TokenKind.ClosingSquareBracket) { - if (CurrentToken.Kind == TokenKind.Comma) + if (outputs.Count > 0 && CurrentToken.Kind == TokenKind.Comma) { outputs.Add(EatToken()); }