https://github.com/Decodetalkers updated https://github.com/llvm/llvm-project/pull/204511
>From fe14332bfc0507e85cb9fa86c6b8b9acb979950c Mon Sep 17 00:00:00 2001 From: ShootingStarDragons <[email protected]> Date: Thu, 18 Jun 2026 18:08:05 +0900 Subject: [PATCH 1/3] feat: highlight for keyword of import, export in CXX module This pr aims to add highlight for import and export keyword And induced new SemanticHighlight `keyword` --- .../clangd/SemanticHighlighting.cpp | 17 +++++++++++++++++ clang-tools-extra/clangd/SemanticHighlighting.h | 1 + 2 files changed, 18 insertions(+) diff --git a/clang-tools-extra/clangd/SemanticHighlighting.cpp b/clang-tools-extra/clangd/SemanticHighlighting.cpp index 856904bc810d1..19b5af7e58f30 100644 --- a/clang-tools-extra/clangd/SemanticHighlighting.cpp +++ b/clang-tools-extra/clangd/SemanticHighlighting.cpp @@ -582,6 +582,19 @@ class CollectExtraHighlightings return true; } + bool VisitImportDecl(const ImportDecl *D) { + H.addToken(D->getLocation(), HighlightingKind::Keyword); + for (const auto ModuleLoc : D->getIdentifierLocs()) { + H.addToken(ModuleLoc, HighlightingKind::Namespace) + .addModifier(HighlightingModifier::DependentName); + } + return true; + } + bool VisitExportDecl(const ExportDecl *D) { + H.addToken(D->getLocation(), HighlightingKind::Keyword); + return true; + } + bool VisitTagDecl(TagDecl *D) { for (TemplateParameterList *TPL : D->getTemplateParameterLists()) H.addAngleBracketTokens(TPL->getLAngleLoc(), TPL->getRAngleLoc()); @@ -1120,6 +1133,8 @@ llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, HighlightingKind K) { return OS << "Function"; case HighlightingKind::Method: return OS << "Method"; + case HighlightingKind::Keyword: + return OS << "Keyword"; case HighlightingKind::StaticMethod: return OS << "StaticMethod"; case HighlightingKind::Field: @@ -1323,6 +1338,8 @@ llvm::StringRef toSemanticTokenType(HighlightingKind Kind) { return "function"; case HighlightingKind::Method: return "method"; + case HighlightingKind::Keyword: + return "keyword"; case HighlightingKind::StaticMethod: // FIXME: better method with static modifier? return "function"; diff --git a/clang-tools-extra/clangd/SemanticHighlighting.h b/clang-tools-extra/clangd/SemanticHighlighting.h index 59d742b83ee52..3b1c12418becb 100644 --- a/clang-tools-extra/clangd/SemanticHighlighting.h +++ b/clang-tools-extra/clangd/SemanticHighlighting.h @@ -34,6 +34,7 @@ enum class HighlightingKind { Parameter, Function, Method, + Keyword, StaticMethod, Field, StaticField, >From 5d2a238864c0d7b18290316497f93d1b976226d0 Mon Sep 17 00:00:00 2001 From: ShootingStarDragons <[email protected]> Date: Sat, 20 Jun 2026 18:49:58 +0900 Subject: [PATCH 2/3] chore: add highlight for export in CXX Module since I cannot fix the build for cxx module, so I cannot test import, so I test export first --- .../clangd/unittests/SemanticHighlightingTests.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp index f8b7c242be9ff..569760294e455 100644 --- a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp +++ b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp @@ -1123,6 +1123,18 @@ sizeof...($TemplateParameter[[Elements]]); )cpp"}}, ~ScopeModifierMask); + checkHighlightings(R"cpp( + module; + export module highlight; + $Keyword[[export]] void $Function_def[[foo]]() { + } + )cpp", + {{"imp.h", R"cpp( + module; + export module ABC; + )cpp"}}, + ~ScopeModifierMask); + // A separate test for macros in headers. checkHighlightings(R"cpp( #include "imp.h" >From b6d04465c79eff731835d726e2405ab082570fab Mon Sep 17 00:00:00 2001 From: ShootingStarDragons <[email protected]> Date: Mon, 22 Jun 2026 22:31:42 +0900 Subject: [PATCH 3/3] chore: remove keyword and reuse Modifier instead --- clang-tools-extra/clangd/SemanticHighlighting.cpp | 11 +++-------- clang-tools-extra/clangd/SemanticHighlighting.h | 1 - .../clangd/unittests/SemanticHighlightingTests.cpp | 4 ++-- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/clang-tools-extra/clangd/SemanticHighlighting.cpp b/clang-tools-extra/clangd/SemanticHighlighting.cpp index 19b5af7e58f30..0be505ba12f59 100644 --- a/clang-tools-extra/clangd/SemanticHighlighting.cpp +++ b/clang-tools-extra/clangd/SemanticHighlighting.cpp @@ -583,15 +583,14 @@ class CollectExtraHighlightings } bool VisitImportDecl(const ImportDecl *D) { - H.addToken(D->getLocation(), HighlightingKind::Keyword); + H.addToken(D->getLocation(), HighlightingKind::Modifier); for (const auto ModuleLoc : D->getIdentifierLocs()) { - H.addToken(ModuleLoc, HighlightingKind::Namespace) - .addModifier(HighlightingModifier::DependentName); + H.addToken(ModuleLoc, HighlightingKind::Namespace); } return true; } bool VisitExportDecl(const ExportDecl *D) { - H.addToken(D->getLocation(), HighlightingKind::Keyword); + H.addToken(D->getLocation(), HighlightingKind::Modifier); return true; } @@ -1133,8 +1132,6 @@ llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, HighlightingKind K) { return OS << "Function"; case HighlightingKind::Method: return OS << "Method"; - case HighlightingKind::Keyword: - return OS << "Keyword"; case HighlightingKind::StaticMethod: return OS << "StaticMethod"; case HighlightingKind::Field: @@ -1338,8 +1335,6 @@ llvm::StringRef toSemanticTokenType(HighlightingKind Kind) { return "function"; case HighlightingKind::Method: return "method"; - case HighlightingKind::Keyword: - return "keyword"; case HighlightingKind::StaticMethod: // FIXME: better method with static modifier? return "function"; diff --git a/clang-tools-extra/clangd/SemanticHighlighting.h b/clang-tools-extra/clangd/SemanticHighlighting.h index 3b1c12418becb..59d742b83ee52 100644 --- a/clang-tools-extra/clangd/SemanticHighlighting.h +++ b/clang-tools-extra/clangd/SemanticHighlighting.h @@ -34,7 +34,6 @@ enum class HighlightingKind { Parameter, Function, Method, - Keyword, StaticMethod, Field, StaticField, diff --git a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp index 569760294e455..2fdabb1462b46 100644 --- a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp +++ b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp @@ -1126,10 +1126,10 @@ sizeof...($TemplateParameter[[Elements]]); checkHighlightings(R"cpp( module; export module highlight; - $Keyword[[export]] void $Function_def[[foo]]() { + $Modifier[[export]] void $Function_def[[foo]]() { } )cpp", - {{"imp.h", R"cpp( + {{"imp.cxx", R"cpp( module; export module ABC; )cpp"}}, _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
