From 1bd8c0bb05d17ad6453822bb34fa48661c900809 Mon Sep 17 00:00:00 2001 From: Alexander Luzgarev Date: Sat, 7 Apr 2018 12:37:32 +0200 Subject: [PATCH] Function outputs list can be empty --- Parser.Tests/MParserShould.cs | 13 +++++++++++++ Parser/MParser.cs | 3 +-- 2 files changed, 14 insertions(+), 2 deletions(-) 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()); }