kadircet marked an inline comment as done.
kadircet added inline comments.

================
Comment at: clang/lib/Index/IndexingAction.cpp:142
+    ShouldSkipFunctionBody =
+        [ShouldTraverseDecl(Opts.ShouldTraverseDecl)](const Decl *D) {
+          return !ShouldTraverseDecl(D);
----------------
sammccall wrote:
> kadircet wrote:
> > are we happy with the copy here ?
> > 
> > I am a little uneasy, as these functions can preserve state. Currently the 
> > one used in here and the one used in `IndexingContext::indexTopLevelDecl` 
> > are different copies.
> > 
> > Maybe rather progate a null function into the `IndexASTConsumer` and create 
> > this default lambda in there, making use of the function inside 
> > `IndexingContext::IndexOpts` without a copy?
> > are we happy with the copy here ?
> 
> Note that we already have a copy: we take IndexingOptions by const ref and 
> createIndexingASTConsumer copies it, including the function. So anything that 
> relies on the identity of the function passed in, or breaks semantics of 
> copying, is busted already.
> 
> as for internal state (e.g. a cache)... I'd agree if this were a heavily used 
> library function (find a way to capture by pointer/shared_ptr). But it's not, 
> and neither of the in-tree callers work this way - I'm not sure it's worth 
> spending API complexity on.
> 
> > Maybe rather progate...
> 
> Hmm, I like the idea that these are clearly separate options at the lower 
> internal layer, and that blurs the lines a bit.
> (I'd like *more* making them completely the same, but halfway isn't a happy 
> place to be I think)
> as for internal state (e.g. a cache)... I'd agree if this were a heavily used 
> library function (find a way to capture by pointer/shared_ptr). But it's not, 
> and neither of the in-tree callers work this way - I'm not sure it's worth 
> spending API complexity on.

SG. I wasn't concerned about the copying but rather lambda invoked in 
`ShouldSkipFunctionBody` and `ShouldTraverseDecl` being different. I agree that 
preserving internal state is not that important for current in-tree uses, just 
wanted to make sure the discrepancy didn't go unnoticed :D


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D80296/new/

https://reviews.llvm.org/D80296



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to