[clang-tools-extra] r213740 - Add the fix that should've accompanied r213738.
Alexander Kornienko
alexfh at google.com
Wed Jul 23 06:39:20 PDT 2014
On Wed, Jul 23, 2014 at 3:37 PM, Daniel Jasper <djasper at google.com> 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 <alexfh at google.com>
> wrote:
>
>> On Wed, Jul 23, 2014 at 2:21 PM, Benjamin Kramer <benny.kra at gmail.com>
>> wrote:
>>
>>> On Wed, Jul 23, 2014 at 2:07 PM, Alexander Kornienko <alexfh at google.com>
>>> wrote:
>>> > On Wed, Jul 23, 2014 at 1:50 PM, Benjamin Kramer <
>>> benny.kra at googlemail.com>
>>> > 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()),
>>> >>
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140723/7c27f64f/attachment.html>
More information about the cfe-commits
mailing list