llvm-project/clang-tools-extra/clangd
Kadir Cetinkaya 83411bf06f
[clangd] Support for standard type hierarchy
This is mostly a mechanical change to adapt standard type hierarchy
support proposed in LSP 3.17 on top of clangd's existing extension support.

This does mainly two things:
- Incorporate symbolids for all the parents inside resolution parameters, so
  that they can be retrieved from index later on. This is a new code path, as
  extension always resolved them eagerly.
- Propogate parent information when resolving children, so that at least one
  branch of parents is always preserved. This is to address a shortcoming in the
  extension.

This doesn't drop support for the extension, but it's deprecated from now on and
will be deleted in upcoming releases. Currently we use the same struct
internally but don't serialize extra fields.

Fixes https://github.com/clangd/clangd/issues/826.

Differential Revision: https://reviews.llvm.org/D131385
2022-08-17 09:29:15 +02:00
..
benchmarks [clang-tools-extra] Fixed a number of typos 2022-08-01 15:32:25 +02:00
fuzzer Reland "[FuzzMutate] Split out FuzzerCLI library that doesn't depend on IR." 2022-05-07 13:49:54 +02:00
index [clangd] Use llvm::any_of (NFC) 2022-08-14 16:25:38 -07:00
indexer [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
quality Make clangd CompletionModel not depend on directory layout. 2021-05-05 19:25:34 +01:00
refactor Use llvm::none_of (NFC) 2022-08-14 16:25:39 -07:00
support [clang][clang-tools-extra] LLVM_NODISCARD => [[nodiscard]]. NFC 2022-08-09 07:11:18 +00:00
test [clangd] Support for standard type hierarchy 2022-08-17 09:29:15 +02:00
tool [clangd] Mention whether compile flags were inferred in check mode 2022-07-21 17:33:44 +02:00
unittests [clangd] Support for standard type hierarchy 2022-08-17 09:29:15 +02:00
xpc Use value_or instead of getValueOr. NFC 2022-06-29 21:55:02 -07:00
AST.cpp [clangd] Add decl/def support to SymbolDetails 2022-08-01 14:42:19 -04:00
AST.h AST.h - fix Wdocumentation warnings. NFC. 2022-08-01 15:38:06 +01:00
ASTSignals.cpp [clangd] Record latency for ASTSignal derivation 2022-04-28 14:34:39 +02:00
ASTSignals.h [clangd] Trivial: Documentation fix in ASTSignals. 2021-01-14 18:38:42 +01:00
CMakeLists.txt Use pseudo parser for folding ranges 2022-07-18 11:35:34 +02:00
ClangdLSPServer.cpp [clangd] Support for standard type hierarchy 2022-08-17 09:29:15 +02:00
ClangdLSPServer.h [clangd] Support for standard type hierarchy 2022-08-17 09:29:15 +02:00
ClangdServer.cpp [clangd] Support for standard type hierarchy 2022-08-17 09:29:15 +02:00
ClangdServer.h [clangd] Support for standard type hierarchy 2022-08-17 09:29:15 +02:00
CodeComplete.cpp LLVM_FALLTHROUGH => [[fallthrough]]. NFC 2022-08-09 04:06:52 +00:00
CodeComplete.h [clang-tools-extra] Fixed a number of typos 2022-08-01 15:32:25 +02:00
CodeCompletionStrings.cpp [clangd] Do not try to use $0 as a placeholder in completion snippets 2022-07-24 03:01:18 -04:00
CodeCompletionStrings.h
CollectMacros.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
CollectMacros.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
CompileCommands.cpp [clangd] Drop unnecessary const from return types (NFC) 2022-08-13 12:55:44 -07:00
CompileCommands.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Compiler.cpp [clangd] Skip extra round-trip in parsing args in debug builds. NFC 2022-05-09 14:45:35 +02:00
Compiler.h [clangd] parse all make_unique-like functions in preamble 2022-05-16 11:17:25 +02:00
Config.cpp
Config.h [clangd] Enable designator inlay hints by default. 2022-07-13 16:31:45 +02:00
ConfigCompile.cpp [clang, clang-tools-extra] Use has_value instead of hasValue (NFC) 2022-07-12 22:47:41 -07:00
ConfigFragment.h [clang-tools-extra] Fixed a number of typos 2022-08-01 15:32:25 +02:00
ConfigProvider.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
ConfigProvider.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
ConfigYAML.cpp Don't use Optional::getValue (NFC) 2022-06-20 23:35:53 -07:00
Diagnostics.cpp [clangd] Change the url for clang-tidy check documentation 2022-08-05 08:42:52 +01:00
Diagnostics.h Avoid uninitialized Diag.ID (which we pass but never read) 2022-05-20 20:29:47 +02:00
DraftStore.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
DraftStore.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
DumpAST.cpp [clang-tools-extra] Fixed a number of typos 2022-08-01 15:32:25 +02:00
DumpAST.h [clang] Forward-declare DynTypedNode (NFC) 2022-01-23 13:28:04 -08:00
ExpectedTypes.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
ExpectedTypes.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
FS.cpp
FS.h
Feature.cpp [clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++ 2021-08-06 18:56:41 +02:00
Feature.h [clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++ 2021-08-06 18:56:41 +02:00
FeatureModule.cpp Don't use Optional::hasValue (NFC) 2022-06-26 19:54:41 -07:00
FeatureModule.h [clangd] Add beforeExecute() callback to FeatureModules. 2022-04-21 18:03:39 +02:00
Features.inc.in [clangd] Add CMake option to (not) link in clang-tidy checks 2021-07-14 10:04:21 +02:00
FileDistance.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
FileDistance.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
FindSymbols.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
FindSymbols.h
FindTarget.cpp [clang] Implement ElaboratedType sugaring for types written bare 2022-07-27 11:10:54 +02:00
FindTarget.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Format.cpp [clangd] Handle tabs in getIncrementalChangesAfterNewline() 2022-03-29 01:43:09 -04:00
Format.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
FuzzyMatch.cpp [NFC][clangd] cleanup llvm-else-after-return findings 2021-11-17 14:37:03 +00:00
FuzzyMatch.h
GlobalCompilationDatabase.cpp Don't use Optional::getValue (NFC) 2022-06-20 23:35:53 -07:00
GlobalCompilationDatabase.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
HeaderSourceSwitch.cpp Use any_of (NFC) 2022-07-30 10:35:56 -07:00
HeaderSourceSwitch.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
Headers.cpp [clangd] NFC: Rename field to be compatible with the function name 2022-05-16 10:18:08 +02:00
Headers.h [clangd] NFC: Rename field to be compatible with the function name 2022-05-16 10:18:08 +02:00
HeuristicResolver.cpp [clang-tools-extra] Fixed a number of typos 2022-08-01 15:32:25 +02:00
HeuristicResolver.h Go-to-type on smart_ptr<Foo> now also shows Foo 2022-07-11 12:13:47 +02:00
Hover.cpp [clangd][NFCI] Store TUPath inside ParsedAST 2022-07-29 13:23:42 +02:00
Hover.h [clangd] getHover - pass FormatStyle argument by const reference 2022-02-18 17:27:45 +00:00
IncludeCleaner.cpp [clang-tools-extra] Fixed a number of typos 2022-08-01 15:32:25 +02:00
IncludeCleaner.h Reland "[clangd] IncludeCleaner: Add support for IWYU pragma private" 2022-04-05 16:57:39 +02:00
IncludeFixer.cpp Use llvm::sort instead of std::sort where possible 2022-07-23 15:19:05 +02:00
IncludeFixer.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
InlayHints.cpp [clangd] Fix an inlay-hint crash on a broken designator. 2022-08-12 14:37:46 +02:00
InlayHints.h [clangd] Polish clangd/inlayHints and expose them by default. 2022-01-07 15:12:43 +01:00
JSONTransport.cpp [clang-tools-extra] Use value_or instead of getValueOr (NFC) 2022-06-19 00:13:38 -07:00
LSPBinder.h [clangd] Bind outgoing calls through LSPBinder too. NFC 2021-02-17 10:56:06 +01:00
ParsedAST.cpp [clangd][NFCI] Store TUPath inside ParsedAST 2022-07-29 13:23:42 +02:00
ParsedAST.h [clangd][NFCI] Store TUPath inside ParsedAST 2022-07-29 13:23:42 +02:00
PathMapping.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
PathMapping.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
Preamble.cpp [clangd] Upgrade vlog() to log() for preamble build stats 2022-08-01 15:08:21 +02:00
Preamble.h [clangd] Export preamble AST and serialized size as metrics 2022-04-13 14:43:06 +02:00
Protocol.cpp [clangd] Support for standard type hierarchy 2022-08-17 09:29:15 +02:00
Protocol.h [clangd] Support for standard type hierarchy 2022-08-17 09:29:15 +02:00
Quality.cpp [clang-tools-extra] Fixed a number of typos 2022-08-01 15:32:25 +02:00
Quality.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
QueryDriverDatabase.cpp [clangd] Handle '--' in QueryDriverDatabase 2022-05-24 13:10:41 -04:00
README.md [Branch-Rename] Fix some links 2021-02-01 16:43:21 +05:30
RIFF.cpp [clangd] Add error() function for creating formatv-style llvm::Errors. NFC 2020-09-14 10:43:42 +02:00
RIFF.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Selection.cpp [AST] Improve traversal of concepts and concept requirements 2022-04-28 09:33:26 +00:00
Selection.h [clangd] SelectionTree should prefer lexical declcontext 2021-10-28 17:39:35 +02:00
SemanticHighlighting.cpp [clang-tools-extra] Fixed a number of typos 2022-08-01 15:32:25 +02:00
SemanticHighlighting.h [clangd] Support multiline semantic tokens 2022-06-29 13:49:03 +02:00
SemanticSelection.cpp Add foldings for multi-line comment. 2022-08-03 08:19:12 +02:00
SemanticSelection.h Use pseudo parser for folding ranges 2022-07-18 11:35:34 +02:00
SourceCode.cpp LLVM_FALLTHROUGH => [[fallthrough]]. NFC 2022-08-09 04:06:52 +00:00
SourceCode.h [clangd] Don't index __reserved_names in headers. 2022-01-05 16:34:04 +01:00
TUScheduler.cpp [clangd] Fix flaky throttler test 2022-07-07 18:09:54 +02:00
TUScheduler.h [clangd] Fix missing key function in PreambleThrottler 2022-07-06 18:27:09 +02:00
TidyProvider.cpp [clang-tools-extra] Use value_or instead of getValueOr (NFC) 2022-06-19 00:13:38 -07:00
TidyProvider.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Transport.h [clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++ 2021-08-06 18:56:41 +02:00
URI.cpp Use llvm::all_of (NFC) 2022-08-14 16:25:36 -07:00
URI.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
XRefs.cpp [clangd] Support for standard type hierarchy 2022-08-17 09:29:15 +02:00
XRefs.h [clangd] Support for standard type hierarchy 2022-08-17 09:29:15 +02:00

README.md

clangd

clangd is a language server, and provides C++ IDE features to editors. This is not its documentation.

Communication channels

If you have any questions or feedback, you can reach community and developers through one of these channels:

Building and testing clangd

For a minimal setup on building clangd:

  • Clone the LLVM repo to $LLVM_ROOT.

  • Create a build directory, for example at $LLVM_ROOT/build.

  • Inside the build directory run: cmake $LLVM_ROOT/llvm/ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra".

    • We suggest building in Release mode as building DEBUG binaries requires considerably more resources. You can check Building LLVM with CMake documentation for more details about cmake flags.
    • In addition to that using Ninja as a generator rather than default make is preferred. To do that consider passing -G Ninja to cmake invocation.
    • Finally, you can turn on assertions via -DLLVM_ENABLE_ASSERTS=On.
  • Afterwards you can build clangd with cmake --build $LLVM_ROOT/build --target clangd, similarly run tests by changing target to check-clangd.