xref: /llvm-project/clang/test/Modules/no-implicit-std-cxx-module.cppm (revision dc4e85bd79ff17014cbbe4a9db1d9b91929e91ce)
1e22fa1d4SChuanqi Xu// RUN: rm -rf %t
2e22fa1d4SChuanqi Xu// RUN: split-file %s %t
3e22fa1d4SChuanqi Xu// RUN: cd %t
4e22fa1d4SChuanqi Xu//
5e22fa1d4SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/b.cppm -o %t/b.pcm
6e22fa1d4SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/a.cppm -fmodule-file=b=%t/b.pcm \
7e22fa1d4SChuanqi Xu// RUN:     -o %t/a.pcm
8e22fa1d4SChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/user.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
9e22fa1d4SChuanqi Xu
10e22fa1d4SChuanqi Xu//--- b.cppm
11e22fa1d4SChuanqi Xuexport module b;
12e22fa1d4SChuanqi Xuexport int b() {
13e22fa1d4SChuanqi Xu    return 43;
14e22fa1d4SChuanqi Xu}
15e22fa1d4SChuanqi Xu
16e22fa1d4SChuanqi Xu//--- a.cppm
17e22fa1d4SChuanqi Xuexport module a;
18e22fa1d4SChuanqi Xuimport b;
19e22fa1d4SChuanqi Xuexport int a() {
20e22fa1d4SChuanqi Xu    return b() + 43;
21e22fa1d4SChuanqi Xu}
22e22fa1d4SChuanqi Xu
23e22fa1d4SChuanqi Xu//--- user.cpp
24*dc4e85bdSChuanqi Xuimport a; // expected-error {{failed to find module file for module 'b'}}
25e22fa1d4SChuanqi Xuint use() {
26*dc4e85bdSChuanqi Xu    return a(); // expected-error {{use of undeclared identifier 'a'}}
27e22fa1d4SChuanqi Xu}
28