1*7847e445SMichael Spencer// RUN: rm -rf %t 2*7847e445SMichael Spencer// RUN: split-file %s %t 3*7847e445SMichael Spencer// RUN: sed -e "s|DIR|%/t|g" %t/build/compile-commands.json.in > %t/build/compile-commands.json 4*7847e445SMichael Spencer// RUN: sed -e "s|DIR|%/t|g" %t/build/vfsoverlay.yaml.in > %t/build/vfsoverlay.yaml 5*7847e445SMichael Spencer// RUN: sed -e "s|DIR|%/t|g" %t/build/vfs.notyaml.in > %t/build/vfs.notyaml 6*7847e445SMichael Spencer// RUN: clang-scan-deps -compilation-database %t/build/compile-commands.json \ 7*7847e445SMichael Spencer// RUN: -j 1 -format experimental-full --optimize-args=vfs,header-search > %t/deps.db 8*7847e445SMichael Spencer 9*7847e445SMichael Spencer// RUN: %deps-to-rsp %t/deps.db --module-name=A > %t/A.rsp 10*7847e445SMichael Spencer// RUN: cd %t && %clang @%t/A.rsp 11*7847e445SMichael Spencer 12*7847e445SMichael Spencer// Check that the following edge cases are handled by ivfsoverlay tracking 13*7847e445SMichael Spencer// * `-ivfsoverlay` args that depend on earlier `-ivfsoverlay` args. 14*7847e445SMichael Spencer 15*7847e445SMichael Spencer//--- build/compile-commands.json.in 16*7847e445SMichael Spencer 17*7847e445SMichael Spencer[ 18*7847e445SMichael Spencer{ 19*7847e445SMichael Spencer "directory": "DIR", 20*7847e445SMichael Spencer "command": "clang -c DIR/0.m -Imodules/A -fmodules -fmodules-cache-path=DIR/module-cache -fimplicit-module-maps -ivfsoverlay build/vfsoverlay.yaml -ivfsoverlay build/vfs.yaml", 21*7847e445SMichael Spencer "file": "DIR/0.m" 22*7847e445SMichael Spencer} 23*7847e445SMichael Spencer] 24*7847e445SMichael Spencer 25*7847e445SMichael Spencer//--- build/vfsoverlay.yaml.in 26*7847e445SMichael Spencer 27*7847e445SMichael Spencer{ 28*7847e445SMichael Spencer "version":0, 29*7847e445SMichael Spencer "case-sensitive":"false", 30*7847e445SMichael Spencer "roots":[ 31*7847e445SMichael Spencer { 32*7847e445SMichael Spencer "contents":[ 33*7847e445SMichael Spencer { 34*7847e445SMichael Spencer "external-contents":"DIR/build/vfs.notyaml", 35*7847e445SMichael Spencer "name":"vfs.yaml", 36*7847e445SMichael Spencer "type":"file" 37*7847e445SMichael Spencer } 38*7847e445SMichael Spencer ], 39*7847e445SMichael Spencer "name":"DIR/build", 40*7847e445SMichael Spencer "type":"directory" 41*7847e445SMichael Spencer } 42*7847e445SMichael Spencer ] 43*7847e445SMichael Spencer} 44*7847e445SMichael Spencer 45*7847e445SMichael Spencer//--- build/vfs.notyaml.in 46*7847e445SMichael Spencer 47*7847e445SMichael Spencer{ 48*7847e445SMichael Spencer "version":0, 49*7847e445SMichael Spencer "case-sensitive":"false", 50*7847e445SMichael Spencer "roots":[ 51*7847e445SMichael Spencer { 52*7847e445SMichael Spencer "contents":[ 53*7847e445SMichael Spencer { 54*7847e445SMichael Spencer "external-contents":"DIR/build/module.modulemap", 55*7847e445SMichael Spencer "name":"module.modulemap", 56*7847e445SMichael Spencer "type":"file" 57*7847e445SMichael Spencer }, 58*7847e445SMichael Spencer { 59*7847e445SMichael Spencer "external-contents":"DIR/build/A.h", 60*7847e445SMichael Spencer "name":"A.h", 61*7847e445SMichael Spencer "type":"file" 62*7847e445SMichael Spencer } 63*7847e445SMichael Spencer ], 64*7847e445SMichael Spencer "name":"DIR/modules/A", 65*7847e445SMichael Spencer "type":"directory" 66*7847e445SMichael Spencer } 67*7847e445SMichael Spencer ] 68*7847e445SMichael Spencer} 69*7847e445SMichael Spencer 70*7847e445SMichael Spencer//--- build/module.modulemap 71*7847e445SMichael Spencer 72*7847e445SMichael Spencermodule A { 73*7847e445SMichael Spencer umbrella header "A.h" 74*7847e445SMichael Spencer} 75*7847e445SMichael Spencer 76*7847e445SMichael Spencer//--- build/A.h 77*7847e445SMichael Spencer 78*7847e445SMichael Spencertypedef int A_t; 79*7847e445SMichael Spencer 80*7847e445SMichael Spencer//--- 0.m 81*7847e445SMichael Spencer 82*7847e445SMichael Spencer#include <A.h> 83*7847e445SMichael Spencer 84*7847e445SMichael SpencerA_t a = 0; 85