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

Piotr Padlewski via cfe-dev cfe-dev at lists.llvm.org
Sat Apr 16 10:22:02 PDT 2016


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/20160416/962374c1/attachment.html>


More information about the cfe-dev mailing list