steveire updated this revision to Diff 237418.
steveire added a comment.

Fix case


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D72531/new/

https://reviews.llvm.org/D72531

Files:
  clang/unittests/AST/ASTImporterTest.cpp
  clang/unittests/AST/SourceLocationTest.cpp
  clang/unittests/AST/StmtPrinterTest.cpp
  clang/unittests/ASTMatchers/ASTMatchersNarrowingTest.cpp
  clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
  clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
  clang/unittests/Analysis/ExprMutationAnalyzerTest.cpp
  clang/unittests/Tooling/RangeSelectorTest.cpp
  clang/unittests/Tooling/RefactoringCallbacksTest.cpp
  clang/unittests/Tooling/StencilTest.cpp

Index: clang/unittests/Tooling/StencilTest.cpp
===================================================================
--- clang/unittests/Tooling/StencilTest.cpp
+++ clang/unittests/Tooling/StencilTest.cpp
@@ -60,7 +60,7 @@
     return llvm::None;
   }
   ASTContext &Context = AstUnit->getASTContext();
-  auto Matches = ast_matchers::match(wrapMatcher(Matcher), Context);
+  auto Matches = ast_matchers::match(traverse(ast_type_traits::TK_AsIs, wrapMatcher(Matcher)), Context);
   // We expect a single, exact match for the statement.
   if (Matches.size() != 1) {
     ADD_FAILURE() << "Wrong number of matches: " << Matches.size();
@@ -331,8 +331,8 @@
     };
   )cc";
   auto StmtMatch =
-      matchStmt(Snippet, returnStmt(hasReturnValue(ignoringImplicit(memberExpr(
-                             hasObjectExpression(expr().bind("obj")))))));
+      matchStmt(Snippet, traverse(ast_type_traits::TK_AsIs, returnStmt(hasReturnValue(ignoringImplicit(memberExpr(
+                             hasObjectExpression(expr().bind("obj"))))))));
   ASSERT_TRUE(StmtMatch);
   const Stencil Stencil = access("obj", "field");
   EXPECT_THAT_EXPECTED(Stencil->eval(StmtMatch->Result),
Index: clang/unittests/Tooling/RefactoringCallbacksTest.cpp
===================================================================
--- clang/unittests/Tooling/RefactoringCallbacksTest.cpp
+++ clang/unittests/Tooling/RefactoringCallbacksTest.cpp
@@ -22,7 +22,7 @@
                      const T &AMatcher, RefactoringCallback &Callback) {
   std::map<std::string, Replacements> FileToReplace;
   ASTMatchRefactorer Finder(FileToReplace);
-  Finder.addMatcher(AMatcher, &Callback);
+  Finder.addMatcher(traverse(ast_type_traits::TK_AsIs, AMatcher), &Callback);
   std::unique_ptr<tooling::FrontendActionFactory> Factory(
       tooling::newFrontendActionFactory(&Finder));
   ASSERT_TRUE(tooling::runToolOnCode(Factory->create(), Code))
Index: clang/unittests/Tooling/RangeSelectorTest.cpp
===================================================================
--- clang/unittests/Tooling/RangeSelectorTest.cpp
+++ clang/unittests/Tooling/RangeSelectorTest.cpp
@@ -46,6 +46,7 @@
   ASTContext &Context = ASTUnit->getASTContext();
   assert(!Context.getDiagnostics().hasErrorOccurred() && "Compilation error");
 
+  TraversalKindScope RAII(Context, ast_type_traits::TK_AsIs);
   auto Matches = ast_matchers::match(Matcher, Context);
   // We expect a single, exact match.
   assert(Matches.size() != 0 && "no matches found");
@@ -101,8 +102,8 @@
                       decl(hasDescendant(cxxCtorInitializer(isBaseInitializer())
                                              .bind("init")))
                           .bind("decl")))
-                  .bind("expr")))
-          .bind("stmt");
+                  .bind("expr"))
+        ).bind("stmt");
 
   return Selector(matchCode(Code, Matcher).Result);
 }
Index: clang/unittests/Analysis/ExprMutationAnalyzerTest.cpp
===================================================================
--- clang/unittests/Analysis/ExprMutationAnalyzerTest.cpp
+++ clang/unittests/Analysis/ExprMutationAnalyzerTest.cpp
@@ -54,6 +54,8 @@
 bool isMutated(const SmallVectorImpl<BoundNodes> &Results, ASTUnit *AST) {
   const auto *const S = selectFirst<Stmt>("stmt", Results);
   const auto *const E = selectFirst<Expr>("expr", Results);
+  TraversalKindScope RAII(AST->getASTContext(),
+    ast_type_traits::TK_AsIs);
   return ExprMutationAnalyzer(*S, AST->getASTContext()).isMutated(E);
 }
 
@@ -1129,6 +1131,7 @@
   auto Results =
       match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
   EXPECT_FALSE(isMutated(Results, AST.get()));
+  // return;
 
   AST = buildASTFromCode("void f() { int x, y; __typeof(x = 10) z = y; }");
   Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
@@ -1158,7 +1161,7 @@
 
   AST = buildASTFromCode(
       "void f() { int x; _Generic(x = 10, int: 0, default: 1); }");
