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

Reply via email to