diff options
-rw-r--r-- | clang-tools-extra/unittests/clang-query/QueryParserTest.cpp | 19 | ||||
-rw-r--r-- | clang/lib/ASTMatchers/Dynamic/Parser.cpp | 15 |
2 files changed, 27 insertions, 7 deletions
diff --git a/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp b/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp index fa16c7172ba..1f0bbfa5269 100644 --- a/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp +++ b/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp @@ -356,4 +356,23 @@ match callExpr ASSERT_TRUE(isa<InvalidQuery>(Q)); EXPECT_EQ("1:1: Invalid token <NewLine> found when looking for a value.", cast<InvalidQuery>(Q)->ErrStr); + + Q = parse(R"matcher( + +let Construct parmVarDecl() + +m parmVarDecl( + Construct +) +)matcher"); + + ASSERT_TRUE(isa<LetQuery>(Q)); + { + llvm::raw_null_ostream NullOutStream; + dyn_cast<LetQuery>(Q)->run(NullOutStream, QS); + } + + Q = parse(Q->RemainingContent); + + ASSERT_TRUE(isa<MatchQuery>(Q)); } diff --git a/clang/lib/ASTMatchers/Dynamic/Parser.cpp b/clang/lib/ASTMatchers/Dynamic/Parser.cpp index ef209d1274a..061da8b8600 100644 --- a/clang/lib/ASTMatchers/Dynamic/Parser.cpp +++ b/clang/lib/ASTMatchers/Dynamic/Parser.cpp @@ -354,13 +354,6 @@ struct Parser::ScopedContextEntry { bool Parser::parseIdentifierPrefixImpl(VariantValue *Value) { const TokenInfo NameToken = Tokenizer->consumeNextToken(); - if (Tokenizer->nextTokenKind() == TokenInfo::TK_NewLine) { - Error->addError(Tokenizer->peekNextToken().Range, - Error->ET_ParserNoOpenParen) - << "NewLine"; - return false; - } - if (Tokenizer->nextTokenKind() != TokenInfo::TK_OpenParen) { // Parse as a named value. if (const VariantValue NamedValue = @@ -388,6 +381,14 @@ bool Parser::parseIdentifierPrefixImpl(VariantValue *Value) { } return false; } + + if (Tokenizer->nextTokenKind() == TokenInfo::TK_NewLine) { + Error->addError(Tokenizer->peekNextToken().Range, + Error->ET_ParserNoOpenParen) + << "NewLine"; + return false; + } + // If the syntax is correct and the name is not a matcher either, report // unknown named value. if ((Tokenizer->nextTokenKind() == TokenInfo::TK_Comma || |