-  Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
+  Results = match(traverse(ast_type_traits::TK_AsIs, withEnclosingCompound(declRefTo("x"))), AST->getASTContext());
   EXPECT_FALSE(isMutated(Results, AST.get()));
 }
 
Index: clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
===================================================================
--- clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
+++ clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
@@ -373,7 +373,7 @@
   EXPECT_TRUE(matches("class Y { void x() { x(); } };", CallMethodX));
   EXPECT_TRUE(notMatches("class Y { void x() {} };", CallMethodX));
 
-  CallMethodX = callExpr(callee(cxxConversionDecl()));
+  CallMethodX = traverse(ast_type_traits::TK_AsIs, callExpr(callee(cxxConversionDecl())));
   EXPECT_TRUE(
     matches("struct Y { operator int() const; }; int i = Y();", CallMethodX));
   EXPECT_TRUE(notMatches("struct Y { operator int() const; }; Y y = Y();",
@@ -435,8 +435,8 @@
                          "void x() { int y; (void)Y(1, 2); }",
                          UnresolvedCtorArgumentY));
 
-  StatementMatcher ImplicitCastedArgument = callExpr(
-    hasAnyArgument(implicitCastExpr()));
+  StatementMatcher ImplicitCastedArgument = traverse(ast_type_traits::TK_AsIs, callExpr(
+    hasAnyArgument(implicitCastExpr())));
   EXPECT_TRUE(matches("void x(long) { int y; x(y); }", ImplicitCastedArgument));
 }
 
@@ -570,13 +570,13 @@
     struct X : public Y {};
     void z(X x) { x.m(); }
   )cc";
-  auto MatchesY = cxxMemberCallExpr(
-      onImplicitObjectArgument(hasType(cxxRecordDecl(hasName("Y")))));
+  auto MatchesY = traverse(ast_type_traits::TK_AsIs, cxxMemberCallExpr(
+      onImplicitObjectArgument(hasType(cxxRecordDecl(hasName("Y"))))));
   EXPECT_TRUE(matches(Snippet1, MatchesY));
   EXPECT_TRUE(matches(Snippet2, MatchesY));
 
-  auto MatchesX = cxxMemberCallExpr(
-      onImplicitObjectArgument(hasType(cxxRecordDecl(hasName("X")))));
+  auto MatchesX = traverse(ast_type_traits::TK_AsIs, cxxMemberCallExpr(
+      onImplicitObjectArgument(hasType(cxxRecordDecl(hasName("X"))))));
   EXPECT_TRUE(notMatches(Snippet2, MatchesX));
 
   // Parens are not ignored.
@@ -587,7 +587,7 @@
     Y g();
     void z(Y y) { (g()).m(); }
   )cc";
-  auto MatchesCall = cxxMemberCallExpr(onImplicitObjectArgument(callExpr()));
+  auto MatchesCall = traverse(ast_type_traits::TK_AsIs, cxxMemberCallExpr(onImplicitObjectArgument(callExpr())));
   EXPECT_TRUE(notMatches(Snippet3, MatchesCall));
 }
 
@@ -686,7 +686,7 @@
     declRefExpr(to(varDecl(hasName("y")))).bind("arg");
   DeclarationMatcher IntParam = parmVarDecl(hasType(isInteger())).bind("param");
   StatementMatcher ConstructExpr =
-    cxxConstructExpr(forEachArgumentWithParam(ArgumentY, IntParam));
+    traverse(ast_type_traits::TK_AsIs, cxxConstructExpr(forEachArgumentWithParam(ArgumentY, IntParam)));
 
   EXPECT_TRUE(matchAndVerifyResultTrue(
     "struct C {"
@@ -1113,7 +1113,7 @@
   EXPECT_TRUE(notMatches("void x() { false || true; }", OperatorTrueFalse));
 
   StatementMatcher OperatorIntPointer = arraySubscriptExpr(
-    hasLHS(hasType(isInteger())), hasRHS(hasType(pointsTo(qualType()))));
+    hasLHS(hasType(isInteger())), traverse(ast_type_traits::TK_AsIs, hasRHS(hasType(pointsTo(qualType())))));
   EXPECT_TRUE(matches("void x() { 1[\"abc\"]; }", OperatorIntPointer));
   EXPECT_TRUE(notMatches("void x() { \"abc\"[1]; }", OperatorIntPointer));
 }
@@ -1293,8 +1293,8 @@
 TEST(ArraySubscriptMatchers, MatchesArrayBase) {
   EXPECT_TRUE(matches(
     "int i[2]; void f() { i[1] = 2; }",
-    arraySubscriptExpr(hasBase(implicitCastExpr(
-      hasSourceExpression(declRefExpr()))))));
+    traverse(ast_type_traits::TK_AsIs, arraySubscriptExpr(hasBase(implicitCastExpr(
+      hasSourceExpression(declRefExpr())))))));
 }
 
 TEST(Matcher, OfClass) {
@@ -1442,12 +1442,12 @@
 TEST(HasImplicitDestinationType, MatchesSimpleCase) {
   // This test creates an implicit const cast.
   EXPECT_TRUE(matches("int x; const int i = x;",
-                      implicitCastExpr(
-                        hasImplicitDestinationType(isInteger()))));
+                      traverse(ast_type_traits::TK_AsIs, implicitCastExpr(
+                        hasImplicitDestinationType(isInteger())))));
   // This test creates an implicit array-to-pointer cast.
   EXPECT_TRUE(matches("int arr[3]; int *p = arr;",
-                      implicitCastExpr(hasImplicitDestinationType(
-                        pointsTo(TypeMatcher(anything()))))));
+                      traverse(ast_type_traits::TK_AsIs, implicitCastExpr(hasImplicitDestinationType(
+                        pointsTo(TypeMatcher(anything())))))));
 }
 
 TEST(HasImplicitDestinationType, DoesNotMatchIncorrectly) {
@@ -1579,7 +1579,7 @@
     SomeType i = something();
 }
 )";
