Yep, sending fix 2016-05-31 17:45 GMT+02:00 Rafael Espíndola <rafael.espind...@gmail.com>:
> This broke the build: > > http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/36968/steps/cmake-configure/logs/stdio > > On 31 May 2016 at 08:25, Piotr Padlewski via cfe-commits > <cfe-commits@lists.llvm.org> wrote: > > Author: prazek > > Date: Tue May 31 10:25:05 2016 > > New Revision: 271288 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=271288&view=rev > > Log: > > [ASTMatchers] Breaking change of `has` matcher > > > > has matcher can now match to implicit and paren casts > > > > http://reviews.llvm.org/D20801 > > > > Modified: > > cfe/trunk/docs/ReleaseNotes.rst > > cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h > > cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h > > cfe/trunk/include/clang/CMakeLists.txt > > cfe/trunk/unittests/AST/ASTImporterTest.cpp > > cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp > > > > Modified: cfe/trunk/docs/ReleaseNotes.rst > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNotes.rst?rev=271288&r1=271287&r2=271288&view=diff > > > ============================================================================== > > --- cfe/trunk/docs/ReleaseNotes.rst (original) > > +++ cfe/trunk/docs/ReleaseNotes.rst Tue May 31 10:25:05 2016 > > @@ -185,11 +185,13 @@ this section should help get you past th > > AST Matchers > > ------------ > > > > -- hasAnyArgument: Matcher no longer ignores parentheses and implicit > casts on > > - the argument before applying the inner matcher. The fix was done to > allow for > > - greater control by the user. In all existing checkers that use this > matcher > > - all instances of code ``hasAnyArgument(<inner matcher>)`` must be > changed to > > - ``hasAnyArgument(ignoringParenImpCasts(<inner matcher>))``. > > +- has and hasAnyArgument: Matchers no longer ignores parentheses and > implicit > > + casts on the argument before applying the inner matcher. The fix was > done to > > + allow for greater control by the user. In all existing checkers that > use this > > + matcher all instances of code ``hasAnyArgument(<inner matcher>)`` or > > + ``has(<inner matcher>)`` must be changed to > > + ``hasAnyArgument(ignoringParenImpCasts(<inner matcher>))`` or > > + ``has(ignoringParenImpCasts(<inner matcher>))``. > > > > ... > > > > > > Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h?rev=271288&r1=271287&r2=271288&view=diff > > > ============================================================================== > > --- cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h (original) > > +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h Tue May 31 > 10:25:05 2016 > > @@ -2169,6 +2169,10 @@ AST_MATCHER_P(CXXRecordDecl, hasMethod, > > /// ChildT must be an AST base type. > > /// > > /// Usable as: Any Matcher > > +/// Note that has is direct matcher, so it also matches things like > implicit > > +/// casts and paren casts. If you are matching with expr then you should > > +/// probably consider using ignoringParenImpCasts like: > > +/// has(ignoringParenImpCasts(expr())). > > const internal::ArgumentAdaptingMatcherFunc<internal::HasMatcher> > > LLVM_ATTRIBUTE_UNUSED has = {}; > > > > > > Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h?rev=271288&r1=271287&r2=271288&view=diff > > > ============================================================================== > > --- cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h (original) > > +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h Tue May 31 > 10:25:05 2016 > > @@ -1165,8 +1165,6 @@ public: > > /// ChildT must be an AST base type. > > template <typename T, typename ChildT> > > class HasMatcher : public WrapperMatcherInterface<T> { > > - static_assert(IsBaseType<ChildT>::value, > > - "has only accepts base type matcher"); > > > > public: > > explicit HasMatcher(const Matcher<ChildT> &ChildMatcher) > > @@ -1174,10 +1172,9 @@ public: > > > > bool matches(const T &Node, ASTMatchFinder *Finder, > > BoundNodesTreeBuilder *Builder) const override { > > - return Finder->matchesChildOf( > > - Node, this->InnerMatcher, Builder, > > - ASTMatchFinder::TK_IgnoreImplicitCastsAndParentheses, > > - ASTMatchFinder::BK_First); > > + return Finder->matchesChildOf(Node, this->InnerMatcher, Builder, > > + ASTMatchFinder::TK_AsIs, > > + ASTMatchFinder::BK_First); > > } > > }; > > > > > > Modified: cfe/trunk/include/clang/CMakeLists.txt > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/CMakeLists.txt?rev=271288&r1=271287&r2=271288&view=diff > > > ============================================================================== > > --- cfe/trunk/include/clang/CMakeLists.txt (original) > > +++ cfe/trunk/include/clang/CMakeLists.txt Tue May 31 10:25:05 2016 > > @@ -5,3 +5,4 @@ add_subdirectory(Parse) > > add_subdirectory(Sema) > > add_subdirectory(Serialization) > > add_subdirectory(StaticAnalyzer/Checkers) > > +add_subdirectory(ASTMatchers) > > > > Modified: cfe/trunk/unittests/AST/ASTImporterTest.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/AST/ASTImporterTest.cpp?rev=271288&r1=271287&r2=271288&view=diff > > > ============================================================================== > > --- cfe/trunk/unittests/AST/ASTImporterTest.cpp (original) > > +++ cfe/trunk/unittests/AST/ASTImporterTest.cpp Tue May 31 10:25:05 2016 > > @@ -225,20 +225,14 @@ TEST(ImportExpr, ImportCXXThisExpr) { > > > > TEST(ImportExpr, ImportAtomicExpr) { > > MatchVerifier<Decl> Verifier; > > - EXPECT_TRUE( > > - testImport( > > - "void declToImport() { int *ptr; __atomic_load_n(ptr, 1); }", > > - Lang_CXX, "", Lang_CXX, Verifier, > > - functionDecl( > > - hasBody( > > - compoundStmt( > > - has( > > - atomicExpr( > > - has(declRefExpr( > > - hasDeclaration(varDecl(hasName("ptr"))), > > - hasType(asString("int *")))), > > - has(integerLiteral(equals(1), > hasType(asString("int")))) > > - ))))))); > > + EXPECT_TRUE(testImport( > > + "void declToImport() { int *ptr; __atomic_load_n(ptr, 1); }", > Lang_CXX, > > + "", Lang_CXX, Verifier, > > + functionDecl(hasBody(compoundStmt(has(atomicExpr( > > + has(ignoringParenImpCasts( > > + declRefExpr(hasDeclaration(varDecl(hasName("ptr"))), > > + hasType(asString("int *"))))), > > + has(integerLiteral(equals(1), > hasType(asString("int"))))))))))); > > } > > > > TEST(ImportExpr, ImportLabelDeclAndAddrLabelExpr) { > > > > Modified: cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp?rev=271288&r1=271287&r2=271288&view=diff > > > ============================================================================== > > --- cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp > (original) > > +++ cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp Tue May > 31 10:25:05 2016 > > @@ -122,8 +122,8 @@ TEST(Has, MatchesChildTypes) { > > > > TEST(StatementMatcher, Has) { > > StatementMatcher HasVariableI = > > - expr(hasType(pointsTo(recordDecl(hasName("X")))), > > - has(declRefExpr(to(varDecl(hasName("i")))))); > > + expr(hasType(pointsTo(recordDecl(hasName("X")))), > > + > has(ignoringParenImpCasts(declRefExpr(to(varDecl(hasName("i"))))))); > > > > EXPECT_TRUE(matches( > > "class X; X *x(int); void c() { int i; x(i); }", HasVariableI)); > > > > > > _______________________________________________ > > cfe-commits mailing list > > cfe-commits@lists.llvm.org > > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits