[PATCH] D107145: clangd: Add new semantic token modifier "virtual"
Christian Kandeler via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 30 04:30:18 PDT 2021
ckandeler updated this revision to Diff 363031.
ckandeler added a comment.
Extended test case
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D107145/new/
https://reviews.llvm.org/D107145
Files:
clang-tools-extra/clangd/SemanticHighlighting.cpp
clang-tools-extra/clangd/SemanticHighlighting.h
clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
Index: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
+++ clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
@@ -642,9 +642,14 @@
)cpp",
R"cpp(
class $Class_decl_abstract[[Abstract]] {
- virtual void $Method_decl_abstract[[pure]]() = 0;
- virtual void $Method_decl[[impl]]();
+ public:
+ virtual void $Method_decl_abstract_virtual[[pure]]() = 0;
+ virtual void $Method_decl_virtual[[impl]]();
};
+ void $Function_decl[[foo]]($Class_abstract[[Abstract]]* $Parameter_decl[[A]]) {
+ $Parameter[[A]]->$Method_abstract_virtual[[pure]]();
+ $Parameter[[A]]->$Method_virtual[[impl]]();
+ }
)cpp",
R"cpp(
<:[deprecated]:> int $Variable_decl_deprecated[[x]];
Index: clang-tools-extra/clangd/SemanticHighlighting.h
===================================================================
--- clang-tools-extra/clangd/SemanticHighlighting.h
+++ clang-tools-extra/clangd/SemanticHighlighting.h
@@ -66,6 +66,7 @@
Readonly,
Static,
Abstract,
+ Virtual,
DependentName,
DefaultLibrary,
Index: clang-tools-extra/clangd/SemanticHighlighting.cpp
===================================================================
--- clang-tools-extra/clangd/SemanticHighlighting.cpp
+++ clang-tools-extra/clangd/SemanticHighlighting.cpp
@@ -240,6 +240,12 @@
return false;
}
+bool isVirtual(const Decl *D) {
+ if (const auto *CMD = llvm::dyn_cast<CXXMethodDecl>(D))
+ return CMD->isVirtual();
+ return false;
+}
+
bool isDependent(const Decl *D) {
if (isa<UnresolvedUsingValueDecl>(D))
return true;
@@ -712,6 +718,8 @@
Tok.addModifier(HighlightingModifier::Static);
if (isAbstract(Decl))
Tok.addModifier(HighlightingModifier::Abstract);
+ if (isVirtual(Decl))
+ Tok.addModifier(HighlightingModifier::Virtual);
if (isDependent(Decl))
Tok.addModifier(HighlightingModifier::DependentName);
if (isDefaultLibrary(Decl))
@@ -898,6 +906,8 @@
return "deduced"; // nonstandard
case HighlightingModifier::Abstract:
return "abstract";
+ case HighlightingModifier::Virtual:
+ return "virtual";
case HighlightingModifier::DependentName:
return "dependentName"; // nonstandard
case HighlightingModifier::DefaultLibrary:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D107145.363031.patch
Type: text/x-patch
Size: 2501 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210730/ad06dfa3/attachment.bin>
More information about the cfe-commits
mailing list