-  EXPECT_TRUE(matches(Code, varDecl(
+  EXPECT_TRUE(matches(Code, traverse(ast_type_traits::TK_AsIs, varDecl(
       hasName("i"),
       hasInitializer(exprWithCleanups(has(
         cxxConstructExpr(has(expr(ignoringImplicit(cxxConstructExpr(
@@ -1587,12 +1587,12 @@
           )))))
         )))
       )
-  ));
+  )));
 }
 
 TEST(IgnoringImplicit, DoesNotMatchIncorrectly) {
   EXPECT_TRUE(
-      notMatches("class C {}; C a = C();", varDecl(has(cxxConstructExpr()))));
+      notMatches("class C {}; C a = C();", traverse(ast_type_traits::TK_AsIs, varDecl(has(cxxConstructExpr())))));
 }
 
 TEST(Traversal, traverseMatcher) {
@@ -2008,8 +2008,8 @@
                          varDecl(hasInitializer(ignoringImpCasts(
                            integerLiteral())))));
   EXPECT_TRUE(notMatches("int i = (0);",
-                         varDecl(hasInitializer(ignoringImpCasts(
-                           integerLiteral())))));
+                         traverse(ast_type_traits::TK_AsIs, varDecl(hasInitializer(ignoringImpCasts(
+                           integerLiteral()))))));
   EXPECT_TRUE(notMatches("float i = (float)0;",
                          varDecl(hasInitializer(ignoringImpCasts(
                            integerLiteral())))));
