[cfe-dev] [clang-tidy] hasParent for CXXCtorInitializer

Alexander Kornienko via cfe-dev cfe-dev at lists.llvm.org
Tue Apr 26 08:51:49 PDT 2016


Manuel, do you have an idea what could be wrong here?

On Sat, Apr 16, 2016 at 7:22 PM, Piotr Padlewski <piotr.padlewski at gmail.com>
wrote:

> Hi folks,
> I was wondering what is the best way to get to the CXXCtroInitializer from
> child.
>
> In code like this:
> struct A {
>     A() : a(false), c(false) {}
>     unsigned a : 1;
>     unsigned c : 3;
> };
>
> I am looking for implicit casts from bool.
> I added CXXCtorInitializer into hasParent like this:
>
> const internal::ArgumentAdaptingMatcherFunc<
>     internal::HasParentMatcher,
>     internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc,
> CXXCtorInitializer>,
>     internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc>>
>     LLVM_ATTRIBUTE_UNUSED hasParent = {};
>
> so clang-query doesn't reject matcher:
> implicitCastExpr(hasParent(cxxCtorInitializer()))
> but it doesn't match with anything.
>
> I also tried something like this:
>
>   auto matcher =
> hasAncestor(cxxConstructorDecl(hasAnyConstructorInitializer(
>     cxxCtorInitializer(forField(isOneBitBitField()),
>
>  withInitializer(implicitCastExpr(equalsBoundNode("cast")))
>                        ))));
>
> and then
> implicitCastExpr(matcher).bind("cast")
>
> but it doesn't seems to work either.
> Any thoughts?
>
> Piotr
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160426/c15927e5/attachment.html>


More information about the cfe-dev mailing list