From 4b6ee62f0779dde7e1daf45060d7679c9125efc9 Mon Sep 17 00:00:00 2001 From: Alexander Luzgarev Date: Sat, 8 Dec 2018 13:47:29 +0100 Subject: [PATCH] Fix parsing of expression statements --- Parser.Tests/MParserShould.cs | 11 +++++++++++ Parser/Internal/MParserGreen.cs | 4 +--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Parser.Tests/MParserShould.cs b/Parser.Tests/MParserShould.cs index bb1fb01..8171f41 100644 --- a/Parser.Tests/MParserShould.cs +++ b/Parser.Tests/MParserShould.cs @@ -22,6 +22,17 @@ namespace Parser.Tests Assert.IsType(((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(statement); + Assert.IsType(((ExpressionStatementSyntaxNode)statement).Expression); + } + [Fact] public void ParseAssignmentExpression_Incomplete() { diff --git a/Parser/Internal/MParserGreen.cs b/Parser/Internal/MParserGreen.cs index a578042..f7de28f 100644 --- a/Parser/Internal/MParserGreen.cs +++ b/Parser/Internal/MParserGreen.cs @@ -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()