On Wed, Jul 23, 2014 at 3:37 PM, Daniel Jasper <[email protected]> wrote:
> Yes. match() simply means, run this matcher on this node. There is no > inherent recursion. > Ah, then it all makes sense. > > > On Wed, Jul 23, 2014 at 3:35 PM, Alexander Kornienko <[email protected]> > wrote: > >> On Wed, Jul 23, 2014 at 2:21 PM, Benjamin Kramer <[email protected]> >> wrote: >> >>> On Wed, Jul 23, 2014 at 2:07 PM, Alexander Kornienko <[email protected]> >>> wrote: >>> > On Wed, Jul 23, 2014 at 1:50 PM, Benjamin Kramer < >>> [email protected]> >>> > wrote: >>> >> >>> >> Author: d0k >>> >> Date: Wed Jul 23 06:50:54 2014 >>> >> New Revision: 213740 >>> >> >>> >> URL: http://llvm.org/viewvc/llvm-project?rev=213740&view=rev >>> >> Log: >>> >> Add the fix that should've accompanied r213738. >>> >> >>> >> Modified: >>> >> clang-tools-extra/trunk/clang-tidy/misc/UnusedRAII.cpp >>> >> >>> >> Modified: clang-tools-extra/trunk/clang-tidy/misc/UnusedRAII.cpp >>> >> URL: >>> >> >>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/UnusedRAII.cpp?rev=213740&r1=213739&r2=213740&view=diff >>> >> >>> >> >>> ============================================================================== >>> >> --- clang-tools-extra/trunk/clang-tidy/misc/UnusedRAII.cpp (original) >>> >> +++ clang-tools-extra/trunk/clang-tidy/misc/UnusedRAII.cpp Wed Jul 23 >>> >> 06:50:54 2014 >>> >> @@ -34,7 +34,6 @@ void UnusedRAIICheck::registerMatchers(M >>> >> >>> anyOf(recordDecl(ast_matchers::isTemplateInstantiation()), >>> >> >>> >> functionDecl(ast_matchers::isTemplateInstantiation()))))), >>> >> hasParent(compoundStmt().bind("compound")), >>> >> - hasDescendant(typeLoc().bind("typeloc")), >>> >> hasType(recordDecl(hasUserDeclaredDestructor())), >>> >> anyOf(has(BindTemp), >>> has(functionalCastExpr(has(BindTemp))))) >>> >> .bind("expr"), >>> >> @@ -71,8 +70,12 @@ void UnusedRAIICheck::check(const MatchF >>> >> return; >>> >> } >>> >> >>> >> - // Otherwise just suggest adding a name. >>> >> - const auto *TL = Result.Nodes.getNodeAs<TypeLoc>("typeloc"); >>> >> + // Otherwise just suggest adding a name. To find the place to >>> insert >>> >> the name >>> >> + // find the first TypeLoc in the children of E, which always >>> points to >>> >> the >>> >> + // written type. >>> >> + const auto *TL = >>> >> + selectFirst<TypeLoc>("t", >>> >> match(expr(hasDescendant(typeLoc().bind("t"))), >>> >> + *E, *Result.Context)); >>> > >>> > >>> > Can't you just match typeLoc()? >>> >>> I tried that and it doesn't work. Neither does findAll(typeLoc()). >>> >> >> Can you explain in more detail what specifically doesn't work? Does it >> match anything? Daniel, do you have an explanation of why matching >> typeLoc() works differently than matching expr(hasDescendant(typeLoc())) on >> Expr? >> >> >>> Took me a while to come up with the current incantation :| >>> >>> - Ben >>> >>> >> >>> >> D << FixItHint::CreateInsertion( >>> >> Lexer::getLocForEndOfToken(TL->getLocEnd(), 0, >>> >> *Result.SourceManager, >>> >> Result.Context->getLangOpts()), >>> >> >>> >>
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
