[clang] 8d995b2 - [C++20] [Modules] [ClangScanDeps] Ensure that we can mix the use of and clang modules

Chuanqi Xu via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 14 19:00:40 PST 2023


Author: Chuanqi Xu
Date: 2023-02-15T11:00:03+08:00
New Revision: 8d995b26c7559f273809d0d29e5042850e47165a

URL: https://github.com/llvm/llvm-project/commit/8d995b26c7559f273809d0d29e5042850e47165a
DIFF: https://github.com/llvm/llvm-project/commit/8d995b26c7559f273809d0d29e5042850e47165a.diff

LOG: [C++20] [Modules] [ClangScanDeps] Ensure that we can mix the use of and clang modules

Add a test to ensure that the clang-scan-deps won't crash due to the
unexpected use of clang modules.

Added: 
    

Modified: 
    clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp
    clang/test/ClangScanDeps/P1689.cppm

Removed: 
    


################################################################################
diff  --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp
index 03e996a7dbd9c..c15f6e724fa14 100644
--- a/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp
+++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp
@@ -117,6 +117,12 @@ llvm::Expected<P1689Rule> DependencyScanningTool::getP1689ModuleDependencyFile(
       return Opts->OutputFile;
     }
 
+    // The lookupModuleOutput is for clang modules. P1689 format don't need it.
+    std::string lookupModuleOutput(const ModuleID &ID,
+                                 ModuleOutputKind Kind) override {
+      return "";
+    }
+
   private:
     StringRef Filename;
     P1689Rule &Rule;

diff  --git a/clang/test/ClangScanDeps/P1689.cppm b/clang/test/ClangScanDeps/P1689.cppm
index c9ef8f4c83fa2..bbe9cc3b2d332 100644
--- a/clang/test/ClangScanDeps/P1689.cppm
+++ b/clang/test/ClangScanDeps/P1689.cppm
@@ -37,6 +37,11 @@
 //
 // Check that we can generate multiple make-style dependency information with compilation database.
 // RUN: cat %t/P1689.dep | FileCheck %t/Checks.cpp -DPREFIX=%/t --check-prefix=CHECK-MAKE
+//
+// Check that we can mix the use of -format=p1689 and -fmodules.
+// RUN: clang-scan-deps -format=p1689 \
+// RUN:   -- %clang++ -std=c++20 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/cache -serialize-diagnostics -c %t/impl_part.cppm -o %t/impl_part.o \
+// RUN:   | FileCheck %t/impl_part.cppm -DPREFIX=%/t
 
 //--- P1689.json.in
 [
@@ -299,4 +304,7 @@ int main() {
 // CHECK-MAKE-DAG-NEXT:   [[PREFIX]]/Impl.cpp \
 // CHECK-MAKE-DAG-NEXT:   [[PREFIX]]/header.mock
 
+//--- module.modulemap
+module Mock { header "header.mock" }
+
 //--- header.mock


        


More information about the cfe-commits mailing list