[clang] [clang][Modules] Diagnosing Module Redefinition Across ModuleMaps (PR #190085)

Qiongsi Wu via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 8 13:37:18 PDT 2026


================
@@ -1756,9 +1756,24 @@ void ModuleMapLoader::handleModuleDecl(const modulemap::ModuleDecl &MD) {
   if (Module *Existing = Map.lookupModuleQualified(ModuleName, ActiveModule)) {
     // We might see a (re)definition of a module that we already have a
     // definition for in four cases:
-    //  - If we loaded one definition from an AST file and we've just found a
-    //    corresponding definition in a module map file, or
+    //  - If we loaded one definition from an AST file and we've just found the
+    //    corresponding definition in the same module map file, or
     bool LoadedFromASTFile = Existing->IsFromModuleFile;
+    if (LoadedFromASTFile) {
----------------
qiongsiwu wrote:

Comment fixed! Thanks! 

> It sounds like it would be much cleaner to semantically compare `ModuleDecl`s in general.

Agreed! The current check does not check the definition semantically so one may have duplicating, yet identical module decls. I am not sure if it is desirable to allow duplicating yet identical module decls, but checking the semantic feels conceptually simpler for sure. 

https://github.com/llvm/llvm-project/pull/190085


More information about the cfe-commits mailing list