// UNSUPPORTED: system-windows // RUN: rm -rf %t // RUN: split-file %s %t // RUN: cd %t // // RUN: %hmaptool write a.hmap.json hmap // // RUN: %clang -Rmodule-build -fmodules -fimplicit-modules -fimplicit-module-maps -fmodule-map-file=module.modulemap -fsyntax-only -I hmap -fmodules-cache-path=%t test.cpp // // RUN: cd %T // RUN: rm -rf %t // RUN: split-file %s %t // RUN: cd %t // // RUN: sed -e "s|OUTPUTS_DIR|%t|g" b.hmap.json > hmap.json // RUN: %hmaptool write hmap.json hmap // // RUN: %clang -Rmodule-build -fmodules -fimplicit-modules -fimplicit-module-maps -fmodule-map-file=module.modulemap -fsyntax-only -I hmap -fmodules-cache-path=%t test.cpp //--- After/Mapping.h #ifdef FOO #error foo #endif //--- a.hmap.json { "mappings" : { "Before/Mapping.h" : "After/Mapping.h", "After/Mapping.h" : "After/Mapping.h" } } //--- b.hmap.json { "mappings" : { "Before/Mapping.h" : "OUTPUTS_DIR/After/Mapping.h" } } //--- module.modulemap module a { header "After/Mapping.h" } //--- test.cpp #define FOO // This include will fail if: // 1) modules are't used, as the `FOO` define will propagate into the included // header and trip a `#error`, or // 2) header maps aren't used, as the header name doesn't exist and relies on // the header map to remap it to the real header. #include "Before/Mapping.h"