llvm-project/clang-tools-extra/clangd
Kirill Bobyrev bab7a30ab6 [clangd] IncludeCleaner: Do not require forward declarations of RecordDecls when definition is available
This makes IncludeCleaner more useful in the presense of a large number of
forward declarations. If the definition is already in the Translation Unit and
visible to the Main File, forward declarations have no effect.

The original patch D112707 was split in two: D114864 and this one.

Reviewed By: kadircet

Differential Revision: https://reviews.llvm.org/D114949
2021-12-03 09:36:50 +01:00
..
benchmarks [clangd] Cleanup FuzzyFindRequest serialization and dex benchmark 2021-07-21 14:51:16 +02:00
fuzzer [clangd] CMake: express -Iclangd/ at top level and inherit 2021-07-02 09:52:36 +02:00
include-mapping [clangd] Make std symbol generation script python3 friendly 2021-11-30 10:15:36 +01:00
index [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
indexer [clangd] Unify compiler invocation creation 2021-07-30 15:22:51 +02:00
quality Make clangd CompletionModel not depend on directory layout. 2021-05-05 19:25:34 +01:00
refactor [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
support [clangd] Attempt to fix buildbots 2021-10-25 20:16:59 -07:00
test [clangd] Add integration test for crash handling 2021-10-27 11:52:31 +02:00
tool [clangd] Fix function-arg-placeholder suppression with macros. 2021-11-13 20:50:51 +01:00
unittests [clangd] IncludeCleaner: Do not require forward declarations of RecordDecls when definition is available 2021-12-03 09:36:50 +01:00
xpc [NFC][clangd] fix llvm-namespace-comment finding 2021-11-16 15:10:32 +00:00
AST.cpp [clangd] Guard against null Attrs in the AST 2021-08-13 10:38:52 +02:00
AST.h [clangd] Add basic support for attributes (selection, hover) 2021-08-06 22:49:14 +02:00
ASTSignals.cpp [clangd] Factor out the heuristic resolver code into its own class 2021-02-16 04:10:52 -05:00
ASTSignals.h [clangd] Trivial: Documentation fix in ASTSignals. 2021-01-14 18:38:42 +01:00
CMakeLists.txt [clangd] IncludeCleaner as a library: Find all references to symbols in the file 2021-08-18 10:08:35 +02:00
CSymbolMap.inc
ClangdLSPServer.cpp [clangd] Avoid possible crash: apply configuration after binding methods 2021-11-20 01:13:38 +01:00
ClangdLSPServer.h [clangd] Log feature configuration (linux+asan+grpc) of the clangd build 2021-06-30 17:49:29 +02:00
ClangdServer.cpp [clangd] Add a flag to disable formatting of tweak edits 2021-06-28 20:52:47 +02:00
ClangdServer.h [clangd] Allow AST request without range 2021-04-23 21:35:42 +02:00
CodeComplete.cpp [clangd] Record information about non self-contained headers in IncludeStructure 2021-11-26 14:12:54 +01:00
CodeComplete.h Revert "Revert "[clangd] Use ML Code completion ranking as default."" 2021-03-02 18:03:52 +01:00
CodeCompletionStrings.cpp [clangd][ObjC] Fix issue completing a method decl by name 2021-06-01 13:35:05 -04:00
CodeCompletionStrings.h
CollectMacros.cpp [clangd] Support `#pragma mark` in the outline 2021-09-23 17:13:30 -04:00
CollectMacros.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
CompileCommands.cpp [clangd] Bail-out when an empty compile flag is encountered 2021-09-20 16:51:56 +02:00
CompileCommands.h [clangd] Unify compiler invocation creation 2021-07-30 15:22:51 +02:00
Compiler.cpp [clangd] Add integration test for crash handling 2021-10-27 11:52:31 +02:00
Compiler.h [clangd] Add integration test for crash handling 2021-10-27 11:52:31 +02:00
Config.cpp [clangd] config() -> Config::current to avoid confict with NS 2020-06-29 23:05:19 +02:00
Config.h [clangd] Add a way to enable IncludeCleaner through config 2021-10-26 12:53:05 +02:00
ConfigCompile.cpp [clangd] Add a way to enable IncludeCleaner through config 2021-10-26 12:53:05 +02:00
ConfigFragment.h [clangd] Add a way to enable IncludeCleaner through config 2021-10-26 12:53:05 +02:00
ConfigProvider.cpp [clangd] Only allow remote index to be enabled from user config. 2021-04-15 14:51:23 +02:00
ConfigProvider.h [clangd] Only allow remote index to be enabled from user config. 2021-04-15 14:51:23 +02:00
ConfigYAML.cpp [clangd] Add a way to enable IncludeCleaner through config 2021-10-26 12:53:05 +02:00
Diagnostics.cpp [clangd] Add a way to enable IncludeCleaner through config 2021-10-26 12:53:05 +02:00
Diagnostics.h [clangd] Add a way to enable IncludeCleaner through config 2021-10-26 12:53:05 +02:00
DraftStore.cpp [clangd][NFC] Silence some buildbot warnings after 0250b053 2021-03-09 14:55:55 +00:00
DraftStore.h [clangd][NFC] Silence some buildbot warnings after 0250b053 2021-03-09 14:55:55 +00:00
DumpAST.cpp Fully qualify template template parameters when printing 2021-09-02 15:04:34 -07:00
DumpAST.h [clangd] Allow AST request without range 2021-04-23 21:35:42 +02:00
ExpectedTypes.cpp
ExpectedTypes.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
FS.cpp
FS.h [clangd] Move non-clang base pieces into separate support/ lib. NFCI 2020-04-29 15:57:12 +02:00
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 [clangd] Rename Module -> FeatureModule to avoid confusion. NFC 2021-03-05 10:04:00 +01:00
FeatureModule.h [clangd] Introduce ASTHooks to FeatureModules 2021-04-13 17:45:09 +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] NFC: Use SmallVector<T> where possible 2020-12-10 13:36:49 +01:00
FileDistance.h
FindSymbols.cpp [clangd] Support `#pragma mark` in the outline 2021-09-23 17:13:30 -04:00
FindSymbols.h [clang-tools-extra] NFC: Fix trivial typo in documents and comments 2020-04-05 15:28:40 +09:00
FindTarget.cpp [clang] retain type sugar in auto / template argument deduction 2021-11-15 23:07:45 +01:00
FindTarget.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
Format.cpp [clangd] Replace usages of dummy with more descriptive words 2021-03-22 12:49:24 +01:00
Format.h
FuzzyMatch.cpp [NFC][clangd] cleanup llvm-else-after-return findings 2021-11-17 14:37:03 +00:00
FuzzyMatch.h
GlobalCompilationDatabase.cpp Revert "Revert "[clangd] Adjust compile flags to contain only the requested file as input"" 2021-07-27 14:49:53 +02:00
GlobalCompilationDatabase.h [clangd] Allow configuration database to be specified in config. 2021-01-25 23:15:48 +01:00
HeaderSourceSwitch.cpp [clang-tools-extra] Rename StringRef _lower() method calls to _insensitive() 2021-06-25 00:22:01 +03:00
HeaderSourceSwitch.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
Headers.cpp [clangd] Record information about non self-contained headers in IncludeStructure 2021-11-26 14:12:54 +01:00
Headers.h [clangd] Record information about non self-contained headers in IncludeStructure 2021-11-26 14:12:54 +01:00
HeuristicResolver.cpp Ensure newlines at the end of files (NFC) 2021-10-23 08:45:29 -07:00
HeuristicResolver.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
Hover.cpp [clangd] Show parameters for construct. 2021-12-03 13:20:41 +08:00
Hover.h clangd: Provide hover info for include directives 2021-08-13 00:07:23 +02:00
IncludeCleaner.cpp [clangd] IncludeCleaner: Do not require forward declarations of RecordDecls when definition is available 2021-12-03 09:36:50 +01:00
IncludeCleaner.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
IncludeFixer.cpp [clangd] Deduplicate scopes in IncludeFixer queries 2021-02-05 14:02:50 +01:00
IncludeFixer.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
InlayHints.cpp [clang] retain type sugar in auto / template argument deduction 2021-11-15 23:07:45 +01:00
InlayHints.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
JSONTransport.cpp [NFC][clangd] cleanup llvm-else-after-return findings 2021-11-17 14:37:03 +00:00
LSPBinder.h [clangd] Bind outgoing calls through LSPBinder too. NFC 2021-02-17 10:56:06 +01:00
ParsedAST.cpp [clangd] Record information about non self-contained headers in IncludeStructure 2021-11-26 14:12:54 +01:00
ParsedAST.h [clangd] Support `#pragma mark` in the outline 2021-09-23 17:13:30 -04:00
PathMapping.cpp [NFC][clangd] cleanup llvm-else-after-return findings 2021-11-17 14:37:03 +00:00
PathMapping.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
Preamble.cpp [clangd] Record information about non self-contained headers in IncludeStructure 2021-11-26 14:12:54 +01:00
Preamble.h [clangd] Support `#pragma mark` in the outline 2021-09-23 17:13:30 -04:00
Protocol.cpp [NFC][clangd] cleanup llvm-else-after-return findings 2021-11-17 14:37:03 +00:00
Protocol.h [NFC] disabling clang-tidy check readability-identifier-naming in Protocol.h 2021-11-16 15:25:43 +00:00
Quality.cpp [clang-tools-extra] Rename StringRef _lower() method calls to _insensitive() 2021-06-25 00:22:01 +03:00
Quality.h Revert "[clangd] Extract symbol-scope logic out of Quality, add tests. NFC" 2021-01-29 14:59:16 +01:00
QueryDriverDatabase.cpp PR51018: Remove explicit conversions from SmallString to StringRef to future-proof against C++23 2021-07-08 13:37:57 -07: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] Improve serialization error messages. NFC 2020-07-08 17:31:40 +02:00
Selection.cpp [NFC][clangd] fix clang-tidy finding on isa_and_nonnull 2021-11-18 09:16:54 +00:00
Selection.h [clangd] SelectionTree should prefer lexical declcontext 2021-10-28 17:39:35 +02:00
SemanticHighlighting.cpp [clangd] Ensure lambda init-capture gets semantic token 2021-09-23 03:52:57 -04:00
SemanticHighlighting.h Add semantic token modifier for non-const reference parameter 2021-09-13 00:51:09 -04:00
SemanticSelection.cpp [clang] Simplify buildSyntaxTree API 2020-11-09 22:49:54 +01:00
SemanticSelection.h [clangd] Implement textDocument/foldingRange 2020-07-14 09:28:42 +02:00
SourceCode.cpp [clangd] Record information about non self-contained headers in IncludeStructure 2021-11-26 14:12:54 +01:00
SourceCode.h [clangd] Record information about non self-contained headers in IncludeStructure 2021-11-26 14:12:54 +01:00
StdSymbolMap.inc
TUScheduler.cpp [clangd] Dont include file version in task name 2021-11-17 19:10:09 +01:00
TUScheduler.h [clangd] TUScheduler uses last active file for file-less queries 2021-06-02 22:50:24 +02:00
TidyProvider.cpp [clangd] Disable hicpp-invalid-access-moved inside clangd 2021-11-25 10:27:45 +01:00
TidyProvider.h [clangd] Validate clang-tidy Checks in clangd config. 2020-12-15 21:10:57 +00:00
Transport.h [clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++ 2021-08-06 18:56:41 +02:00
URI.cpp [clangd] Remove dead variable. NFC 2020-09-30 23:19:15 +02:00
URI.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
XRefs.cpp [clangd] Add ObjC method support to prepareCallHierarchy 2021-11-25 11:23:24 +01:00
XRefs.h [clangd] Add SymbolID to LocatedSymbol. 2021-04-28 15:05:53 +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.