// RUN: rm -rf %t
// RUN: split-file %s %t
//--- sources/FW/Private.h
#include <FW/PrivateUnmapped.h>
//--- sources/FW/PrivateUnmapped.h
#include <FW/Public.h>
//--- sources/FW/Public.h
#include <FW/PublicPresent.h>
//--- frameworks/FW.framework/Headers/PublicPresent.h
// empty
//--- frameworks/FW.framework/Modules/module.modulemap
framework module FW { umbrella header "Public.h" }
//--- frameworks/FW.framework/Modules/module.private.modulemap
framework module FW_Private { umbrella header "Private.h" }
//--- vfs.json.in
{
"case-sensitive": "false",
"version": 0,
"roots": [
{
"contents": [
{
"external-contents": "DIR/sources/FW/Public.h",
"name": "Public.h",
"type": "file"
}
],
"name": "DIR/frameworks/FW.framework/Headers",
"type": "directory"
},
{
"contents": [
{
"external-contents": "DIR/sources/FW/Private.h",
"name": "Private.h",
"type": "file"
}
],
"name": "DIR/frameworks/FW.framework/PrivateHeaders",
"type": "directory"
}
]
}
//--- tu.m
#import <FW/Private.h>
// expected-no-diagnostics
// RUN: sed -e "s|DIR|%/t|g" %t/vfs.json.in > %t/vfs.json
// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/cache \
// RUN: -ivfsoverlay %t/vfs.json -I %t/sources -F %t/frameworks -fsyntax-only %t/tu.m -verify