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:
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:
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits