Files
clang-p2996/clang/test/VFS/Inputs/bar-headers.yaml
Bruno Cardoso Lopes b7abde0343 Reapply [VFS] Skip non existent files from the VFS tree
Reapply r278457 with test fixed to not abouse fs case sensitivity.

When the VFS uses a YAML file, the real file path for a
virtual file is described in the "external-contents" field. Example:

  ...
  {
     'type': 'file',
     'name': 'a.h',
     'external-contents': '/a/b/c/a.h'
  }

Currently, when parsing umbrella directories, we use
vfs::recursive_directory_iterator to gather the header files to generate the
equivalent modules for. If the external contents for a header does not exist,
we currently are unable to build a module, since the VFS
vfs::recursive_directory_iterator will fail when it finds an entry without a
reliable real path.

Since the YAML file could be prepared ahead of time and shared among
different compiler invocations, an entry might not yet have a reliable
path in 'external-contents', breaking the iteration.

Give the VFS the capability to skip such entries whenever
'ignore-non-existent-contents' property is set in the YAML file.

rdar://problem/27531549

llvm-svn: 278543
2016-08-12 18:18:24 +00:00

40 lines
912 B
YAML

{
'version': 0,
'case-sensitive': 'false',
'ignore-non-existent-contents': 'true',
'roots': [
{
'type': 'directory',
'name': "VDIR/Bar.framework/Headers",
'contents': [
{
'type': 'file',
'name': "A.h",
'external-contents': "OUT_DIR/Bar.framework/Headers/A.h"
},
{
'type': 'file',
'name': "B.h",
'external-contents': "OUT_DIR/Bar.framework/Headers/B.h"
},
{
'type': 'file',
'name': "C.h",
'external-contents': "OUT_DIR/Bar.framework/Headers/C.h"
}
]
},
{
'type': 'directory',
'name': "VDIR/Bar.framework/Modules",
'contents': [
{
'type': 'file',
'name': "module.modulemap",
'external-contents': "OUT_DIR/Bar.framework/Modules/module.modulemap"
}
]
},
]
}