Function outputs list can be empty

This commit is contained in:
Alexander Luzgarev 2018-04-07 12:37:32 +02:00
parent a53a02fe0b
commit 1bd8c0bb05
2 changed files with 14 additions and 2 deletions

View File

@ -478,5 +478,18 @@ namespace Parser.Tests
Assert.IsInstanceOf<FunctionCallExpressionNode>(e.BaseClassNameAndArguments); Assert.IsInstanceOf<FunctionCallExpressionNode>(e.BaseClassNameAndArguments);
Assert.AreEqual(text, actual.FullText); 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<FunctionDeclarationNode>(actual);
var f = (FunctionDeclarationNode) actual;
Assert.AreEqual(0, f.OutputDescription.Outputs.Count);
Assert.AreEqual(text, actual.FullText);
}
} }
} }

View File

@ -128,10 +128,9 @@ namespace Parser
private List<SyntaxNode> ParseFunctionOutputList() private List<SyntaxNode> ParseFunctionOutputList()
{ {
var outputs = new List<Token>(); var outputs = new List<Token>();
outputs.Add(EatToken(TokenKind.Identifier));
while (CurrentToken.Kind != TokenKind.ClosingSquareBracket) while (CurrentToken.Kind != TokenKind.ClosingSquareBracket)
{ {
if (CurrentToken.Kind == TokenKind.Comma) if (outputs.Count > 0 && CurrentToken.Kind == TokenKind.Comma)
{ {
outputs.Add(EatToken()); outputs.Add(EatToken());
} }