@@ -2123,15 +2123,15 @@
 TEST(HasSourceExpression, MatchesImplicitCasts) {
   EXPECT_TRUE(matches("class string {}; class URL { public: URL(string s); };"
                         "void r() {string a_string; URL url = a_string; }",
-                      implicitCastExpr(
-                        hasSourceExpression(cxxConstructExpr()))));
+                      traverse(ast_type_traits::TK_AsIs, implicitCastExpr(
+                        hasSourceExpression(cxxConstructExpr())))));
 }
 
 TEST(HasSourceExpression, MatchesExplicitCasts) {
   EXPECT_TRUE(matches("float x = static_cast<float>(42);",
-                      explicitCastExpr(
+                      traverse(ast_type_traits::TK_AsIs, explicitCastExpr(
                         hasSourceExpression(hasDescendant(
-                          expr(integerLiteral()))))));
+                          expr(integerLiteral())))))));
 }
 
 TEST(UsingDeclaration, MatchesSpecificTarget) {
@@ -2186,17 +2186,17 @@
     "void x() { if (1) switch(42) { case 42: switch (42) { default:; } } }",
     ifStmt(has(switchStmt(forEachSwitchCase(defaultStmt()))))));
   EXPECT_TRUE(matches("void x() { switch(42) { case 1+1: case 4:; } }",
-                      switchStmt(forEachSwitchCase(
+                      traverse(ast_type_traits::TK_AsIs, switchStmt(forEachSwitchCase(
                         caseStmt(hasCaseConstant(
-                            constantExpr(has(integerLiteral()))))))));
+                            constantExpr(has(integerLiteral())))))))));
   EXPECT_TRUE(notMatches("void x() { switch(42) { case 1+1: case 2+2:; } }",
-                         switchStmt(forEachSwitchCase(
+                         traverse(ast_type_traits::TK_AsIs, switchStmt(forEachSwitchCase(
                            caseStmt(hasCaseConstant(
-                               constantExpr(has(integerLiteral()))))))));
+                               constantExpr(has(integerLiteral())))))))));
   EXPECT_TRUE(notMatches("void x() { switch(42) { case 1 ... 2:; } }",
-                         switchStmt(forEachSwitchCase(
+                         traverse(ast_type_traits::TK_AsIs, switchStmt(forEachSwitchCase(
                            caseStmt(hasCaseConstant(
-                               constantExpr(has(integerLiteral()))))))));
+                               constantExpr(has(integerLiteral())))))))));
   EXPECT_TRUE(matchAndVerifyResultTrue(
     "void x() { switch (42) { case 1: case 2: case 3: default:; } }",
     switchStmt(forEachSwitchCase(caseStmt().bind("x"))),
@@ -2204,52 +2204,53 @@
 }
 
 TEST(Declaration, HasExplicitSpecifier) {
+
   EXPECT_TRUE(matchesConditionally(
-      "void f();", functionDecl(hasExplicitSpecifier(constantExpr())), false,
+      "void f();", traverse(ast_type_traits::TK_AsIs, functionDecl(hasExplicitSpecifier(constantExpr()))), false,
       "-std=c++2a"));
   EXPECT_TRUE(matchesConditionally(
       "template<bool b> struct S { explicit operator int(); };",
-      cxxConversionDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral())))),
+      traverse(ast_type_traits::TK_AsIs, cxxConversionDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral()))))),
       false, "-std=c++2a"));
   EXPECT_TRUE(matchesConditionally(
       "template<bool b> struct S { explicit(b) operator int(); };",
-      cxxConversionDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral())))),
+      traverse(ast_type_traits::TK_AsIs, cxxConversionDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral()))))),
       false, "-std=c++2a"));
   EXPECT_TRUE(matchesConditionally(
       "struct S { explicit(true) operator int(); };",
-      cxxConversionDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral())))),
+      traverse(ast_type_traits::TK_AsIs, cxxConversionDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral()))))),
       true, "-std=c++2a"));
   EXPECT_TRUE(matchesConditionally(
       "struct S { explicit(false) operator int(); };",
-      cxxConversionDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral())))),
+      traverse(ast_type_traits::TK_AsIs, cxxConversionDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral()))))),
       true, "-std=c++2a"));
   EXPECT_TRUE(matchesConditionally(
       "template<bool b> struct S { explicit(b) S(int); };",
-      cxxConstructorDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral())))),
+      traverse(ast_type_traits::TK_AsIs, cxxConstructorDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral()))))),
       false, "-std=c++2a"));
   EXPECT_TRUE(matchesConditionally(
       "struct S { explicit(true) S(int); };",
-      cxxConstructorDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral())))),
+      traverse(ast_type_traits::TK_AsIs, cxxConstructorDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral()))))),
       true, "-std=c++2a"));
   EXPECT_TRUE(matchesConditionally(
       "struct S { explicit(false) S(int); };",
-      cxxConstructorDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral())))),
+      traverse(ast_type_traits::TK_AsIs, cxxConstructorDecl(hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral()))))),
       true, "-std=c++2a"));
   EXPECT_TRUE(matchesConditionally(
       "template<typename T> struct S { S(int); };"
       "template<bool b = true> explicit(b) S(int) -> S<int>;",
-      cxxDeductionGuideDecl(
-          hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral())))),
+      traverse(ast_type_traits::TK_AsIs, cxxDeductionGuideDecl(
+          hasExplicitSpecifier(constantExpr(has(cxxBoolLiteral()))))),
       false, "-std=c++2a"));
   EXPECT_TRUE(matchesConditionally("template<typename T> struct S { S(int); };"
                                    "explicit(true) S(int) -> S<int>;",
-                                   cxxDeductionGuideDecl(hasExplicitSpecifier(
-                                       constantExpr(has(cxxBoolLiteral())))),
+                                   traverse(ast_type_traits::TK_AsIs, cxxDeductionGuideDecl(hasExplicitSpecifier(
+                                       constantExpr(has(cxxBoolLiteral()))))),
                                    true, "-std=c++2a"));
   EXPECT_TRUE(matchesConditionally("template<typename T> struct S { S(int); };"
                                    "explicit(false) S(int) -> S<int>;",
-                                   cxxDeductionGuideDecl(hasExplicitSpecifier(
-                                       constantExpr(has(cxxBoolLiteral())))),
+                                   traverse(ast_type_traits::TK_AsIs, cxxDeductionGuideDecl(hasExplicitSpecifier(
+                                       constantExpr(has(cxxBoolLiteral()))))),
                                    true, "-std=c++2a"));
 }
 
