kadircet added a comment.

In D94293#2486468 <https://reviews.llvm.org/D94293#2486468>, @njames93 wrote:

> How does this approach work with differing language standards. For example 
> with an old implementation designed for c++14, `string_view` header won't 
> exist. If the implementation is designed to work with c++17, including that 
> header in c++14 mode will probably be ifdef... Error.

As I mentioned in my comments for putting this behind a flag, in such scenarios 
we should just hit some "missing includes" while indexing the phantom file, so 
all should be fine.



================
Comment at: clang-tools-extra/clangd/tool/ClangdMain.cpp:527
 
+opt<bool> IndexSTL{
+    "index-stl",
----------------
kuhnel wrote:
> kadircet wrote:
> > do we really need to hide this behind a flag ? it sounds like a quite 
> > useful feature to me with minimal risk of regressions and unlikely to make 
> > anyone upset. in the end we are not doing anything heuristically and just 
> > throwing clang on some STL headers, that'll probably be included within the 
> > TUs eventually.
> > 
> > there's always the risk of crashing while parsing some STL headers, but i 
> > don't think it is any different than user just including the header 
> > manually.
> > 
> > the biggest problem i can see is people using custom STL headers, but 
> > hopefully compile flags interpolation logic should be able to infer the 
> > relevant location for those. and in the cases it fails we either index the 
> > default STL and suggest people some symbols their implementation might 
> > lack, or fail to find STL at all and print some logs for the missing 
> > includes.
> Back when I was developing embedded software, we couldn't use the STL for 
> various reasons (object size, no exceptions, no dynamic memory, ...) and had 
> our own, proprietary base library. In such a scenario it would be annoying if 
> clangd would be proposing things I could not use in the project. 
> 
> So we should have a way for users to disable this. I'm fine if we switch it 
> on by default and offer a `--disable-stl-index` flag instead.
I see. It still feels like those developers would be less inclined to accept 
autocompletion of `std::vector` compared to `xyz::vector` and also our ranking 
should be doing a good job of promoting `xyz::vector` due to its high number of 
usage, compared to `std::vector`.

I am mostly unhappy about the flag as it needs propagation to many components. 
It might be better to have it as a config option, which requires a lot less 
plumbing (at least for bg-index), if you think even the down-ranking of `std` 
symbols wouldn't be a good experience.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D94293

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

Reply via email to