Fix parsing of expression statements

This commit is contained in:
Alexander Luzgarev 2018-12-08 13:47:29 +01:00
parent e38cdd8b36
commit 4b6ee62f07
2 changed files with 12 additions and 3 deletions

View File

@ -22,6 +22,17 @@ namespace Parser.Tests
Assert.IsType<AssignmentExpressionSyntaxNode>(((ExpressionStatementSyntaxNode)assignment).Expression);
}
[Fact]
public void ParseExpressionStatement()
{
var text = "2 + 3";
var sut = GetSut(text);
var actual = sut.Parse();
var statement = actual.Root.StatementList[0].AsNode();
Assert.IsType<ExpressionStatementSyntaxNode>(statement);
Assert.IsType<BinaryOperationExpressionSyntaxNode>(((ExpressionStatementSyntaxNode)statement).Expression);
}
[Fact]
public void ParseAssignmentExpression_Incomplete()
{

View File

@ -1070,8 +1070,6 @@ namespace Parser.Internal
case "elseif":
case "end":
return null;
default:
return ParseExpressionStatement();
}
}
@ -1084,7 +1082,7 @@ namespace Parser.Internal
{
return Factory.EmptyStatementSyntax(EatToken());
}
throw new ParsingException($"Unexpected token \"{CurrentToken}\" at {CurrentPosition}.");
return ParseExpressionStatement();
}
private SyntaxList ParseStatementList()