Index: clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
===================================================================
--- clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
+++ clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
@@ -296,11 +296,11 @@
   EXPECT_FALSE(matches("template<int N>\n"
                          "struct A {  static const int n = 0; };\n"
                          "struct B : public A<42> {};",
-                       substNonTypeTemplateParmExpr()));
+                       traverse(ast_type_traits::TK_AsIs, substNonTypeTemplateParmExpr())));
   EXPECT_TRUE(matches("template<int N>\n"
                         "struct A {  static const int n = N; };\n"
                         "struct B : public A<42> {};",
-                      substNonTypeTemplateParmExpr()));
+                      traverse(ast_type_traits::TK_AsIs, substNonTypeTemplateParmExpr())));
 }
 
 TEST(Matcher, NonTypeTemplateParmDecl) {
@@ -367,7 +367,7 @@
 
 TEST(Matcher, ThisPointerType) {
   StatementMatcher MethodOnY =
-    cxxMemberCallExpr(thisPointerType(recordDecl(hasName("Y"))));
+    traverse(ast_type_traits::TK_AsIs, cxxMemberCallExpr(thisPointerType(recordDecl(hasName("Y")))));
 
   EXPECT_TRUE(
     matches("class Y { public: void x(); }; void z() { Y y; y.x(); }",
@@ -572,7 +572,7 @@
 }
 
 TEST(Matcher, ConstructorCall) {
-  StatementMatcher Constructor = cxxConstructExpr();
+  StatementMatcher Constructor = traverse(ast_type_traits::TK_AsIs, cxxConstructExpr());
 
   EXPECT_TRUE(
     matches("class X { public: X(); }; void x() { X x; }", Constructor));
@@ -598,7 +598,7 @@
 }
 
 TEST(Matcher, BindTemporaryExpression) {
-  StatementMatcher TempExpression = cxxBindTemporaryExpr();
+  StatementMatcher TempExpression = traverse(ast_type_traits::TK_AsIs, cxxBindTemporaryExpr());
 
   std::string ClassString = "class string { public: string(); ~string(); }; ";
 
@@ -631,13 +631,14 @@
 TEST(MaterializeTemporaryExpr, MatchesTemporary) {
   std::string ClassString =
     "class string { public: string(); int length(); }; ";
+  StatementMatcher TempExpression = traverse(ast_type_traits::TK_AsIs, materializeTemporaryExpr());
 
   EXPECT_TRUE(
     matches(ClassString +
               "string GetStringByValue();"
                 "void FunctionTakesString(string s);"
                 "void run() { FunctionTakesString(GetStringByValue()); }",
-            materializeTemporaryExpr()));
+            TempExpression));
 
   EXPECT_TRUE(
     notMatches(ClassString +
@@ -648,19 +649,19 @@
                    "  FunctionTakesStringPtr(GetStringPointer());"
                    "  FunctionTakesStringPtr(s);"
                    "}",
-               materializeTemporaryExpr()));
+               TempExpression));
 
   EXPECT_TRUE(
     matches(ClassString +
                  "string GetStringByValue();"
                    "void run() { int k = GetStringByValue().length(); }",
-               materializeTemporaryExpr()));
+               TempExpression));
 
   EXPECT_TRUE(
     notMatches(ClassString +
                  "string GetStringByValue();"
                    "void run() { GetStringByValue(); }",
-               materializeTemporaryExpr()));
+               TempExpression));
 }
 
 TEST(Matcher, NewExpression) {
@@ -756,7 +757,7 @@
 
 TEST(Matcher, ChooseExpr) {
   EXPECT_TRUE(matchesC("void f() { (void)__builtin_choose_expr(1, 2, 3); }",
-                       chooseExpr()));
+                       traverse(ast_type_traits::TK_AsIs, chooseExpr())));
 }
 
 TEST(Matcher, GNUNullExpr) {
@@ -876,12 +877,13 @@
 }
 
 TEST(Matcher, BinaryConditionalOperator) {
-  StatementMatcher AlwaysOne = binaryConditionalOperator(
+   StatementMatcher AlwaysOne = traverse(ast_type_traits::TK_AsIs,
+    binaryConditionalOperator(
     hasCondition(implicitCastExpr(
       has(
-        opaqueValueExpr(
+         opaqueValueExpr(
           hasSourceExpression((integerLiteral(equals(1)))))))),
-    hasFalseExpression(integerLiteral(equals(0))));
+    hasFalseExpression(integerLiteral(equals(0)))));
 
   EXPECT_TRUE(matches("void x() { 1 ?: 0; }", AlwaysOne));
 
@@ -936,9 +938,9 @@
 }
 TEST(CastExpression, MatchesImplicitCasts) {
   // This test creates an implicit cast from int to char.
-  EXPECT_TRUE(matches("char c = 0;", castExpr()));
+  EXPECT_TRUE(matches("char c = 0;", traverse(ast_type_traits::TK_AsIs, castExpr())));
   // This test creates an implicit cast from lvalue to rvalue.
-  EXPECT_TRUE(matches("char c = 0, d = c;", castExpr()));
+  EXPECT_TRUE(matches("char c = 0, d = c;", traverse(ast_type_traits::TK_AsIs, castExpr())));
 }
 
 TEST(CastExpression, DoesNotMatchNonCasts) {
@@ -1022,13 +1024,13 @@
 TEST(ImplicitCast, MatchesSimpleCase) {
   // This test creates an implicit const cast.
   EXPECT_TRUE(matches("int x = 0; const int y = x;",
-                      varDecl(hasInitializer(implicitCastExpr()))));
+                      traverse(ast_type_traits::TK_AsIs, varDecl(hasInitializer(implicitCastExpr())))));
   // This test creates an implicit cast from int to char.
   EXPECT_TRUE(matches("char c = 0;",
-                      varDecl(hasInitializer(implicitCastExpr()))));
+                      traverse(ast_type_traits::TK_AsIs, varDecl(hasInitializer(implicitCastExpr())))));
   // This test creates an implicit array-to-pointer cast.
   EXPECT_TRUE(matches("int arr[6]; int *p = arr;",
-                      varDecl(hasInitializer(implicitCastExpr()))));
+                      traverse(ast_type_traits::TK_AsIs, varDecl(hasInitializer(implicitCastExpr())))));
 }
 
 TEST(ImplicitCast, DoesNotMatchIncorrectly) {
@@ -1069,10 +1071,10 @@
 TEST(ExprWithCleanups, MatchesExprWithCleanups) {
   EXPECT_TRUE(matches("struct Foo { ~Foo(); };"
                         "const Foo f = Foo();",
-                      varDecl(hasInitializer(exprWithCleanups()))));
+                      traverse(ast_type_traits::TK_AsIs, varDecl(hasInitializer(exprWithCleanups())))));
   EXPECT_FALSE(matches("struct Foo { }; Foo a;"
                        "const Foo f = a;",
-                       varDecl(hasInitializer(exprWithCleanups()))));
+                       traverse(ast_type_traits::TK_AsIs, varDecl(hasInitializer(exprWithCleanups())))));
 }
 
 TEST(InitListExpression, MatchesInitListExpression) {
@@ -1098,13 +1100,13 @@
                            "  A(std::initializer_list<int>) {}"
                            "};";
   EXPECT_TRUE(matches(code + "A a{0};",
-                      cxxConstructExpr(has(cxxStdInitializerListExpr()),
+                      traverse(ast_type_traits::TK_AsIs, cxxConstructExpr(has(cxxStdInitializerListExpr()),
                                        hasDeclaration(cxxConstructorDecl(
-                                           ofClass(hasName("A")))))));
+                                           ofClass(hasName("A"))))))));
   EXPECT_TRUE(matches(code + "A a = {0};",
-                      cxxConstructExpr(has(cxxStdInitializerListExpr()),
+                      traverse(ast_type_traits::TK_AsIs, cxxConstructExpr(has(cxxStdInitializerListExpr()),
                                        hasDeclaration(cxxConstructorDecl(
-                                           ofClass(hasName("A")))))));
+                                           ofClass(hasName("A"))))))));
 
   EXPECT_TRUE(notMatches("int a[] = { 1, 2 };", cxxStdInitializerListExpr()));
   EXPECT_TRUE(notMatches("struct B { int x, y; }; B b = { 5, 6 };",
@@ -1178,19 +1180,19 @@
 }
 
 TEST(ParenExpression, SimpleCases) {
-  EXPECT_TRUE(matches("int i = (3);", parenExpr()));
-  EXPECT_TRUE(matches("int i = (3 + 7);", parenExpr()));
-  EXPECT_TRUE(notMatches("int i = 3;", parenExpr()));
+  EXPECT_TRUE(matches("int i = (3);", traverse(ast_type_traits::TK_AsIs, parenExpr())));
+  EXPECT_TRUE(matches("int i = (3 + 7);", traverse(ast_type_traits::TK_AsIs, parenExpr())));
+  EXPECT_TRUE(notMatches("int i = 3;", traverse(ast_type_traits::TK_AsIs, parenExpr())));
   EXPECT_TRUE(notMatches("int foo() { return 1; }; int a = foo();",
-                         parenExpr()));
+                         traverse(ast_type_traits::TK_AsIs, parenExpr())));
 }
 
 TEST(ParenExpression, IgnoringParens) {
   EXPECT_FALSE(matches("const char* str = (\"my-string\");",
-                       implicitCastExpr(hasSourceExpression(stringLiteral()))));
+                       traverse(ast_type_traits::TK_AsIs, implicitCastExpr(hasSourceExpression(stringLiteral())))));
   EXPECT_TRUE(matches(
       "const char* str = (\"my-string\");",
-      implicitCastExpr(hasSourceExpression(ignoringParens(stringLiteral())))));
+      traverse(ast_type_traits::TK_AsIs, implicitCastExpr(hasSourceExpression(ignoringParens(stringLiteral()))))));
 }
 
 TEST(TypeMatching, MatchesTypes) {
Index: clang/unittests/ASTMatchers/ASTMatchersNarrowingTest.cpp
===================================================================
--- clang/unittests/ASTMatchers/ASTMatchersNarrowingTest.cpp
+++ clang/unittests/ASTMatchers/ASTMatchersNarrowingTest.cpp
@@ -180,11 +180,11 @@
 
 TEST(CastExpression, HasCastKind) {
   EXPECT_TRUE(matches("char *p = 0;",
-              castExpr(hasCastKind(CK_NullToPointer))));
+              traverse(ast_type_traits::TK_AsIs, varDecl(has(castExpr(hasCastKind(CK_NullToPointer)))))));
   EXPECT_TRUE(notMatches("char *p = 0;",
-              castExpr(hasCastKind(CK_DerivedToBase))));
+              traverse(ast_type_traits::TK_AsIs, varDecl(has(castExpr(hasCastKind(CK_DerivedToBase)))))));
   EXPECT_TRUE(matches("char *p = 0;",
-              implicitCastExpr(hasCastKind(CK_NullToPointer))));
+              traverse(ast_type_traits::TK_AsIs, varDecl(has(implicitCastExpr(hasCastKind(CK_NullToPointer)))))));
 }
 
 TEST(DeclarationMatcher, HasDescendant) {
@@ -1237,8 +1237,8 @@
 }
 
 TEST(Matcher, ConstructorArgument) {
-  StatementMatcher Constructor = cxxConstructExpr(
-    hasArgument(0, declRefExpr(to(varDecl(hasName("y"))))));
+  auto Constructor = traverse(ast_type_traits::TK_AsIs, cxxConstructExpr(
+    hasArgument(0, declRefExpr(to(varDecl(hasName("y")))))));
 
   EXPECT_TRUE(
     matches("class X { public: X(int); }; void x() { int y; X x(y); }",
@@ -1253,15 +1253,15 @@
     notMatches("class X { public: X(int); }; void x() { int z; X x(z); }",
                Constructor));
 
-  StatementMatcher WrongIndex = cxxConstructExpr(
-    hasArgument(42, declRefExpr(to(varDecl(hasName("y"))))));
+  StatementMatcher WrongIndex = traverse(ast_type_traits::TK_AsIs, cxxConstructExpr(
+    hasArgument(42, declRefExpr(to(varDecl(hasName("y")))))));
   EXPECT_TRUE(
     notMatches("class X { public: X(int); }; void x() { int y; X x(y); }",
                WrongIndex));
 }
 
 TEST(Matcher, ConstructorArgumentCount) {
-  StatementMatcher Constructor1Arg = cxxConstructExpr(argumentCountIs(1));
+  auto Constructor1Arg = traverse(ast_type_traits::TK_AsIs, cxxConstructExpr(argumentCountIs(1)));
 
   EXPECT_TRUE(
     matches("class X { public: X(int); }; void x() { X x(0); }",
@@ -1278,8 +1278,8 @@
 }
 
 TEST(Matcher, ConstructorListInitialization) {
-  StatementMatcher ConstructorListInit =
-    cxxConstructExpr(isListInitialization());
+  auto ConstructorListInit =
+    traverse(ast_type_traits::TK_AsIs, varDecl(has(cxxConstructExpr(isListInitialization()))));
 
   EXPECT_TRUE(
     matches("class X { public: X(int); }; void x() { X x{0}; }",
@@ -2462,7 +2462,7 @@
 }
 
 TEST(HasDefaultArgument, Basic) {
-  EXPECT_TRUE(matches("void x(int val = 0) {}", 
+  EXPECT_TRUE(matches("void x(int val = 0) {}",
                       parmVarDecl(hasDefaultArgument())));
   EXPECT_TRUE(notMatches("void x(int val) {}",
                       parmVarDecl(hasDefaultArgument())));
@@ -2508,7 +2508,7 @@
   EXPECT_TRUE(matches("auto Y() -> int { return 0; }",
                       functionDecl(hasTrailingReturn())));
   EXPECT_TRUE(matches("auto X() -> int;", functionDecl(hasTrailingReturn())));
-  EXPECT_TRUE(notMatches("int X() { return 0; }", 
+  EXPECT_TRUE(notMatches("int X() { return 0; }",
                       functionDecl(hasTrailingReturn())));
   EXPECT_TRUE(notMatches("int X();", functionDecl(hasTrailingReturn())));
   EXPECT_TRUE(notMatchesC("void X();", functionDecl(hasTrailingReturn())));
Index: clang/unittests/AST/StmtPrinterTest.cpp
===================================================================
--- clang/unittests/AST/StmtPrinterTest.cpp
+++ clang/unittests/AST/StmtPrinterTest.cpp
@@ -138,7 +138,7 @@
     "void foo(A a, A b) {"
     "  bar(a & b);"
     "}",
-    cxxMemberCallExpr(anything()).bind("id"),
+    traverse(ast_type_traits::TK_AsIs, cxxMemberCallExpr(anything()).bind("id")),
     "a & b"));
 }
 
Index: clang/unittests/AST/SourceLocationTest.cpp
===================================================================
--- clang/unittests/AST/SourceLocationTest.cpp
+++ clang/unittests/AST/SourceLocationTest.cpp
@@ -268,7 +268,7 @@
   Verifier.expectRange(2, 20, 2, 31);
   EXPECT_TRUE(Verifier.match(
                   "typedef int int2 __attribute__((ext_vector_type(2)));\n"
-                  "constant int2 i2 = (int2)(1, 2);", 
+                  "constant int2 i2 = (int2)(1, 2);",
                   compoundLiteralExpr(), Lang_OpenCL));
 }
 
@@ -619,8 +619,8 @@
       friendDecl(hasParent(cxxRecordDecl(isTemplateInstantiation())))));
 }
 
-TEST(ObjCMessageExpr, CXXConstructExprRange) {
-  RangeVerifier<CXXConstructExpr> Verifier;
+TEST(ObjCMessageExpr, ParenExprRange) {
+  RangeVerifier<ParenExpr> Verifier;
   Verifier.expectRange(5, 25, 5, 27);
   EXPECT_TRUE(Verifier.match(
       "struct A { int a; };\n"
@@ -628,7 +628,7 @@
       "+ (void) f1: (A)arg;\n"
       "@end\n"
       "void f2() { A a; [B f1: (a)]; }\n",
-      cxxConstructExpr(), Lang_OBJCXX));
+      traverse(ast_type_traits::TK_AsIs, parenExpr()), Lang_OBJCXX));
 }
 
 TEST(FunctionDecl, FunctionDeclWithThrowSpecification) {
Index: clang/unittests/AST/ASTImporterTest.cpp
===================================================================
--- clang/unittests/AST/ASTImporterTest.cpp
+++ clang/unittests/AST/ASTImporterTest.cpp
@@ -493,7 +493,7 @@
   testImport(
     "void declToImport() { (void)__builtin_choose_expr(1, 2, 3); }",
     Lang_C, "", Lang_C, Verifier,
-    functionDecl(hasDescendant(chooseExpr())));
+    traverse(ast_type_traits::TK_AsIs, functionDecl(hasDescendant(chooseExpr()))));
 }
 
 TEST_P(ImportExpr, ImportGNUNullExpr) {
@@ -630,7 +630,7 @@
   testImport(
     "void declToImport() { int b; int a = b ?: 1; int C = ({int X=4; X;}); }",
     Lang_C, "", Lang_C, Verifier,
-    functionDecl(hasDescendant(
+    traverse(ast_type_traits::TK_AsIs, functionDecl(hasDescendant(
         varDecl(
             hasName("C"),
             hasType(asString("int")),
@@ -643,7 +643,7 @@
                             hasInitializer(
                                 integerLiteral(equals(4))))))),
                     hasDescendant(
-                        implicitCastExpr())))))));
+                        implicitCastExpr()))))))));
 }
 
 TEST_P(ImportExpr, ImportConditionalOperator) {
@@ -665,7 +665,7 @@
   testImport(
       "void declToImport() { (void)(1 ?: -5); }",
       Lang_CXX, "", Lang_CXX, Verifier,
-      functionDecl(hasDescendant(
+      traverse(ast_type_traits::TK_AsIs, functionDecl(hasDescendant(
           binaryConditionalOperator(
               hasCondition(
                   implicitCastExpr(
@@ -678,7 +678,7 @@
               hasFalseExpression(
                   unaryOperator(
                       hasOperatorName("-"),
-                      hasUnaryOperand(integerLiteral(equals(5)))))))));
+                      hasUnaryOperand(integerLiteral(equals(5))))))))));
 }
 
 TEST_P(ImportExpr, ImportDesignatedInitExpr) {
@@ -764,10 +764,10 @@
       "struct C {};"
       "void declToImport() { C c = C(); }",
       Lang_CXX, "", Lang_CXX, Verifier,
-      functionDecl(hasDescendant(
+      traverse(ast_type_traits::TK_AsIs, functionDecl(hasDescendant(
           exprWithCleanups(has(cxxConstructExpr(
               has(materializeTemporaryExpr(has(implicitCastExpr(
-                  has(cxxTemporaryObjectExpr())))))))))));
+                  has(cxxTemporaryObjectExpr()))))))))))));
 }
 
 TEST_P(ImportType, ImportAtomicType) {
@@ -818,9 +818,9 @@
       "template <int K> using dummy2 = dummy<K>;"
       "int declToImport() { return dummy2<3>::i; }",
       Lang_CXX11, "", Lang_CXX11, Verifier,
-      functionDecl(
+      traverse(ast_type_traits::TK_AsIs, functionDecl(
           hasDescendant(implicitCastExpr(has(declRefExpr()))),
-          unless(hasAncestor(translationUnitDecl(has(typeAliasDecl()))))));
+          unless(hasAncestor(translationUnitDecl(has(typeAliasDecl())))))));
 }
 
 const internal::VariadicDynCastAllOfMatcher<Decl, VarTemplateSpecializationDecl>
