summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/unittests/clang-query/QueryParserTest.cpp19
-rw-r--r--clang/lib/ASTMatchers/Dynamic/Parser.cpp15
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 ||
OpenPOWER on IntegriCloud