Looks like this broke clang-tidy/misc-dangling-handle.cpp ( http://lab.llvm.org:8011/builders/clang-bpf-build/builds/9704). Can you take a look?
On Wed, Mar 30, 2016 at 4:22 AM, Gabor Horvath via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: xazax > Date: Wed Mar 30 06:22:14 2016 > New Revision: 264855 > > URL: http://llvm.org/viewvc/llvm-project?rev=264855&view=rev > Log: > [ASTMatchers] Existing matcher hasAnyArgument fixed > > Summary: A checker (will be uploaded after this patch) needs to check > implicit casts. The checker needs matcher hasAnyArgument but it ignores > implicit casts and parenthesized expressions which disables checking of > implicit casts for arguments in the checker. However the documentation of > the matcher contains a FIXME that this should be removed once separate > matchers for ignoring implicit casts and parenthesized expressions are > ready. Since these matchers were already there the fix could be executed. > Only one Clang checker was affected which was also fixed > (ignoreParenImpCasts added) and is separately uploaded. Third party > checkers (not in the Clang repository) may be affected by this fix so the > fix must be emphasized in the release notes. > > Reviewers: klimek, sbenza, alexfh > > Subscribers: alexfh, klimek, xazax.hun, cfe-commits > > Differential Revision: http://reviews.llvm.org/D18243 > > Modified: > cfe/trunk/docs/LibASTMatchersReference.html > cfe/trunk/docs/ReleaseNotes.rst > cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h > cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp > > Modified: cfe/trunk/docs/LibASTMatchersReference.html > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LibASTMatchersReference.html?rev=264855&r1=264854&r2=264855&view=diff > > ============================================================================== > --- cfe/trunk/docs/LibASTMatchersReference.html (original) > +++ cfe/trunk/docs/LibASTMatchersReference.html Wed Mar 30 06:22:14 2016 > @@ -3636,11 +3636,6 @@ callExpr(hasAnyArgument(declRefExpr())) > matches x(1, y, 42) > with hasAnyArgument(...) > matching y > - > -FIXME: Currently this will ignore parentheses and implicit casts on > -the argument before applying the inner matcher. We'll want to remove > -this to allow for greater control by the user once ignoreImplicit() > -has been implemented. > </pre></td></tr> > > > @@ -3907,11 +3902,6 @@ callExpr(hasAnyArgument(declRefExpr())) > matches x(1, y, 42) > with hasAnyArgument(...) > matching y > - > -FIXME: Currently this will ignore parentheses and implicit casts on > -the argument before applying the inner matcher. We'll want to remove > -this to allow for greater control by the user once ignoreImplicit() > -has been implemented. > </pre></td></tr> > > > > Modified: cfe/trunk/docs/ReleaseNotes.rst > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNotes.rst?rev=264855&r1=264854&r2=264855&view=diff > > ============================================================================== > --- cfe/trunk/docs/ReleaseNotes.rst (original) > +++ cfe/trunk/docs/ReleaseNotes.rst Wed Mar 30 06:22:14 2016 > @@ -120,6 +120,12 @@ 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>))``. > + > ... > > libclang > > Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h?rev=264855&r1=264854&r2=264855&view=diff > > ============================================================================== > --- cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h (original) > +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h Wed Mar 30 06:22:14 > 2016 > @@ -2989,18 +2989,13 @@ AST_MATCHER(CXXCtorInitializer, isMember > /// matches x(1, y, 42) > /// with hasAnyArgument(...) > /// matching y > -/// > -/// FIXME: Currently this will ignore parentheses and implicit casts on > -/// the argument before applying the inner matcher. We'll want to remove > -/// this to allow for greater control by the user once \c ignoreImplicit() > -/// has been implemented. > AST_POLYMORPHIC_MATCHER_P(hasAnyArgument, > AST_POLYMORPHIC_SUPPORTED_TYPES(CallExpr, > > CXXConstructExpr), > internal::Matcher<Expr>, InnerMatcher) { > for (const Expr *Arg : Node.arguments()) { > BoundNodesTreeBuilder Result(*Builder); > - if (InnerMatcher.matches(*Arg->IgnoreParenImpCasts(), Finder, > &Result)) { > + if (InnerMatcher.matches(*Arg, Finder, &Result)) { > *Builder = std::move(Result); > return true; > } > > Modified: cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp?rev=264855&r1=264854&r2=264855&view=diff > > ============================================================================== > --- cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp (original) > +++ cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp Wed Mar 30 > 06:22:14 2016 > @@ -1633,10 +1633,15 @@ TEST(Matcher, Argument) { > > TEST(Matcher, AnyArgument) { > StatementMatcher CallArgumentY = callExpr( > - hasAnyArgument(declRefExpr(to(varDecl(hasName("y")))))); > + hasAnyArgument( > + ignoringParenImpCasts(declRefExpr(to(varDecl(hasName("y"))))))); > EXPECT_TRUE(matches("void x(int, int) { int y; x(1, y); }", > CallArgumentY)); > EXPECT_TRUE(matches("void x(int, int) { int y; x(y, 42); }", > CallArgumentY)); > EXPECT_TRUE(notMatches("void x(int, int) { x(1, 2); }", CallArgumentY)); > + > + StatementMatcher ImplicitCastedArgument = callExpr( > + hasAnyArgument(implicitCastExpr())); > + EXPECT_TRUE(matches("void x(long) { int y; x(y); }", > ImplicitCastedArgument)); > } > > TEST(ForEachArgumentWithParam, ReportsNoFalsePositives) { > > > _______________________________________________ > 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