1f8536fb1SIvan Murashko // UNSUPPORTED: system-windows 2f8536fb1SIvan Murashko // RUN: rm -rf %t 3f8536fb1SIvan Murashko // RUN: split-file %s %t 4f8536fb1SIvan Murashko // RUN: cd %t 5f8536fb1SIvan Murashko // 6f8536fb1SIvan Murashko // RUN: %hmaptool write a.hmap.json hmap 7f8536fb1SIvan Murashko // 8f8536fb1SIvan Murashko // 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 9f8536fb1SIvan Murashko // 10*bf916aeeSHaojian Wu // RUN: cd %T 11f8536fb1SIvan Murashko // RUN: rm -rf %t 12f8536fb1SIvan Murashko // RUN: split-file %s %t 13f8536fb1SIvan Murashko // RUN: cd %t 14f8536fb1SIvan Murashko // 15f8536fb1SIvan Murashko // RUN: sed -e "s|OUTPUTS_DIR|%t|g" b.hmap.json > hmap.json 16f8536fb1SIvan Murashko // RUN: %hmaptool write hmap.json hmap 17f8536fb1SIvan Murashko // 18f8536fb1SIvan Murashko // 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 19f8536fb1SIvan Murashko 20f8536fb1SIvan Murashko //--- After/Mapping.h 21f8536fb1SIvan Murashko #ifdef FOO 22f8536fb1SIvan Murashko #error foo 23f8536fb1SIvan Murashko #endif 24f8536fb1SIvan Murashko 25f8536fb1SIvan Murashko //--- a.hmap.json 26f8536fb1SIvan Murashko { 27f8536fb1SIvan Murashko "mappings" : 28f8536fb1SIvan Murashko { 29f8536fb1SIvan Murashko "Before/Mapping.h" : "After/Mapping.h", 30f8536fb1SIvan Murashko "After/Mapping.h" : "After/Mapping.h" 31f8536fb1SIvan Murashko } 32f8536fb1SIvan Murashko } 33f8536fb1SIvan Murashko 34f8536fb1SIvan Murashko //--- b.hmap.json 35f8536fb1SIvan Murashko { 36f8536fb1SIvan Murashko "mappings" : 37f8536fb1SIvan Murashko { 38f8536fb1SIvan Murashko "Before/Mapping.h" : "OUTPUTS_DIR/After/Mapping.h" 39f8536fb1SIvan Murashko } 40f8536fb1SIvan Murashko } 41f8536fb1SIvan Murashko 42f8536fb1SIvan Murashko //--- module.modulemap 43f8536fb1SIvan Murashko module a { 44f8536fb1SIvan Murashko header "After/Mapping.h" 45f8536fb1SIvan Murashko } 46f8536fb1SIvan Murashko 47f8536fb1SIvan Murashko 48f8536fb1SIvan Murashko //--- test.cpp 49f8536fb1SIvan Murashko #define FOO 50f8536fb1SIvan Murashko // This include will fail if: 51f8536fb1SIvan Murashko // 1) modules are't used, as the `FOO` define will propagate into the included 52f8536fb1SIvan Murashko // header and trip a `#error`, or 53f8536fb1SIvan Murashko // 2) header maps aren't used, as the header name doesn't exist and relies on 54f8536fb1SIvan Murashko // the header map to remap it to the real header. 55f8536fb1SIvan Murashko #include "Before/Mapping.h" 56