================
@@ -1669,6 +1671,58 @@ void use() {}
                                     getFullPath("Consumer.cpp"), *NewCI));
 }
 
+TEST_F(PrerequisiteModulesTests, ModuleSemanticHighlighting) {
+  MockDirectoryCompilationDatabase CDB(TestDir, FS);
+
+  llvm::StringRef AnnotatedCode = R"cpp(
+      module;
+      $import[[import]] $Namespace[[M]];
+      export module highlight;
+      $export[[export]] void $Function_def_globalScope[[foo]]() {
+      }
+)cpp";
+  uint32_t ModifierMask = -1;
+  Annotations UseCpp(AnnotatedCode);
+
+  CDB.addFile("M.cppm", R"cpp(
+export module M;
+export struct TypeFromModule {};
+)cpp");
+
+  CDB.addFile("Use.cpp", UseCpp.code());
+
+  ModulesBuilder Builder(CDB);
+
+  auto Inputs = getInputs("Use.cpp", CDB);
+  Inputs.ModulesManager = &Builder;
+  Inputs.Opts.SkipPreambleBuild = true;
+
+  auto CI = buildCompilerInvocation(Inputs, DiagConsumer);
+  ASSERT_TRUE(CI);
+
+  auto Preamble =
+      buildPreamble(getFullPath("Use.cpp"), *CI, Inputs, 
/*StoreInMemory=*/true,
+                    /*PeambleCallback=*/nullptr);
+  ASSERT_TRUE(Preamble);
+  EXPECT_EQ(Preamble->Preamble.getBounds().Size, 0u);
+
+  auto AST = ParsedAST::build(getFullPath("Use.cpp"), Inputs, std::move(CI), 
{},
+                              Preamble);
+  auto Actual = getSemanticHighlightings(AST.value(),
+                                         /*IncludeInactiveRegionTokens=*/true);
+  for (auto &Token : Actual)
+    Token.Modifiers &= ModifierMask;
----------------
ArcsinX wrote:

I think we don't need this loop.

https://github.com/llvm/llvm-project/pull/204511
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to