Author: Chuanqi Xu
Date: 2022-10-08T16:44:51+08:00
New Revision: 9974ed804995d2e34be69404e9904c7e03cfbda4

URL: 
https://github.com/llvm/llvm-project/commit/9974ed804995d2e34be69404e9904c7e03cfbda4
DIFF: 
https://github.com/llvm/llvm-project/commit/9974ed804995d2e34be69404e9904c7e03cfbda4.diff

LOG: [C++20] [Modules] Remove assertion of current module when acting on import

Closes https://github.com/llvm/llvm-project/issues/58199

Previously, when we act on a import statement, we'll assume there is a
module declaration in the current TU if the command line tells us we're
compiling a module unit. This makes since on valid codes. However, for
invalid codes, it is possible. See
https://github.com/llvm/llvm-project/issues/58199 for example.

This patch removes the assertion. And the assertion is a noop and it
should be safe to remove it.

Added: 
    clang/test/Modules/missing-module-declaration.cppm

Modified: 
    clang/lib/Sema/SemaModule.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Sema/SemaModule.cpp b/clang/lib/Sema/SemaModule.cpp
index b205fd914f9d3..4b01f109fc881 100644
--- a/clang/lib/Sema/SemaModule.cpp
+++ b/clang/lib/Sema/SemaModule.cpp
@@ -561,11 +561,6 @@ DeclResult Sema::ActOnModuleImport(SourceLocation StartLoc,
     Diag(ExportLoc, diag::err_export_not_in_module_interface)
         << (!ModuleScopes.empty() &&
             !ModuleScopes.back().ImplicitGlobalModuleFragment);
-  } else if (getLangOpts().isCompilingModule()) {
-    Module *ThisModule = PP.getHeaderSearchInfo().lookupModule(
-        getLangOpts().CurrentModule, ExportLoc, false, false);
-    (void)ThisModule;
-    assert(ThisModule && "was expecting a module if building one");
   }
 
   // In some cases we need to know if an entity was present in a directly-

diff  --git a/clang/test/Modules/missing-module-declaration.cppm 
b/clang/test/Modules/missing-module-declaration.cppm
new file mode 100644
index 0000000000000..d52f6639fe4f6
--- /dev/null
+++ b/clang/test/Modules/missing-module-declaration.cppm
@@ -0,0 +1,13 @@
+// RUN: rm -rf %t
+// RUN: split-file %s %t
+// RUN: cd %t
+//
+// RUN: %clang_cc1 -std=c++20 %t/B.cppm -I%t -emit-module-interface -o %t/B.pcm
+// RUN: %clang_cc1 -std=c++20 %t/A.cppm -I%t -fprebuilt-module-path=%t 
-emit-module-interface -verify
+
+//--- A.cppm
+import B; // expected-error{{missing 'export module' declaration in module 
interface unit}}
+
+//--- B.cppm
+module;
+export module B;


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to