[clang] [C++20][Modules] Implement P1857R3 Modules Dependency Discovery (PR #107168)

via cfe-commits cfe-commits at lists.llvm.org
Sun Nov 9 07:31:37 PST 2025


================
@@ -986,6 +989,14 @@ def warn_module_conflict : Warning<
   InGroup<ModuleConflict>;
 
 // C++20 modules
+def err_pp_module_name_is_macro : Error<
+  "%select{module|partition}0 name component %1 cannot be a object-like macro">;
+def err_pp_module_expected_ident : Error<
+  "expected %select{identifier after '.' in |}0module name">;
+def err_pp_module_decl_in_header
+    : Error<"module declaration must not come from an #include directive">;
+def err_pp_cond_span_module_decl
+    : Error<"preprocessor conditionals shall not span a module declaration">;
----------------
yronglin wrote:

Does this behavior make sense?
Sorry I have another question, does it's only effective with -E mode?
```cpp
#if 0 // #1
export module m; // expected-error {{preprocessor conditionals shall not span a module declaration}}
#else
export module m; // expected-error {{preprocessor conditionals shall not span a module declaration}} \
                 // expected-error {{module declaration must occur at the start of the translation unit}} \
                 // expected-note@#1 {{add 'module;'}}
#endif
```

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


More information about the cfe-commits mailing list