The "magical" builtin headers are the headers we provide as part of the C standard library, which typically comes from /usr/include. We essentially merge our headers into that location (due to cyclic dependencies). This change makes sure that, when header search finds one of our builtin headers, we figure out which module it actually lives in. This case is fairly rare; one ends up having to include one of the few built-in C headers we provide before including anything from /usr/include to trigger it. Fixes <rdar://problem/13787184>. llvm-svn: 180934
31 lines
792 B
Objective-C
31 lines
792 B
Objective-C
// RUN: rm -rf %t
|
|
// RUN: %clang -fsyntax-only -isystem %S/Inputs/System/usr/include -fmodules -fmodules-cache-path=%t -D__need_wint_t -Werror=implicit-function-declaration %s
|
|
|
|
@import uses_other_constants;
|
|
const double other_value = DBL_MAX;
|
|
|
|
// Supplied by compiler, but referenced from the "/usr/include" module map.
|
|
@import cstd.float_constants;
|
|
|
|
float getFltMax() { return FLT_MAX; }
|
|
|
|
// Supplied by the "/usr/include" module map.
|
|
@import cstd.stdio;
|
|
|
|
void test_fprintf(FILE *file) {
|
|
fprintf(file, "Hello, modules\n");
|
|
}
|
|
|
|
// Supplied by compiler, which forwards to the "/usr/include" version.
|
|
@import cstd.stdint;
|
|
|
|
my_awesome_nonstandard_integer_type value2;
|
|
|
|
// Supplied by the compiler; that version wins.
|
|
@import cstd.stdbool;
|
|
|
|
#ifndef bool
|
|
# error "bool was not defined!"
|
|
#endif
|
|
|