Files
swift-mirror/test/Frontend/vfs.swift
Robert Widmann 61203921f5 Diagnose clobbering clang's VFS with our own
There are three modes of concern here:

1) User provides -vfsoverlay but not -Xcc -ivfsoverlay

Recommended behavior.

2) User provides -Xcc -ivfsoverlay but not -vfsoverlay

Legacy behavior.  Clang will handle setup for the VFS.

3) User provides both -vfsoverlay and -Xcc -ivfsoverlay

Unsupported.  We will ignore the clang VFS overlays and substitute our
own.  We will also pop a warning about this.
2018-07-31 15:11:52 -07:00

28 lines
1.8 KiB
Swift

// RUN: %empty-directory(%t)
// RUN: sed -e "s:INPUT_DIR:%S/Inputs:g" -e "s:OUT_DIR:%t:g" %S/Inputs/vfs/vfsoverlay.yaml > %t/overlay.yaml
// RUN: sed -e "s:INPUT_DIR:%S/Inputs:g" -e "s:OUT_DIR:%t:g" %S/Inputs/vfs/secondary-vfsoverlay.yaml > %t/secondary-overlay.yaml
// RUN: sed -e "s:INPUT_DIR:%S/Inputs:g" -e "s:OUT_DIR:%t:g" %S/Inputs/vfs/tertiary-vfsoverlay.yaml > %t/tertiary-overlay.yaml
// RUN: not %target-swift-frontend -vfsoverlay %t/overlay.yaml -typecheck %s %t/mapped-file.swift 2>&1 | %FileCheck -check-prefix=BASIC_MAPPING_ERROR %s
// BASIC_MAPPING_ERROR: {{.*}}/mapped-file.swift:2:17: error:
// RUN: not %target-swift-frontend -vfsoverlay %t/overlay.yaml -vfsoverlay %t/secondary-overlay.yaml -vfsoverlay %t/tertiary-overlay.yaml -typecheck %s %t/triple-mapped-swift-file.swift 2>&1 | %FileCheck -check-prefix=COMPLEX_MAPPING_ERROR %s
// COMPLEX_MAPPING_ERROR: {{.*}}/triple-mapped-swift-file.swift:2:17: error:
// The Clang Importer should inherit Swift's VFS
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %t -DTEST_VFS_CLANG_IMPORTER -vfsoverlay %t/overlay.yaml -typecheck %s
// Just -Xcc -ivfsoverlay should work fine too
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %t -DTEST_VFS_CLANG_IMPORTER -Xcc -ivfsoverlay -Xcc %t/overlay.yaml -typecheck %s
// If we see -ivfsoverlay and -vfsoverlay, we'll clobber Clang's VFS with our own.
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %t -DTEST_VFS_CLANG_IMPORTER -vfsoverlay %t/overlay.yaml -Xcc -ivfsoverlay -Xcc %t/overlay.yaml -typecheck %s 2>&1 | %FileCheck -check-prefix=WARN_VFS_CLOBBERED %s
// WARN_VFS_CLOBBERED: warning: ignoring '-ivfsoverlay' options provided to '-Xcc' in favor of '-vfsoverlay'
#if TEST_VFS_CLANG_IMPORTER
import VFSMappedModule
#endif