summaryrefslogtreecommitdiffstats
path: root/clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2019-12-26 20:16:23 +0000
committerStephen Kelly <steveire@gmail.com>2019-12-26 20:16:23 +0000
commit831b636861ea33c3cc1c1c28384fb1800facf792 (patch)
treeb83a378092869058873c7cc84a65509ed0c1069d /clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp
parent6a3ecf4dc7ec299394e71b3124df2b3a34ed4ac3 (diff)
downloadbcm5719-llvm-831b636861ea33c3cc1c1c28384fb1800facf792.tar.gz
bcm5719-llvm-831b636861ea33c3cc1c1c28384fb1800facf792.zip
Revert "Allow newlines in AST Matchers in clang-query files"
This reverts commit 6a3ecf4dc7ec299394e71b3124df2b3a34ed4ac3.
Diffstat (limited to 'clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp')
-rw-r--r--clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp165
1 files changed, 23 insertions, 142 deletions
diff --git a/clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp b/clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp
index 67fc7079029..db16ca41875 100644
--- a/clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp
+++ b/clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp
@@ -207,12 +207,10 @@ Parser::NamedValueMap getTestNamedValues() {
TEST(ParserTest, FullParserTest) {
Diagnostics Error;
-
- StringRef Code =
+ llvm::Optional<DynTypedMatcher> VarDecl(Parser::parseMatcherExpression(
"varDecl(hasInitializer(binaryOperator(hasLHS(integerLiteral()),"
- " hasOperatorName(\"+\"))))";
- llvm::Optional<DynTypedMatcher> VarDecl(
- Parser::parseMatcherExpression(Code, &Error));
+ " hasOperatorName(\"+\"))))",
+ &Error));
EXPECT_EQ("", Error.toStringFull());
Matcher<Decl> M = VarDecl->unconditionalConvertTo<Decl>();
EXPECT_TRUE(matches("int x = 1 + false;", M));
@@ -220,9 +218,8 @@ TEST(ParserTest, FullParserTest) {
EXPECT_FALSE(matches("int x = 1 - false;", M));
EXPECT_FALSE(matches("int x = true - 1;", M));
- Code = "functionDecl(hasParameter(1, hasName(\"x\")))";
- llvm::Optional<DynTypedMatcher> HasParameter(
- Parser::parseMatcherExpression(Code, &Error));
+ llvm::Optional<DynTypedMatcher> HasParameter(Parser::parseMatcherExpression(
+ "functionDecl(hasParameter(1, hasName(\"x\")))", &Error));
EXPECT_EQ("", Error.toStringFull());
M = HasParameter->unconditionalConvertTo<Decl>();
@@ -231,18 +228,20 @@ TEST(ParserTest, FullParserTest) {
// Test named values.
auto NamedValues = getTestNamedValues();
-
- Code = "functionDecl(hasParamA, hasParameter(1, hasName(nameX)))";
llvm::Optional<DynTypedMatcher> HasParameterWithNamedValues(
- Parser::parseMatcherExpression(Code, nullptr, &NamedValues, &Error));
+ Parser::parseMatcherExpression(
+ "functionDecl(hasParamA, hasParameter(1, hasName(nameX)))",
+ nullptr, &NamedValues, &Error));
EXPECT_EQ("", Error.toStringFull());
M = HasParameterWithNamedValues->unconditionalConvertTo<Decl>();
EXPECT_TRUE(matches("void f(int a, int x);", M));
EXPECT_FALSE(matches("void f(int x, int a);", M));
- Code = "hasInitializer(\n binaryOperator(hasLHS(\"A\")))";
- EXPECT_TRUE(!Parser::parseMatcherExpression(Code, &Error).hasValue());
+
+ EXPECT_TRUE(!Parser::parseMatcherExpression(
+ "hasInitializer(\n binaryOperator(hasLHS(\"A\")))",
+ &Error).hasValue());
EXPECT_EQ("1:1: Error parsing argument 1 for matcher hasInitializer.\n"
"2:5: Error parsing argument 1 for matcher binaryOperator.\n"
"2:20: Error building matcher hasLHS.\n"
@@ -253,11 +252,9 @@ TEST(ParserTest, FullParserTest) {
TEST(ParserTest, VariadicMatchTest) {
Diagnostics Error;
-
- StringRef Code =
- "stmt(objcMessageExpr(hasAnySelector(\"methodA\", \"methodB:\")))";
- llvm::Optional<DynTypedMatcher> OM(
- Parser::parseMatcherExpression(Code, &Error));
+ llvm::Optional<DynTypedMatcher> OM(Parser::parseMatcherExpression(
+ "stmt(objcMessageExpr(hasAnySelector(\"methodA\", \"methodB:\")))",
+ &Error));
EXPECT_EQ("", Error.toStringFull());
auto M = OM->unconditionalConvertTo<Stmt>();
EXPECT_TRUE(matchesObjC("@interface I @end "
@@ -327,132 +324,15 @@ TEST(ParserTest, OverloadErrors) {
ParseWithError("callee(\"A\")"));
}
-TEST(ParserTest, ParseMultiline) {
- StringRef Code;
-
- llvm::Optional<DynTypedMatcher> M;
- {
- Code = R"matcher(varDecl(
- hasName("foo")
- )
-)matcher";
- Diagnostics Error;
- EXPECT_TRUE(Parser::parseMatcherExpression(Code, &Error).hasValue());
- }
-
- {
- Code = R"matcher(varDecl(
- # Internal comment
- hasName("foo") # Internal comment
-# Internal comment
- )
-)matcher";
- Diagnostics Error;
- EXPECT_TRUE(Parser::parseMatcherExpression(Code, &Error).hasValue());
- }
-
- {
- Code = R"matcher(decl().bind(
- "paramName")
-)matcher";
- Diagnostics Error;
- EXPECT_TRUE(Parser::parseMatcherExpression(Code, &Error).hasValue());
- }
-
- {
- Code = R"matcher(decl().bind(
- "paramName"
- )
-)matcher";
- Diagnostics Error;
- EXPECT_TRUE(Parser::parseMatcherExpression(Code, &Error).hasValue());
- }
-
- {
- Code = R"matcher(decl(decl()
-, decl()))matcher";
- Diagnostics Error;
- EXPECT_TRUE(Parser::parseMatcherExpression(Code, &Error).hasValue());
- }
-
- {
- Code = R"matcher(decl(decl(),
-decl()))matcher";
- Diagnostics Error;
- EXPECT_TRUE(Parser::parseMatcherExpression(Code, &Error).hasValue());
- }
-
- {
- Code = "namedDecl(hasName(\"n\"\n))";
- Diagnostics Error;
- EXPECT_TRUE(Parser::parseMatcherExpression(Code, &Error).hasValue());
- }
-
- {
- Diagnostics Error;
-
- auto NamedValues = getTestNamedValues();
-
- Code = R"matcher(hasParamA.bind
- ("paramName")
-)matcher";
- M = Parser::parseMatcherExpression(Code, nullptr, &NamedValues, &Error);
- EXPECT_FALSE(M.hasValue());
- EXPECT_EQ("1:15: Malformed bind() expression.", Error.toStringFull());
- }
-
- {
- Diagnostics Error;
-
- auto NamedValues = getTestNamedValues();
-
- Code = R"matcher(hasParamA.
- bind("paramName")
-)matcher";
- M = Parser::parseMatcherExpression(Code, nullptr, &NamedValues, &Error);
- EXPECT_FALSE(M.hasValue());
- EXPECT_EQ("1:11: Malformed bind() expression.", Error.toStringFull());
- }
-
- {
- Diagnostics Error;
-
- Code = R"matcher(varDecl
-()
-)matcher";
- M = Parser::parseMatcherExpression(Code, nullptr, nullptr, &Error);
- EXPECT_FALSE(M.hasValue());
- EXPECT_EQ("1:8: Error parsing matcher. Found token "
- "<NewLine> while looking for '('.",
- Error.toStringFull());
- }
-
- // Correct line/column numbers
- {
- Diagnostics Error;
-
- Code = R"matcher(varDecl(
- doesNotExist()
- )
-)matcher";
- M = Parser::parseMatcherExpression(Code, nullptr, nullptr, &Error);
- EXPECT_FALSE(M.hasValue());
- EXPECT_EQ(R"error(1:1: Error parsing argument 1 for matcher varDecl.
-2:3: Matcher not found: doesNotExist)error",
- Error.toStringFull());
- }
-}
-
TEST(ParserTest, CompletionRegistry) {
- StringRef Code = "while";
- std::vector<MatcherCompletion> Comps = Parser::completeExpression(Code, 5);
+ std::vector<MatcherCompletion> Comps =
+ Parser::completeExpression("while", 5);
ASSERT_EQ(1u, Comps.size());
EXPECT_EQ("Stmt(", Comps[0].TypedText);
EXPECT_EQ("Matcher<Stmt> whileStmt(Matcher<WhileStmt>...)",
Comps[0].MatcherDecl);
- Code = "whileStmt().";
- Comps = Parser::completeExpression(Code, 12);
+ Comps = Parser::completeExpression("whileStmt().", 12);
ASSERT_EQ(1u, Comps.size());
EXPECT_EQ("bind(\"", Comps[0].TypedText);
EXPECT_EQ("bind", Comps[0].MatcherDecl);
@@ -500,9 +380,9 @@ TEST(ParserTest, ParseBindOnLet) {
Diagnostics Error;
{
- StringRef Code = "hasParamA.bind(\"parmABinding\")";
llvm::Optional<DynTypedMatcher> TopLevelLetBinding(
- Parser::parseMatcherExpression(Code, nullptr, &NamedValues, &Error));
+ Parser::parseMatcherExpression("hasParamA.bind(\"parmABinding\")",
+ nullptr, &NamedValues, &Error));
EXPECT_EQ("", Error.toStringFull());
auto M = TopLevelLetBinding->unconditionalConvertTo<Decl>();
@@ -515,9 +395,10 @@ TEST(ParserTest, ParseBindOnLet) {
}
{
- StringRef Code = "functionDecl(hasParamA.bind(\"parmABinding\"))";
llvm::Optional<DynTypedMatcher> NestedLetBinding(
- Parser::parseMatcherExpression(Code, nullptr, &NamedValues, &Error));
+ Parser::parseMatcherExpression(
+ "functionDecl(hasParamA.bind(\"parmABinding\"))", nullptr,
+ &NamedValues, &Error));
EXPECT_EQ("", Error.toStringFull());
auto M = NestedLetBinding->unconditionalConvertTo<Decl>();
OpenPOWER on IntegriCloud