[cfe-dev] [clang-tidy] problem finding AST matcher for nested implicit const-cast
Don Hinton via cfe-dev
cfe-dev at lists.llvm.org
Fri May 10 16:45:41 PDT 2019
Hi Torbjörn:
This behavior appears to be intentional, though it would be friendly to
emit a warning. I believe this is the case your are hitting:
794 } else if (!Context->hasSameType(CanonicalInitVarType,
795 CanonicalBeginType)) {
796 // Check for qualified types to avoid conversions from
non-const to const
797 // iterator types.
798 return false;
799 }
hth...
don
On Tue, May 7, 2019 at 1:06 PM Torbjörn Klatt via cfe-dev <
cfe-dev at lists.llvm.org> wrote:
> Hi all,
>
> I'm trying to fix the clang-tidy bug 35082 [1] as a starter for getting
> into LLVM development and contribution.
>
> I think, I've tracked down the issue to
>
> clang-tidy/modernize/LoopConvertCheck.cpp:123ff:
> clang::tidy::modernize::makeIteratorLoopMatcher()
> ```
> DeclarationMatcher InitDeclMatcher =
> varDecl(hasInitializer(anyOf(ignoringParenImpCasts(BeginCallMatcher),
> materializeTemporaryExpr(
>
> ignoringParenImpCasts(BeginCallMatcher)),
> hasDescendant(BeginCallMatcher))))
> .bind(InitVarName);
> ```
> The definition of `InitDeclMatcher` seems to not match the AST tree
> ```
> |-ForStmt
> | |-DeclStmt
> | | `-VarDecl
> | | `-ExprWithCleanups
> | | `-ImplicitCastExpr
> | | `-CXXConstructExpr
> | | `-MaterializeTemporaryExpr
> | | `-ImplicitCastExpr
> | | `-CXXMemberCallExpr
> | | `-MemberExpr
> | | `-DeclRefExpr
> ```
> of
> ```
> std::vector<int> vec{1, 2, 3, 4, 5};
> for(std::vector<int>::const_iterator i = vec.begin(); i != vec.end(); ++i)
> { ... }
> ```
>
> In my naivety, I tried to include the following into the `anyOf`:
> ```
> exprWithCleanups(
> ignoringParenImpCasts(
> cxxConstructExpr(
> materializeTemporaryExpr(
> ignoringParenImpCasts(
>
> BeginCallMatcher))))),
> ```
> mimicking the specific AST tree. Without luck.
>
> I browsed through include/clang/ASTMatchers.h for better suited matchers,
> but couldn't find any.
>
> What important detail am I missing?
>
> Best
> Torbjörn
>
> [1]: https://bugs.llvm.org/show_bug.cgi?id=35082
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190510/e29ee018/attachment.html>
More information about the cfe-dev
mailing list