2 // RUN: split-file %s %t
5 // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/b.cppm -o %t/b.pcm
6 // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/a.cppm -fmodule-file=b=%t/b.pcm \
8 // RUN: %clang_cc1 -std=c++20 %t/user.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
9 // RUN: %clang_cc1 -std=c++20 %t/user.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only \
10 // RUN: -Wno-read-modules-implicitly -DNO_DIAG
11 // RUN: %clang_cc1 -std=c++20 %t/user.cpp -fmodule-file=a=%t/a.pcm -fmodule-file=b=%t/b.pcm \
12 // RUN: -DNO_DIAG -verify -fsyntax-only
14 // RUN: %clang_cc1 -std=c++20 %t/a.pcm -S -emit-llvm -o - 2>&1 | FileCheck %t/a.cppm
15 // RUN: %clang_cc1 -std=c++20 %t/a.pcm -fmodule-file=b=%t/b.pcm -S -emit-llvm -o - 2>&1 \
16 // RUN: | FileCheck %t/a.cppm -check-prefix=CHECK-CORRECT
18 // RUN: mkdir -p %t/tmp
19 // RUN: mv %t/b.pcm %t/tmp/b.pcm
20 // RUN: not %clang_cc1 -std=c++20 %t/a.pcm -S -emit-llvm -o - 2>&1 \
21 // RUN: | FileCheck %t/a.cppm -check-prefix=CHECK-ERROR
22 // RUN: %clang_cc1 -std=c++20 %t/a.pcm -S -emit-llvm -o - 2>&1 -fmodule-file=b=%t/tmp/b.pcm \
23 // RUN: | FileCheck %t/a.cppm -check-prefix=CHECK-CORRECT
38 // CHECK: it is deprecated to read module 'b' implicitly;
40 // CHECK-CORRECT-NOT: warning
41 // CHECK-CORRECT-NOT: error
43 // CHECK-ERROR: error: module file{{.*}}not found: module file not found
48 // expected-no-diagnostics
50 // expected-warning@+2 {{it is deprecated to read module 'b' implicitly;}}