#include_next interacts poorly with modules: it depends on where in the list of include paths the current file was found. Files covered by module maps are not found in include search paths when building the module (and are not found in include search paths when @importing the module either), so this isn't really meaningful. Instead, we fake up the result that #include_next *should* have given: find the first path that would have resulted in the given file being picked, and search from there onwards. llvm-svn: 220177
31 lines
807 B
Objective-C
31 lines
807 B
Objective-C
// RUN: rm -rf %t
|
|
// RUN: %clang -fsyntax-only -isystem %S/Inputs/System/usr/include -ffreestanding -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
|
|
|