diff --git a/src/Microsoft.OData.Core/UriParser/ExpressionLexer.cs b/src/Microsoft.OData.Core/UriParser/ExpressionLexer.cs index 020456ce51..407beaa770 100644 --- a/src/Microsoft.OData.Core/UriParser/ExpressionLexer.cs +++ b/src/Microsoft.OData.Core/UriParser/ExpressionLexer.cs @@ -686,15 +686,9 @@ protected virtual ExpressionToken NextTokenImplementation(out Exception error) string leftToken = ExpressionText.Substring(start, this.textPos - start); - t = this.parsingFunctionParameters - && !(leftToken[0] == UriQueryConstants.AnnotationPrefix - && leftToken.Contains(".")) - ? ExpressionTokenKind.ParameterAlias : ExpressionTokenKind.Identifier; - - // t = this.parsingFunctionParameters - // && !(this.ExpressionText[0] == UriQueryConstants.AnnotationPrefix - // && this.ExpressionText.Contains(".")) - // ? ExpressionTokenKind.ParameterAlias : ExpressionTokenKind.Identifier; + t = this.parsingFunctionParameters && !leftToken.Contains(".") + ? ExpressionTokenKind.ParameterAlias + : ExpressionTokenKind.Identifier; break; } diff --git a/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/ExpressionLexerTests.cs b/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/ExpressionLexerTests.cs index 67a151baef..4f3dda68f3 100644 --- a/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/ExpressionLexerTests.cs +++ b/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/ExpressionLexerTests.cs @@ -707,10 +707,18 @@ public void ExpressionLexerShouldParseValidAliasCorrectly() [Fact] public void ExpressionLexerShouldParseValidAliasWithDotInExpressionCorrectly() { - ValidateTokenSequence("@foo eq 1.23", true /*parsingFunctionParameters*/, - ParameterAliasToken("@foo"), - IdentifierToken("eq"), - SingleLiteralToken("1.23")); + foreach (string expr in new string[] + { + "@foo eq 1.23", + " @foo eq 1.23 " // with arbitrary paddings. + } + ) + { + ValidateTokenSequence(expr, true /*parsingFunctionParameters*/, + ParameterAliasToken("@foo"), + IdentifierToken("eq"), + SingleLiteralToken("1.23")); + } } [Fact]