1*32208555SBen Barham// RUN: rm -rf %t 2*32208555SBen Barham// RUN: split-file %s %t 3*32208555SBen Barham// RUN: sed -e "s;TEST_DIR;%/t;g" %t/sed-overlay.yaml > %t/overlay.yaml 4*32208555SBen Barham 5*32208555SBen Barham// These tests first build with an overlay such that the header is resolved 6*32208555SBen Barham// to %t/other/Mismatch.h. They then build again with the header resolved 7*32208555SBen Barham// to the one in their directory. 8*32208555SBen Barham// 9*32208555SBen Barham// This should cause a rebuild if the contents is different (and thus multiple 10*32208555SBen Barham// PCMs), but this currently isn't the case. We should at least not error, 11*32208555SBen Barham// since this does happen in real projects (with a different copy of the same 12*32208555SBen Barham// file). 13*32208555SBen Barham 14*32208555SBen Barham// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/hf-mcp -ivfsoverlay %t/overlay.yaml -F %t/header-frameworks -fsyntax-only -verify %t/use.m 15*32208555SBen Barham// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/hf-mcp -F %t/header-frameworks -fsyntax-only -verify %t/use.m 16*32208555SBen Barham// RUN: find %t/hf-mcp -name "Mismatch-*.pcm" | count 1 17*32208555SBen Barham 18*32208555SBen Barham// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/df-mcp -ivfsoverlay %t/overlay.yaml -F %t/dir-frameworks -fsyntax-only -verify %t/use.m 19*32208555SBen Barham// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/hf-mcp -F %t/dir-frameworks -fsyntax-only -verify %t/use.m 20*32208555SBen Barham// RUN: find %t/df-mcp -name "Mismatch-*.pcm" | count 1 21*32208555SBen Barham 22*32208555SBen Barham// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/nf-mcp -ivfsoverlay %t/overlay.yaml -F %t/norm-frameworks -fsyntax-only -verify %t/use.m 23*32208555SBen Barham// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/nf-mcp -F %t/norm-frameworks -fsyntax-only -verify %t/use.m 24*32208555SBen Barham// RUN: find %t/nf-mcp -name "Mismatch-*.pcm" | count 1 25*32208555SBen Barham 26*32208555SBen Barham// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/m-mcp -ivfsoverlay %t/overlay.yaml -I %t/mod -fsyntax-only -verify %t/use.m 27*32208555SBen Barham// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/m-mcp -I %t/mod -fsyntax-only -verify %t/use.m 28*32208555SBen Barham// RUN: find %t/m-mcp -name "Mismatch-*.pcm" | count 1 29*32208555SBen Barham 30*32208555SBen Barham//--- use.m 31*32208555SBen Barham// expected-no-diagnostics 32*32208555SBen Barham@import Mismatch; 33*32208555SBen Barham 34*32208555SBen Barham//--- header-frameworks/Mismatch.framework/Modules/module.modulemap 35*32208555SBen Barhamframework module Mismatch { 36*32208555SBen Barham umbrella header "Mismatch.h" 37*32208555SBen Barham} 38*32208555SBen Barham//--- header-frameworks/Mismatch.framework/Headers/Mismatch.h 39*32208555SBen Barham 40*32208555SBen Barham//--- dir-frameworks/Mismatch.framework/Modules/module.modulemap 41*32208555SBen Barhamframework module Mismatch { 42*32208555SBen Barham umbrella "someheaders" 43*32208555SBen Barham} 44*32208555SBen Barham//--- dir-frameworks/Mismatch.framework/someheaders/Mismatch.h 45*32208555SBen Barham 46*32208555SBen Barham//--- norm-frameworks/Mismatch.framework/Modules/module.modulemap 47*32208555SBen Barhamframework module Mismatch { 48*32208555SBen Barham header "Mismatch.h" 49*32208555SBen Barham} 50*32208555SBen Barham//--- norm-frameworks/Mismatch.framework/Headers/Mismatch.h 51*32208555SBen Barham 52*32208555SBen Barham//--- mod/module.modulemap 53*32208555SBen Barhammodule Mismatch { 54*32208555SBen Barham umbrella header "Mismatch.h" 55*32208555SBen Barham} 56*32208555SBen Barham//--- mod/Mismatch.h 57*32208555SBen Barham 58*32208555SBen Barham//--- other/Mismatch.h 59*32208555SBen Barham 60*32208555SBen Barham//--- sed-overlay.yaml 61*32208555SBen Barham{ 62*32208555SBen Barham 'version': 0, 63*32208555SBen Barham 'roots': [ 64*32208555SBen Barham { 'name': 'TEST_DIR', 'type': 'directory', 65*32208555SBen Barham 'contents': [ 66*32208555SBen Barham { 'name': 'header-frameworks/Mismatch.framework/Headers/Mismatch.h', 67*32208555SBen Barham 'type': 'file', 68*32208555SBen Barham 'external-contents': 'TEST_DIR/other/Mismatch.h' 69*32208555SBen Barham }, 70*32208555SBen Barham { 'name': 'dir-frameworks/Mismatch.framework/someheaders', 71*32208555SBen Barham 'type': 'directory', 72*32208555SBen Barham 'external-contents': 'TEST_DIR/others' 73*32208555SBen Barham }, 74*32208555SBen Barham { 'name': 'norm-frameworks/Mismatch.framework/Headers/Mismatch.h', 75*32208555SBen Barham 'type': 'file', 76*32208555SBen Barham 'external-contents': 'TEST_DIR/other/Mismatch.h' 77*32208555SBen Barham }, 78*32208555SBen Barham { 'name': 'mod/Mismatch.h', 79*32208555SBen Barham 'type': 'file', 80*32208555SBen Barham 'external-contents': 'TEST_DIR/other/Mismatch.h' 81*32208555SBen Barham } 82*32208555SBen Barham ] 83*32208555SBen Barham } 84*32208555SBen Barham ] 85*32208555SBen Barham} 86*32208555SBen Barham 87