[clangd] Allow indexing of __reserved_names outside system headers
authorSam McCall <sam.mccall@gmail.com>
Sat, 15 Jul 2023 20:21:25 +0000 (22:21 +0200)
committerSam McCall <sam.mccall@gmail.com>
Fri, 21 Jul 2023 21:30:31 +0000 (23:30 +0200)
commit290a98c7b00899b6aba0fc892e8f29fecc00a82e
treee6410170d4ea32d4d62376f8a51f6bbd599c2b0e
parent775d6df6a5f2fbe8d4ad6174badc2ef553ada6e3
[clangd] Allow indexing of __reserved_names outside system headers

The special handling for these names was added in
https://github.com/llvm/llvm-project/commit/055d8090d1d5137dab88533995e0c5d9b5390c28
and the motivation was the C++ standard library.

It turns out some projects like using these names anyway, in particular the
linux kernel. D153946 proposed making this a config option, but there are
some implementation issues with the config system.

As an alternative, this patch tweaks the heuristic so we only drop these symbols
in system headers. This does the right thing for linux and the C++ standard
library, at least.

Fixes https://github.com/clangd/clangd/issues/1680
Fixes https://github.com/llvm/llvm-project/issues/63862

Differential Revision: https://reviews.llvm.org/D155381
clang-tools-extra/clangd/index/SymbolCollector.cpp
clang-tools-extra/clangd/index/SymbolCollector.h
clang-tools-extra/clangd/unittests/SymbolCollectorTests.cpp