================
@@ -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