ziqingluo-90 added a comment. In D138329#3938351 <https://reviews.llvm.org/D138329#3938351>, @xazax.hun wrote:
> Is the problem `forEachDescendant` matching statements inside blocks and > lambdas? I wonder if this behavior would surprise people, so I think it would > be better to: > > - Potentially add a template bool parameter to `forEachDescendant` > controlling this behavior. > - Review existing uses because I am not entirely sure if the current behavior > is the right default. Let me try to describe the problem in more detail. The goal is to recursively visit every descendant of a node `n` but skip all nested callable declarations in `n`. With `forEachDescendant`, one needs to explicitly test and skip, using `forCallable`, if a descendant does not belong to the same "callable" as `n`. `forCallable` looks for ancestors of a node through the AST so it requires the AST to be complete. But in our case, the AST is under construction. Given a node, we want the visitor only strictly look at descendants of the node. For the questions, I think blocks and lambdas are the only cases we will have in analyzing "C/C++" + "blocks" programs. Our plan is to generalize this matcher to be an optional mode of `forEachDescendant` once it becomes stable. So this implementation also skips other declarations. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138329/new/ https://reviews.llvm.org/D138329 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits