10c6387f7SRichard Smith // RUN: rm -rf %t 20c6387f7SRichard Smith // RUN: mkdir %t 383fb85c8SReid Kleckner // RUN: cd %t 40c6387f7SRichard Smith 50c6387f7SRichard Smith // ---------------------- 60c6387f7SRichard Smith // Build modules A and B. 7*47972afdSRichard Smith // RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \ 80c6387f7SRichard Smith // RUN: -fmodule-name=a -emit-module %S/Inputs/explicit-build/module.modulemap -o a.pcm 90c6387f7SRichard Smith // 10*47972afdSRichard Smith // RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \ 110c6387f7SRichard Smith // RUN: -fmodule-file=a.pcm \ 120c6387f7SRichard Smith // RUN: -fmodule-name=b -emit-module %S/Inputs/explicit-build/module.modulemap -o b-rel.pcm 130c6387f7SRichard Smith // 14*47972afdSRichard Smith // RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \ 150c6387f7SRichard Smith // RUN: -fmodule-file=%t/a.pcm \ 160c6387f7SRichard Smith // RUN: -fmodule-name=b -emit-module %S/Inputs/explicit-build/module.modulemap -o b-abs.pcm 170c6387f7SRichard Smith 180c6387f7SRichard Smith // ------------------------------------------ 190c6387f7SRichard Smith // Mix and match relative and absolute paths. 20*47972afdSRichard Smith // RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \ 210c6387f7SRichard Smith // RUN: -I%S/Inputs/explicit-build \ 220c6387f7SRichard Smith // RUN: -fmodule-file=%t/a.pcm \ 230c6387f7SRichard Smith // RUN: -fmodule-file=a.pcm \ 240c6387f7SRichard Smith // RUN: -verify %s 250c6387f7SRichard Smith // 26*47972afdSRichard Smith // RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \ 270c6387f7SRichard Smith // RUN: -I%S/Inputs/explicit-build \ 280c6387f7SRichard Smith // RUN: -fmodule-file=%t/a.pcm \ 290c6387f7SRichard Smith // RUN: -fmodule-file=b-rel.pcm \ 300c6387f7SRichard Smith // RUN: -verify %s 310c6387f7SRichard Smith // 32*47972afdSRichard Smith // RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \ 330c6387f7SRichard Smith // RUN: -I%S/Inputs/explicit-build \ 340c6387f7SRichard Smith // RUN: -fmodule-file=a.pcm \ 350c6387f7SRichard Smith // RUN: -fmodule-file=b-abs.pcm \ 360c6387f7SRichard Smith // RUN: -verify %s 370c6387f7SRichard Smith // 38*47972afdSRichard Smith // RUN: not %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Rmodule-build -fno-modules-error-recovery \ 390c6387f7SRichard Smith // RUN: -I%S/Inputs/explicit-build \ 400c6387f7SRichard Smith // RUN: -fmodule-file=b-rel.pcm \ 410c6387f7SRichard Smith // RUN: -fmodule-file=b-abs.pcm \ 420c6387f7SRichard Smith // RUN: -verify %s 2>&1 | FileCheck %s 430c6387f7SRichard Smith // CHECK: module 'b' is defined in both '{{.*}}b-rel.pcm' and '{{.*}}b-abs.pcm' 440c6387f7SRichard Smith 450c6387f7SRichard Smith #include "a.h" 460c6387f7SRichard Smith static_assert(a == 1, ""); 470c6387f7SRichard Smith // expected-no-diagnostics 48