llvm-project/clang-tools-extra/clangd
Ilya Biryukov 87e0cb4f1a [clangd] Implement semantic highlightings via findExplicitReferences
Summary:
To keep the logic of finding locations of interesting AST nodes in one
place.

The advantage is better coverage of various AST nodes, both now and in
the future: as new nodes get added to `findExplicitReferences`, semantic
highlighting will automatically pick them up.

The drawback of this change is that we have to traverse declarations
inside our file twice in order to highlight dependent names, 'auto'
and 'decltype'. Hopefully, this should not affect the actual latency
too much, most time should be spent in building the AST and not
traversing it.

Reviewers: hokein

Reviewed By: hokein

Subscribers: nridge, merge_guards_bot, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D69673
2019-11-05 19:15:24 +01:00
..
benchmarks Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
clients/clangd-vscode [clangd] update the package-lock.json. 2019-10-04 12:35:16 +00:00
fuzzer [clang-tools-extra] [cmake] Link against libclang-cpp whenever possible 2019-10-04 20:30:02 +00:00
include-mapping [clangd] Add include-mapping for C symbols. 2019-06-21 13:32:18 +00:00
index [clangd] Collect name references in the index. 2019-10-24 10:25:16 +02:00
indexer [clang-tools-extra] [cmake] Link against libclang-cpp whenever possible 2019-10-04 20:30:02 +00:00
refactor [clangd] Add parameter renaming to define-inline code action 2019-10-31 09:23:09 +01:00
test [clangd] Do not highlight keywords in semantic highlighting 2019-10-28 12:03:09 +01:00
tool [clangd] abort if shutdown takes more than a minute. 2019-10-23 17:52:59 +02:00
unittests [clangd] Implement semantic highlightings via findExplicitReferences 2019-11-05 19:15:24 +01:00
xpc Get ClangdXPC.framework building (barely) with CMake's Xcode generator 2019-10-11 01:23:56 +00:00
AST.cpp [clangd] Report declaration references in findExplicitReferences. 2019-10-18 12:07:19 +00:00
AST.h [clangd] Report declaration references in findExplicitReferences. 2019-10-18 12:07:19 +00:00
CMakeLists.txt clang-tidy: Don't repeat list of all checks in three places. 2019-09-27 12:56:14 +00:00
CSymbolMap.inc [clangd] Add include-mapping for C symbols. 2019-06-21 13:32:18 +00:00
Cancellation.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Cancellation.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ClangdLSPServer.cpp [clangd] abort if shutdown takes more than a minute. 2019-10-23 17:52:59 +02:00
ClangdLSPServer.h [clangd] abort if shutdown takes more than a minute. 2019-10-23 17:52:59 +02:00
ClangdServer.cpp [clangd] Reland Store Index in Tweak::Selection 2019-10-28 07:55:58 +01:00
ClangdServer.h [clangd] Use the index-based API to do the header-source switch. 2019-10-01 10:21:15 +00:00
CodeComplete.cpp [clangd] Do not insert parentheses when completing a using declaration 2019-10-28 09:45:10 +01:00
CodeComplete.h [clangd] Split Preamble.h out of ClangdUnit.h. NFC 2019-09-04 07:35:00 +00:00
CodeCompletionStrings.cpp Code completion should not ignore default parameters in functions. 2019-08-07 16:52:21 +00:00
CodeCompletionStrings.h [clangd] Place cursor better after completing patterns 2019-05-28 15:33:37 +00:00
CollectMacros.h [clangd] Collect missing macro references. 2019-10-07 10:10:31 +00:00
Compiler.cpp [clangd] Surface errors from command-line parsing 2019-08-28 09:24:55 +00:00
Compiler.h [clangd] Split Preamble.h out of ClangdUnit.h. NFC 2019-09-04 07:35:00 +00:00
Context.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Context.h [clang-tools-extra] Migrate llvm::make_unique to std::make_unique 2019-08-14 23:52:23 +00:00
Diagnostics.cpp [clangd] Surface errors from command-line parsing 2019-08-28 09:24:55 +00:00
Diagnostics.h [clangd] Ignore diags from builtin files 2019-07-30 10:26:51 +00:00
DraftStore.cpp [clangd] Fix error message with incorrect TextDocumentcontentChangeEvent.rangeLength 2019-08-05 08:14:13 +00:00
DraftStore.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ExpectedTypes.cpp [clangd] Compute expected type for templates 2019-05-28 13:56:21 +00:00
ExpectedTypes.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
FS.cpp [clangd] Get rid of dots and dotsdots within GlobalCompilationDatabase 2019-07-18 16:13:23 +00:00
FS.h [clangd] Get rid of dots and dotsdots within GlobalCompilationDatabase 2019-07-18 16:13:23 +00:00
FSProvider.cpp [clangd] Unlink VFS working dir from OS working dir. Reland of r351051 2019-02-15 11:04:25 +00:00
FSProvider.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Features.inc.in [clangd] XPC transport layer 2019-01-16 00:24:22 +00:00
FileDistance.cpp [clangd] Save an unnecessary copy, NFC. 2019-09-24 13:25:38 +00:00
FileDistance.h Move endian constant from Host.h to SwapByteOrder.h, prune include 2019-10-19 00:48:11 +00:00
FindSymbols.cpp [clangd] Simplify the callside of URI::resolve, NFC. 2019-09-23 14:39:37 +00:00
FindSymbols.h [clangd] Type hierarchy subtypes 2019-06-16 02:31:37 +00:00
FindTarget.cpp [clangd] Implement semantic highlightings via findExplicitReferences 2019-11-05 19:15:24 +01:00
FindTarget.h [clangd] Implement semantic highlightings via findExplicitReferences 2019-11-05 19:15:24 +01:00
Format.cpp [clangd] Fix gcc warning by removing extra ";" 2019-06-11 06:02:01 +00:00
Format.h [clangd] Revamp textDocument/onTypeFormatting. 2019-06-10 14:26:21 +00:00
FormattedString.cpp [clangd] Separate chunks with a space when rendering markdown 2019-08-12 14:35:30 +00:00
FormattedString.h [clangd] Represent Hover result using FormattedString 2019-05-29 10:01:00 +00:00
Function.h [clangd] Remove Bind, use C++14 lambda captures instead. NFC 2019-08-16 09:20:01 +00:00
FuzzyMatch.cpp [clangd] Tune the fuzzy-matching algorithm 2019-03-15 14:00:49 +00:00
FuzzyMatch.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
GlobalCompilationDatabase.cpp [clangd] Fix background index not triggering on windows due to case mismatch. 2019-07-26 14:07:11 +00:00
GlobalCompilationDatabase.h [clangd] Fix background index not triggering on windows due to case mismatch. 2019-07-26 14:07:11 +00:00
HeaderSourceSwitch.cpp [clangd] Catch an unchecked "Expected<T>" in HeaderSourceSwitch. 2019-10-07 11:37:25 +00:00
HeaderSourceSwitch.h [clangd] Implement a smart version of HeaderSource switch. 2019-09-30 10:48:02 +00:00
Headers.cpp [clang-tools-extra] Migrate llvm::make_unique to std::make_unique 2019-08-14 23:52:23 +00:00
Headers.h [clangd][NFC] Typo in comment 2019-07-30 20:39:39 +00:00
IncludeFixer.cpp [clangd] Simplify the callside of URI::resolve, NFC. 2019-09-23 14:39:37 +00:00
IncludeFixer.h [clangd] Compute scopes eagerly in IncludeFixer 2019-08-06 11:37:50 +00:00
JSONTransport.cpp [clang-tools-extra] Migrate llvm::make_unique to std::make_unique 2019-08-14 23:52:23 +00:00
Logger.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Logger.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ParsedAST.cpp clang-tidy: Don't repeat list of all checks in three places. 2019-09-27 12:56:14 +00:00
ParsedAST.h [clangd] Collect macros in the preamble region of the main file 2019-09-24 11:14:06 +00:00
Path.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Preamble.cpp [clangd] Collect macros in the preamble region of the main file 2019-09-24 11:14:06 +00:00
Preamble.h [clangd] Collect macros in the preamble region of the main file 2019-09-24 11:14:06 +00:00
Protocol.cpp [clangd] Add semantic selection to ClangdLSPServer. 2019-09-24 13:38:33 +00:00
Protocol.h [clangd] Add semantic selection to ClangdLSPServer. 2019-09-24 13:38:33 +00:00
Quality.cpp [clangd] cleanup: unify the implemenation of checking a location is inside main file. 2019-07-19 08:33:39 +00:00
Quality.h [clangd] Remove unused signature help quality signal. NFC 2019-06-06 08:32:25 +00:00
QueryDriverDatabase.cpp [clang-tools-extra] Migrate llvm::make_unique to std::make_unique 2019-08-14 23:52:23 +00:00
RIFF.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RIFF.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Selection.cpp [clangd] SelectionTree should mark a node as fully-selected if the only claimed tokens were early-claimed. 2019-10-02 10:01:53 +00:00
Selection.h [clangd] Move getBeginningOfIdentifier from ClangdUnit to SourceCode. Drop dependencies on ClangdUnit from some headers. NFC 2019-09-03 15:34:47 +00:00
SemanticHighlighting.cpp [clangd] Implement semantic highlightings via findExplicitReferences 2019-11-05 19:15:24 +01:00
SemanticHighlighting.h [clangd] Improve semantic highlighting in dependent contexts (fixes #154) 2019-10-14 18:26:13 +00:00
SemanticSelection.cpp Implement semantic selections. 2019-09-16 11:29:35 +00:00
SemanticSelection.h Implement semantic selections. 2019-09-16 11:29:35 +00:00
SourceCode.cpp [clangd] Implement GetEligiblePoints 2019-10-25 12:13:30 +02:00
SourceCode.h [clangd] Implement GetEligiblePoints 2019-10-25 12:13:30 +02:00
StdSymbolMap.inc [clangd] Add include-mapping for C symbols. 2019-06-21 13:32:18 +00:00
TUScheduler.cpp [clangd] Propogate context in TUScheduler::run 2019-10-23 15:31:24 +02:00
TUScheduler.h [clangd] Move threading helper to more appropriate header. NFC 2019-09-04 09:53:24 +00:00
Threading.cpp [clangd] Use llvm::set_thread_priority in background-index 2019-04-18 13:46:40 +00:00
Threading.h [clangd] Remove obsolete includes. NFC 2019-09-04 10:01:05 +00:00
Trace.cpp [clangd] Remove obsolete includes. NFC 2019-09-04 10:01:05 +00:00
Trace.h [clangd] Remove obsolete includes. NFC 2019-09-04 10:01:05 +00:00
Transport.h [clangd] Use #if CLANGD_BUILD_XPC because it may be defined as 0 2019-04-10 15:45:54 +00:00
URI.cpp [clangd] Simplify the callside of URI::resolve, NFC. 2019-09-23 14:39:37 +00:00
URI.h [clangd] Simplify the callside of URI::resolve, NFC. 2019-09-23 14:39:37 +00:00
XRefs.cpp Refactor getDeclAtPosition() to use SelectionTree + targetDecl() 2019-10-31 17:37:27 -04:00
XRefs.h [clangd] Add a helper for extracting nonlocal decls in a FunctionDecl 2019-09-26 07:27:43 +00:00