ckandeler updated this revision to Diff 476843. ckandeler marked 3 inline comments as done. ckandeler retitled this revision from "[clangd] Mark "override" and "final" as keywords" to "[clangd] Mark "override" and "final" as modifiers". ckandeler edited the summary of this revision. ckandeler added a comment.
Incorporated review comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D137943/new/ https://reviews.llvm.org/D137943 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 @@ -864,6 +864,12 @@ const char *$LocalVariable_def_readonly[[s]] = $LocalVariable_readonly_static[[__func__]]; } )cpp", + // override and final + R"cpp( + class $Class_def_abstract[[Base]] { virtual void $Method_decl_abstract_virtual[[m]]() = 0; }; + class $Class_def[[override]] : public $Class_abstract[[Base]] { void $Method_decl_virtual[[m]]() $Modifier[[override]]; }; + class $Class_def[[final]] : public $Class[[override]] { void $Method_decl_virtual[[m]]() $Modifier[[override]] $Modifier[[final]]; }; + )cpp", // Issue 1222: readonly modifier for generic parameter R"cpp( template <typename $TemplateParameter_def[[T]]> Index: clang-tools-extra/clangd/SemanticHighlighting.h =================================================================== --- clang-tools-extra/clangd/SemanticHighlighting.h +++ clang-tools-extra/clangd/SemanticHighlighting.h @@ -49,6 +49,7 @@ Concept, Primitive, Macro, + Modifier, // This one is different from the other kinds as it's a line style // rather than a token style. Index: clang-tools-extra/clangd/SemanticHighlighting.cpp =================================================================== --- clang-tools-extra/clangd/SemanticHighlighting.cpp +++ clang-tools-extra/clangd/SemanticHighlighting.cpp @@ -809,6 +809,18 @@ return true; } + bool VisitAttr(Attr *A) { + switch (A->getKind()) { + case attr::Override: + case attr::Final: + H.addToken(A->getLocation(), HighlightingKind::Modifier); + break; + default: + break; + } + return true; + } + bool VisitDependentNameTypeLoc(DependentNameTypeLoc L) { H.addToken(L.getNameLoc(), HighlightingKind::Type) .addModifier(HighlightingModifier::DependentName) @@ -985,6 +997,8 @@ return OS << "Primitive"; case HighlightingKind::Macro: return OS << "Macro"; + case HighlightingKind::Modifier: + return OS << "Modifier"; case HighlightingKind::InactiveCode: return OS << "InactiveCode"; } @@ -1119,6 +1133,8 @@ return "type"; case HighlightingKind::Macro: return "macro"; + case HighlightingKind::Modifier: + return "modifier"; case HighlightingKind::InactiveCode: return "comment"; }
Index: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp +++ clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp @@ -864,6 +864,12 @@ const char *$LocalVariable_def_readonly[[s]] = $LocalVariable_readonly_static[[__func__]]; } )cpp", + // override and final + R"cpp( + class $Class_def_abstract[[Base]] { virtual void $Method_decl_abstract_virtual[[m]]() = 0; }; + class $Class_def[[override]] : public $Class_abstract[[Base]] { void $Method_decl_virtual[[m]]() $Modifier[[override]]; }; + class $Class_def[[final]] : public $Class[[override]] { void $Method_decl_virtual[[m]]() $Modifier[[override]] $Modifier[[final]]; }; + )cpp", // Issue 1222: readonly modifier for generic parameter R"cpp( template <typename $TemplateParameter_def[[T]]> Index: clang-tools-extra/clangd/SemanticHighlighting.h =================================================================== --- clang-tools-extra/clangd/SemanticHighlighting.h +++ clang-tools-extra/clangd/SemanticHighlighting.h @@ -49,6 +49,7 @@ Concept, Primitive, Macro, + Modifier, // This one is different from the other kinds as it's a line style // rather than a token style. Index: clang-tools-extra/clangd/SemanticHighlighting.cpp =================================================================== --- clang-tools-extra/clangd/SemanticHighlighting.cpp +++ clang-tools-extra/clangd/SemanticHighlighting.cpp @@ -809,6 +809,18 @@ return true; } + bool VisitAttr(Attr *A) { + switch (A->getKind()) { + case attr::Override: + case attr::Final: + H.addToken(A->getLocation(), HighlightingKind::Modifier); + break; + default: + break; + } + return true; + } + bool VisitDependentNameTypeLoc(DependentNameTypeLoc L) { H.addToken(L.getNameLoc(), HighlightingKind::Type) .addModifier(HighlightingModifier::DependentName) @@ -985,6 +997,8 @@ return OS << "Primitive"; case HighlightingKind::Macro: return OS << "Macro"; + case HighlightingKind::Modifier: + return OS << "Modifier"; case HighlightingKind::InactiveCode: return OS << "InactiveCode"; } @@ -1119,6 +1133,8 @@ return "type"; case HighlightingKind::Macro: return "macro"; + case HighlightingKind::Modifier: + return "modifier"; case HighlightingKind::InactiveCode: return "comment"; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits