xref: /llvm-project/clang/test/Modules/builtin-headers.mm (revision 4ee8c676ee370f5cd53cb6ac3a9c27c7088f2eae)
1// RUN: rm -rf %t
2// RUN: %clang_cc1 -cxx-isystem %S/Inputs/builtin-headers/c++ -internal-isystem %S/Inputs/builtin-headers -fsyntax-only -fmodules -fmodules-cache-path=%t -fmodule-map-file=%S/Inputs/builtin-headers/c++/module.modulemap -fmodule-map-file=%resource_dir/module.modulemap -fmodule-map-file=%S/Inputs/builtin-headers/system-modules.modulemap -fbuiltin-headers-in-system-modules -DSYSTEM_MODULES %s -verify
3// RUN: rm -rf %t
4// RUN: %clang_cc1 -cxx-isystem %S/Inputs/builtin-headers/c++ -internal-isystem %S/Inputs/builtin-headers -fsyntax-only -fmodules -fmodules-cache-path=%t -fmodule-map-file=%S/Inputs/builtin-headers/c++/module.modulemap -fmodule-map-file=%resource_dir/module.modulemap -fmodule-map-file=%S/Inputs/builtin-headers/builtin-modules.modulemap %s -verify
5
6// expected-no-diagnostics
7
8@import cpp_stdint;
9
10// The builtin modules are always available, though they're mostly
11// empty if -fbuiltin-headers-in-system-modules is used.
12@import _Builtin_float;
13@import _Builtin_inttypes;
14@import _Builtin_iso646;
15@import _Builtin_limits;
16@import _Builtin_stdalign;
17@import _Builtin_stdarg;
18@import _Builtin_stdatomic;
19@import _Builtin_stdbool;
20@import _Builtin_stddef;
21@import _Builtin_stdint;
22@import _Builtin_stdnoreturn;
23@import _Builtin_tgmath;
24@import _Builtin_unwind;
25
26#ifdef SYSTEM_MODULES
27// system-modules.modulemap uses the "mega module" style with
28// -fbuiltin-headers-in-system-modules, and its modules cover
29// the clang builtin headers.
30@import cstd;
31#else
32// builtin-modules.modulemap uses top level modules for each
33// of its headers, which allows interleaving with the builtin
34// modules and libc++ modules.
35@import c_complex;
36@import c_float;
37@import c_inttypes;
38@import c_limits;
39@import c_math;
40@import c_stdint;
41#endif
42