@@ -849,8 +849,8 @@
       "};"
       "int declToImport() { return dummy<int>::i; }",
       Lang_CXX11, "", Lang_CXX11, Verifier,
-      functionDecl(hasDescendant(
-          returnStmt(has(implicitCastExpr(has(declRefExpr())))))));
+      traverse(ast_type_traits::TK_AsIs, functionDecl(hasDescendant(
+          returnStmt(has(implicitCastExpr(has(declRefExpr()))))))));
 }
 
 const internal::VariadicDynCastAllOfMatcher<Type,
@@ -927,11 +927,11 @@
       "  auto a = typeid(int); auto b = typeid(x);"
       "}",
       Lang_CXX11, "", Lang_CXX11, Verifier,
-      functionDecl(
+      traverse(ast_type_traits::TK_AsIs, functionDecl(
           hasDescendant(varDecl(
               hasName("a"), hasInitializer(hasDescendant(cxxTypeidExpr())))),
           hasDescendant(varDecl(
-              hasName("b"), hasInitializer(hasDescendant(cxxTypeidExpr()))))));
+              hasName("b"), hasInitializer(hasDescendant(cxxTypeidExpr())))))));
 }
 
 TEST_P(ImportExpr, ImportTypeTraitExprValDep) {
@@ -1273,8 +1273,8 @@
     "void declToImport() { (void)__builtin_choose_expr(1, 0, 1); }",
     Lang_C, "", Lang_C);
 
-  auto ToResults = match(chooseExpr().bind("choose"), To->getASTContext());
-  auto FromResults = match(chooseExpr().bind("choose"), From->getASTContext());
+  auto ToResults = match(traverse(ast_type_traits::TK_AsIs, chooseExpr().bind("choose")), To->getASTContext());
+  auto FromResults = match(traverse(ast_type_traits::TK_AsIs, chooseExpr().bind("choose")), From->getASTContext());
 
   const ChooseExpr *FromChooseExpr =
       selectFirst<ChooseExpr>("choose", FromResults);
@@ -1512,7 +1512,7 @@
       R"s(
       struct declToImport {
         int a = d;
-        union { 
+        union {
           int b;
           int c;
         };
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to