From 0b343873fc61763f0028c5e3ad7c96e3b9014118 Mon Sep 17 00:00:00 2001 From: Alexander Luzgarev Date: Sun, 1 Apr 2018 10:50:41 +0200 Subject: [PATCH] Parse member access after array element indexing --- Parser.Tests/MParserShould.cs | 12 ++++++++++++ Parser/MParser.cs | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Parser.Tests/MParserShould.cs b/Parser.Tests/MParserShould.cs index 840aaca..4864b85 100644 --- a/Parser.Tests/MParserShould.cs +++ b/Parser.Tests/MParserShould.cs @@ -225,5 +225,17 @@ namespace Parser.Tests Assert.IsInstanceOf(a.LeftOperand); Assert.IsInstanceOf(a.RightOperand); } + + [Test] + public void ParseMemberAccessAfterElementAccess() + { + var text = "a(1).b"; + var sut = CreateParser(text); + var actual = sut.ParseExpression(); + Assert.IsInstanceOf(actual); + var m = (MemberAccessNode) actual; + Assert.IsInstanceOf(m.LeftOperand); + Assert.IsInstanceOf(m.RightOperand); + } } } \ No newline at end of file diff --git a/Parser/MParser.cs b/Parser/MParser.cs index 1b0df26..807cd29 100644 --- a/Parser/MParser.cs +++ b/Parser/MParser.cs @@ -297,7 +297,8 @@ namespace Parser break; case TokenKind.Dot: // member access if (expression is IdentifierNameNode - || expression is MemberAccessNode) + || expression is MemberAccessNode + || expression is FunctionCallExpressionNode) { var dot = EatToken(); var member = ParseMember();