llvm/clang-tools-extra/clangd
Kadir Cetinkaya 4839929bed
[clangd] Make forwarding parameter detection logic resilient
This could crash when our heuristic picks the wrong function. Make sure
there is enough parameters in the candidate to prevent those crashes.

Also special case copy/move constructors to make the heuristic work in
presence of those.

Fixes https://github.com/llvm/llvm-project/issues/56620

Differential Revision: https://reviews.llvm.org/D130260
2022-07-22 14:37:13 +02:00
..
benchmarks
fuzzer Reland "[FuzzMutate] Split out FuzzerCLI library that doesn't depend on IR." 2022-05-07 13:49:54 +02:00
index Use any_of (NFC) 2022-07-22 01:05:17 -07:00
indexer
quality
refactor [Clang] Rename StringLiteral::isAscii() => isOrdinary() [NFC] 2022-06-29 18:28:51 +02:00
support [clangd] Speed up a slow sleeping testcase. 2022-05-06 20:12:17 +02:00
test [clangd] Remove allCommitCharacters 2022-07-12 21:42:38 +02:00
tool [clangd] Mention whether compile flags were inferred in check mode 2022-07-21 17:33:44 +02:00
unittests [clangd] Make forwarding parameter detection logic resilient 2022-07-22 14:37:13 +02:00
xpc Use value_or instead of getValueOr. NFC 2022-06-29 21:55:02 -07:00
AST.cpp [clangd] Make forwarding parameter detection logic resilient 2022-07-22 14:37:13 +02:00
AST.h [clangd] add inlay hints for std::forward-ed parameter packs 2022-07-06 22:23:18 +02:00
ASTSignals.cpp [clangd] Record latency for ASTSignal derivation 2022-04-28 14:34:39 +02:00
ASTSignals.h
ClangdLSPServer.cpp Use value instead of getValue (NFC) 2022-07-15 20:03:13 -07:00
ClangdLSPServer.h [clangd] Support for standard inlayHint protocol 2022-05-10 18:59:15 +02:00
ClangdServer.cpp Use value instead of getValue (NFC) 2022-07-15 20:03:13 -07:00
ClangdServer.h [clangd] Support external throttler for preamble builds 2022-07-06 14:58:24 +02:00
CMakeLists.txt Use pseudo parser for folding ranges 2022-07-18 11:35:34 +02:00
CodeComplete.cpp Argument name support for function pointer signature hints 2022-07-19 20:02:26 -04:00
CodeComplete.h [clangd][ObjC] Filter ObjC method completions on the remaining selector 2022-05-20 11:49:16 -04:00
CodeCompletionStrings.cpp
CodeCompletionStrings.h
CollectMacros.cpp
CollectMacros.h
CompileCommands.cpp [HLSL] add -I option for dxc mode. 2022-07-20 11:03:22 -07:00
CompileCommands.h
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 Reland(3) "[clangd] Indexing of standard library" 2022-05-19 08:13:23 +02:00
ConfigProvider.cpp
ConfigProvider.h
ConfigYAML.cpp Don't use Optional::getValue (NFC) 2022-06-20 23:35:53 -07:00
Diagnostics.cpp Don't use Optional::getValue (NFC) 2022-06-20 23:35:53 -07:00
Diagnostics.h Avoid uninitialized Diag.ID (which we pass but never read) 2022-05-20 20:29:47 +02:00
DraftStore.cpp
DraftStore.h
DumpAST.cpp Reland "[AST] Add a new TemplateKind for template decls found via a using decl."" 2022-04-14 11:04:55 +02:00
DumpAST.h
ExpectedTypes.cpp
ExpectedTypes.h
Feature.cpp
Feature.h
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
FileDistance.cpp
FileDistance.h
FindSymbols.cpp
FindSymbols.h
FindTarget.cpp Revert "[clang] Implement ElaboratedType sugaring for types written bare" 2022-07-14 21:17:48 -07:00
FindTarget.h
Format.cpp [clangd] Handle tabs in getIncrementalChangesAfterNewline() 2022-03-29 01:43:09 -04:00
Format.h
FS.cpp
FS.h
FuzzyMatch.cpp
FuzzyMatch.h
GlobalCompilationDatabase.cpp Don't use Optional::getValue (NFC) 2022-06-20 23:35:53 -07:00
GlobalCompilationDatabase.h
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
HeaderSourceSwitch.cpp [clangd] Test against path insensitivity 2022-03-21 17:27:05 +01:00
HeaderSourceSwitch.h
HeuristicResolver.cpp
HeuristicResolver.h Go-to-type on smart_ptr<Foo> now also shows Foo 2022-07-11 12:13:47 +02:00
Hover.cpp [clangd][NFC] Use the existing ASTContext from scope 2022-06-15 16:10:49 +02:00
Hover.h
IncludeCleaner.cpp [clangd] NFC: Clarify the Include Cleaner warning 2022-05-19 11:59:00 +02:00
IncludeCleaner.h Reland "[clangd] IncludeCleaner: Add support for IWYU pragma private" 2022-04-05 16:57:39 +02:00
IncludeFixer.cpp Don't use Optional::hasValue (NFC) 2022-06-20 11:33:56 -07:00
IncludeFixer.h
InlayHints.cpp [clangd] add inlay hints for std::forward-ed parameter packs 2022-07-06 22:23:18 +02:00
InlayHints.h
JSONTransport.cpp [clang-tools-extra] Use value_or instead of getValueOr (NFC) 2022-06-19 00:13:38 -07:00
LSPBinder.h
ParsedAST.cpp [clang-tidy][NFC] Add createChecks method that also checks for LangaugeOptions 2022-05-06 17:30:34 +01:00
ParsedAST.h [clangd] Code action to declare missing move/copy constructor/assignment 2022-04-06 16:14:42 +02:00
PathMapping.cpp
PathMapping.h
Preamble.cpp [clangd] parse all make_unique-like functions in preamble 2022-05-16 11:17:25 +02:00
Preamble.h [clangd] Export preamble AST and serialized size as metrics 2022-04-13 14:43:06 +02:00
Protocol.cpp [clangd] Use empty string to represent None semantics in FoldingRange::kind 2022-07-18 15:01:48 +02:00
Protocol.h [clangd] Use empty string to represent None semantics in FoldingRange::kind 2022-07-18 15:01:48 +02:00
Quality.cpp Don't use Optional::hasValue (NFC) 2022-06-20 20:17:57 -07:00
Quality.h
QueryDriverDatabase.cpp [clangd] Handle '--' in QueryDriverDatabase 2022-05-24 13:10:41 -04:00
README.md
RIFF.cpp
RIFF.h
Selection.cpp [AST] Improve traversal of concepts and concept requirements 2022-04-28 09:33:26 +00:00
Selection.h
SemanticHighlighting.cpp [clangd] Support "usedAsMutableReference" in member initializations 2022-07-08 23:16:20 -04:00
SemanticHighlighting.h [clangd] Support multiline semantic tokens 2022-06-29 13:49:03 +02:00
SemanticSelection.cpp Use pseudo parser for folding ranges 2022-07-18 11:35:34 +02:00
SemanticSelection.h Use pseudo parser for folding ranges 2022-07-18 11:35:34 +02:00
SourceCode.cpp
SourceCode.h
TidyProvider.cpp [clang-tools-extra] Use value_or instead of getValueOr (NFC) 2022-06-19 00:13:38 -07:00
TidyProvider.h
Transport.h
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
URI.cpp
URI.h
XRefs.cpp Go-to-type on smart_ptr<Foo> now also shows Foo 2022-07-11 12:13:47 +02:00
XRefs.h

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.