https://github.com/ChuanqiXu9 created 
https://github.com/llvm/llvm-project/pull/215448

None

>From 3194e8e0463b3e321e6e803b02b5a5617cda4fa7 Mon Sep 17 00:00:00 2001
From: Chuanqi Xu <[email protected]>
Date: Tue, 11 Aug 2026 10:35:09 +0800
Subject: [PATCH] [C++20] [Modules] Diagnose invalid module interface for
 implementation unit

---
 clang/lib/Sema/SemaModule.cpp    | 4 +++-
 clang/test/Modules/GH204633.cppm | 8 ++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/clang/lib/Sema/SemaModule.cpp b/clang/lib/Sema/SemaModule.cpp
index 42c67cf89ed88..8a7bf172c8342 100644
--- a/clang/lib/Sema/SemaModule.cpp
+++ b/clang/lib/Sema/SemaModule.cpp
@@ -426,8 +426,10 @@ Sema::ActOnModuleDecl(SourceLocation StartLoc, 
SourceLocation ModuleLoc,
 
     // A Clang module or a header unit cannot serve as the primary module
     // interface while recovering from an implementation unit declaration.
-    if (Interface && !Interface->isNamedModule())
+    if (Interface && !Interface->isNamedModule()) {
+      Diag(ModuleLoc, diag::err_module_not_defined) << ModuleName;
       return nullptr;
+    }
 
     if (!Interface) {
       Diag(ModuleLoc, diag::err_module_not_defined) << ModuleName;
diff --git a/clang/test/Modules/GH204633.cppm b/clang/test/Modules/GH204633.cppm
index 4bcd1200a5568..8651352013e67 100644
--- a/clang/test/Modules/GH204633.cppm
+++ b/clang/test/Modules/GH204633.cppm
@@ -9,15 +9,15 @@
 // parser accepts this as a Clang module definition, while the C++ parser
 // diagnoses it as a malformed module declaration.
 //--- original.cppm
-// expected-error@+2 {{unexpected preprocessing token '{' after module name}}
-// expected-error@+1 {{module directive must end with a ';'}}
+// expected-error@+3 {{unexpected preprocessing token '{' after module name}}
+// expected-error@+2 {{module directive must end with a ';'}}
+// expected-error@+1 {{definition of module 'M' is not available}}
 module M {}
 
 // Build the conflicting Clang module inline.
 //--- inline.cppm
-// expected-no-diagnostics
 #pragma clang module build Foo
 module Foo {}
 #pragma clang module endbuild
 
-module Foo;
+module Foo; // expected-error {{definition of module 'Foo' is not available}}

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

Reply via email to