Add swiftcrossimport and swiftoverlays file_types

This commit is contained in:
Brent Royal-Gordon
2020-02-15 12:02:48 -08:00
parent 7c0859d7f8
commit 6cce3d374e
4 changed files with 19 additions and 0 deletions

View File

@@ -73,6 +73,13 @@ TYPE("module-trace", ModuleTrace, "trace.json", "")
TYPE("index-data", IndexData, "", "") TYPE("index-data", IndexData, "", "")
TYPE("opt-record", OptRecord, "opt.yaml", "") TYPE("opt-record", OptRecord, "opt.yaml", "")
// Overlay files declare wrapper modules, called "separately-imported overlays",
// that should be automatically imported when a particular module is imported.
// Cross-import directories conditionalize overlay files so they only take
// effect when certain other modules are also loaded.
TYPE("swiftcrossimport", SwiftCrossImportDir, "swiftcrossimport","")
TYPE("swiftoverlay", SwiftOverlayFile, "swiftoverlay", "")
// Misc types // Misc types
TYPE("pcm", ClangModuleFile, "pcm", "") TYPE("pcm", ClangModuleFile, "pcm", "")
TYPE("pch", PCH, "pch", "") TYPE("pch", PCH, "pch", "")

View File

@@ -80,6 +80,7 @@ bool file_types::isTextual(ID Id) {
case file_types::TY_ModuleTrace: case file_types::TY_ModuleTrace:
case file_types::TY_OptRecord: case file_types::TY_OptRecord:
case file_types::TY_SwiftModuleInterfaceFile: case file_types::TY_SwiftModuleInterfaceFile:
case file_types::TY_SwiftOverlayFile:
return true; return true;
case file_types::TY_Image: case file_types::TY_Image:
case file_types::TY_Object: case file_types::TY_Object:
@@ -90,6 +91,7 @@ bool file_types::isTextual(ID Id) {
case file_types::TY_SwiftModuleFile: case file_types::TY_SwiftModuleFile:
case file_types::TY_SwiftModuleDocFile: case file_types::TY_SwiftModuleDocFile:
case file_types::TY_SwiftSourceInfoFile: case file_types::TY_SwiftSourceInfoFile:
case file_types::TY_SwiftCrossImportDir:
case file_types::TY_LLVM_BC: case file_types::TY_LLVM_BC:
case file_types::TY_SerializedDiagnostics: case file_types::TY_SerializedDiagnostics:
case file_types::TY_ClangModuleFile: case file_types::TY_ClangModuleFile:
@@ -132,6 +134,8 @@ bool file_types::isAfterLLVM(ID Id) {
case file_types::TY_SwiftModuleFile: case file_types::TY_SwiftModuleFile:
case file_types::TY_SwiftModuleDocFile: case file_types::TY_SwiftModuleDocFile:
case file_types::TY_SwiftSourceInfoFile: case file_types::TY_SwiftSourceInfoFile:
case file_types::TY_SwiftCrossImportDir:
case file_types::TY_SwiftOverlayFile:
case file_types::TY_SerializedDiagnostics: case file_types::TY_SerializedDiagnostics:
case file_types::TY_ClangModuleFile: case file_types::TY_ClangModuleFile:
case file_types::TY_SwiftDeps: case file_types::TY_SwiftDeps:
@@ -176,6 +180,8 @@ bool file_types::isPartOfSwiftCompilation(ID Id) {
case file_types::TY_SwiftModuleDocFile: case file_types::TY_SwiftModuleDocFile:
case file_types::TY_SwiftModuleInterfaceFile: case file_types::TY_SwiftModuleInterfaceFile:
case file_types::TY_SwiftSourceInfoFile: case file_types::TY_SwiftSourceInfoFile:
case file_types::TY_SwiftCrossImportDir:
case file_types::TY_SwiftOverlayFile:
case file_types::TY_SerializedDiagnostics: case file_types::TY_SerializedDiagnostics:
case file_types::TY_ClangModuleFile: case file_types::TY_ClangModuleFile:
case file_types::TY_SwiftDeps: case file_types::TY_SwiftDeps:

View File

@@ -1942,6 +1942,8 @@ void Driver::buildActions(SmallVectorImpl<const Action *> &TopLevelActions,
case file_types::TY_ModuleTrace: case file_types::TY_ModuleTrace:
case file_types::TY_OptRecord: case file_types::TY_OptRecord:
case file_types::TY_SwiftModuleInterfaceFile: case file_types::TY_SwiftModuleInterfaceFile:
case file_types::TY_SwiftCrossImportDir:
case file_types::TY_SwiftOverlayFile:
// We could in theory handle assembly or LLVM input, but let's not. // We could in theory handle assembly or LLVM input, but let's not.
// FIXME: What about LTO? // FIXME: What about LTO?
Diags.diagnose(SourceLoc(), diag::error_unexpected_input_file, Diags.diagnose(SourceLoc(), diag::error_unexpected_input_file,

View File

@@ -562,6 +562,8 @@ const char *ToolChain::JobContext::computeFrontendModeForCompile() const {
case file_types::TY_OptRecord: case file_types::TY_OptRecord:
case file_types::TY_SwiftModuleInterfaceFile: case file_types::TY_SwiftModuleInterfaceFile:
case file_types::TY_SwiftSourceInfoFile: case file_types::TY_SwiftSourceInfoFile:
case file_types::TY_SwiftCrossImportDir:
case file_types::TY_SwiftOverlayFile:
llvm_unreachable("Output type can never be primary output."); llvm_unreachable("Output type can never be primary output.");
case file_types::TY_INVALID: case file_types::TY_INVALID:
llvm_unreachable("Invalid type ID"); llvm_unreachable("Invalid type ID");
@@ -811,6 +813,8 @@ ToolChain::constructInvocation(const BackendJobAction &job,
case file_types::TY_OptRecord: case file_types::TY_OptRecord:
case file_types::TY_SwiftModuleInterfaceFile: case file_types::TY_SwiftModuleInterfaceFile:
case file_types::TY_SwiftSourceInfoFile: case file_types::TY_SwiftSourceInfoFile:
case file_types::TY_SwiftCrossImportDir:
case file_types::TY_SwiftOverlayFile:
llvm_unreachable("Output type can never be primary output."); llvm_unreachable("Output type can never be primary output.");
case file_types::TY_INVALID: case file_types::TY_INVALID:
llvm_unreachable("Invalid type ID"); llvm_unreachable("Invalid type ID");