llvm-project/clang-tools-extra/clangd
Haojian Wu 6ba1b9075d Reland "[AST] Add a new TemplateKind for template decls found via a using decl.""
This is the template version of https://reviews.llvm.org/D114251.

This patch introduces a new template name kind (UsingTemplateName). The
UsingTemplateName stores the found using-shadow decl (and underlying
template can be retrieved from the using-shadow decl). With the new
template name, we can be able to find the using decl that a template
typeloc (e.g. TemplateSpecializationTypeLoc) found its underlying template,
which is useful for tooling use cases (include cleaner etc).

This patch merely focuses on adding the node to the AST.

Next steps:
- support using-decl in qualified template name;
- update the clangd and other tools to use this new node;
- add ast matchers for matching different kinds of template names;

Differential Revision: https://reviews.llvm.org/D123127
2022-04-14 11:04:55 +02:00
..
benchmarks [clangd] Cleanup of readability-identifier-naming 2022-02-01 13:31:52 +00:00
fuzzer [clangd] Cleanup of readability-identifier-naming 2022-02-01 13:31:52 +00:00
index [clang][lex] NFCI: Use FileEntryRef in PPCallbacks::InclusionDirective() 2022-04-14 10:46:12 +02: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 Fix MSVC "not all control paths return a value" warning 2022-04-07 14:01:15 +01:00
support [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
test [cmake] Provide CURRENT_TOOLS_DIR centrally, replacing CLANG_TOOLS_DIR 2022-03-25 20:22:01 +01:00
tool [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
unittests [clang][lex] NFCI: Use FileEntryRef in PPCallbacks::InclusionDirective() 2022-04-14 10:46:12 +02:00
xpc [NFC][clangd] fix llvm-namespace-comment finding 2021-11-16 15:10:32 +00:00
AST.cpp [clangd] Add code action to generate a constructor for a C++ class 2022-04-06 16:23:50 +02:00
AST.h [clangd] Add code action to generate a constructor for a C++ class 2022-04-06 16:23:50 +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] Helper for determining member insertion point. 2022-01-03 17:59:45 +01:00
ClangdLSPServer.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
ClangdLSPServer.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
ClangdServer.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
ClangdServer.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
CodeComplete.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
CodeComplete.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
CodeCompletionStrings.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01: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] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
CompileCommands.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Compiler.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Compiler.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Config.cpp [clangd] config() -> Config::current to avoid confict with NS 2020-06-29 23:05:19 +02:00
Config.h [clangd] NFC: Fix doc typos 2022-04-07 12:56:56 +02:00
ConfigCompile.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
ConfigFragment.h [clangd] NFC: Fix doc typos 2022-04-07 12:56:56 +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 [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Diagnostics.cpp [clangd] Remove trivial uses of FileEntry::getName 2022-04-04 20:59:51 +02:00
Diagnostics.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01: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 Reland "[AST] Add a new TemplateKind for template decls found via a using decl."" 2022-04-14 11:04:55 +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 [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] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01: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 [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01: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 [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
GlobalCompilationDatabase.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
HeaderSourceSwitch.cpp [clangd] Test against path insensitivity 2022-03-21 17:27:05 +01:00
HeaderSourceSwitch.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
Headers.cpp [clang][lex] NFCI: Use FileEntryRef in PPCallbacks::InclusionDirective() 2022-04-14 10:46:12 +02:00
Headers.h [clang][lex] NFCI: Use FileEntryRef in PPCallbacks::InclusionDirective() 2022-04-14 10:46:12 +02:00
HeuristicResolver.cpp [clangd] Use castAs<> instead of getAs<> to avoid dereference of nullptr 2022-01-23 13:24:36 +00:00
HeuristicResolver.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Hover.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Hover.h [clangd] getHover - pass FormatStyle argument by const reference 2022-02-18 17:27:45 +00:00
IncludeCleaner.cpp Reland "[clangd] IncludeCleaner: Add support for IWYU pragma private" 2022-04-05 16:57:39 +02:00
IncludeCleaner.h Reland "[clangd] IncludeCleaner: Add support for IWYU pragma private" 2022-04-05 16:57:39 +02:00
IncludeFixer.cpp [clangd] Support include-fixer inside macro arguments. 2022-03-23 17:12:33 +01:00
IncludeFixer.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
InlayHints.cpp [clangd] Add inlay hints for auto-typed parameters with one instantiation. 2022-03-23 17:26:25 +01:00
InlayHints.h [clangd] Polish clangd/inlayHints and expose them by default. 2022-01-07 15:12:43 +01:00
JSONTransport.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
LSPBinder.h [clangd] Bind outgoing calls through LSPBinder too. NFC 2021-02-17 10:56:06 +01:00
ParsedAST.cpp [clang][lex] NFCI: Use FileEntryRef in PPCallbacks::InclusionDirective() 2022-04-14 10:46:12 +02:00
ParsedAST.h [clangd] Code action to declare missing move/copy constructor/assignment 2022-04-06 16:14: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] Export preamble AST and serialized size as metrics 2022-04-13 14:43:06 +02:00
Preamble.h [clangd] Export preamble AST and serialized size as metrics 2022-04-13 14:43:06 +02:00
Protocol.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Protocol.h [clangd] Add designator inlay hints for initializer lists. 2022-01-26 00:35:29 +01:00
Quality.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Quality.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
QueryDriverDatabase.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01: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 [clangd] Use `ObjCProtocolLoc` for generalized ObjC protocol support 2022-02-18 15:24:00 -05:00
Selection.h [clangd] SelectionTree should prefer lexical declcontext 2021-10-28 17:39:35 +02:00
SemanticHighlighting.cpp Reland "[AST] Add a new TemplateKind for template decls found via a using decl."" 2022-04-14 11:04:55 +02:00
SemanticHighlighting.h Add semantic token modifier for non-const reference parameter 2021-09-13 00:51:09 -04:00
SemanticSelection.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
SemanticSelection.h [clangd] Implement textDocument/foldingRange 2020-07-14 09:28:42 +02:00
SourceCode.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
SourceCode.h [clangd] Don't index __reserved_names in headers. 2022-01-05 16:34:04 +01:00
TUScheduler.cpp [clangd] Export preamble AST and serialized size as metrics 2022-04-13 14:43:06 +02:00
TUScheduler.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
TidyProvider.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01: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 [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
URI.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
XRefs.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
XRefs.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01: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.