Skip to content

Commit c7a5049

Browse files
committed
Separate the C++ and Objective-C generated header output types.
Otherwise, when an output file map is provided, we'll use the same path for both. Fixes rdar://87987062.
1 parent bc74ac7 commit c7a5049

File tree

5 files changed

+11
-3
lines changed

5 files changed

+11
-3
lines changed

include/swift/Basic/FileTypes.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ TYPE("llvm-ir", LLVM_IR, "ll", "")
6060
TYPE("llvm-bc", LLVM_BC, "bc", "")
6161
TYPE("diagnostics", SerializedDiagnostics, "dia", "")
6262
TYPE("objc-header", ObjCHeader, "h", "")
63+
TYPE("cxx-header", CXXHeader, "h", "")
6364
TYPE("swift-dependencies", SwiftDeps, "swiftdeps", "")
6465
TYPE("external-swift-dependencies", ExternalSwiftDeps, "swiftdeps.external", "")
6566
TYPE("remap", Remapping, "remap", "")

lib/Basic/FileTypes.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ bool file_types::isTextual(ID Id) {
7474
case file_types::TY_RawSIL:
7575
case file_types::TY_LLVM_IR:
7676
case file_types::TY_ObjCHeader:
77+
case file_types::TY_CXXHeader:
7778
case file_types::TY_AutolinkFile:
7879
case file_types::TY_ImportedModules:
7980
case file_types::TY_TBD:
@@ -132,6 +133,7 @@ bool file_types::isAfterLLVM(ID Id) {
132133
case file_types::TY_ASTDump:
133134
case file_types::TY_RawSIL:
134135
case file_types::TY_ObjCHeader:
136+
case file_types::TY_CXXHeader:
135137
case file_types::TY_AutolinkFile:
136138
case file_types::TY_Image:
137139
case file_types::TY_dSYM:
@@ -182,6 +184,7 @@ bool file_types::isPartOfSwiftCompilation(ID Id) {
182184
case file_types::TY_Object:
183185
case file_types::TY_Dependencies:
184186
case file_types::TY_ObjCHeader:
187+
case file_types::TY_CXXHeader:
185188
case file_types::TY_AutolinkFile:
186189
case file_types::TY_PCH:
187190
case file_types::TY_ImportedModules:

lib/Driver/Driver.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1980,7 +1980,8 @@ void Driver::buildActions(SmallVectorImpl<const Action *> &TopLevelActions,
19801980
if (Arg *A = Args.getLastArg(options::OPT_import_objc_header)) {
19811981
StringRef Value = A->getValue();
19821982
auto Ty = TC.lookupTypeForExtension(llvm::sys::path::extension(Value));
1983-
if (Ty == file_types::TY_ObjCHeader) {
1983+
if (Ty == file_types::TY_ObjCHeader ||
1984+
Ty == file_types::TY_CXXHeader) {
19841985
auto *HeaderInput = C.createAction<InputAction>(*A, Ty);
19851986
StringRef PersistentPCHDir;
19861987
if (const Arg *A = Args.getLastArg(options::OPT_pch_output_dir)) {
@@ -2064,6 +2065,7 @@ void Driver::buildActions(SmallVectorImpl<const Action *> &TopLevelActions,
20642065
case file_types::TY_LLVM_BC:
20652066
case file_types::TY_SerializedDiagnostics:
20662067
case file_types::TY_ObjCHeader:
2068+
case file_types::TY_CXXHeader:
20672069
case file_types::TY_ClangModuleFile:
20682070
case file_types::TY_SwiftDeps:
20692071
case file_types::TY_ExternalSwiftDeps:

lib/Driver/ToolChains.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -667,6 +667,7 @@ const char *ToolChain::JobContext::computeFrontendModeForCompile() const {
667667
case file_types::TY_SwiftModuleDocFile:
668668
case file_types::TY_SerializedDiagnostics:
669669
case file_types::TY_ObjCHeader:
670+
case file_types::TY_CXXHeader:
670671
case file_types::TY_Image:
671672
case file_types::TY_SwiftDeps:
672673
case file_types::TY_ExternalSwiftDeps:
@@ -927,6 +928,7 @@ ToolChain::constructInvocation(const BackendJobAction &job,
927928
case file_types::TY_SwiftModuleDocFile:
928929
case file_types::TY_SerializedDiagnostics:
929930
case file_types::TY_ObjCHeader:
931+
case file_types::TY_CXXHeader:
930932
case file_types::TY_Image:
931933
case file_types::TY_SwiftDeps:
932934
case file_types::TY_ExternalSwiftDeps:

lib/Frontend/ArgsToFrontendOutputsConverter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ SupplementaryOutputPathsComputer::computeOutputPathsForOneInput(
444444

445445
auto cxxHeaderOutputPath = determineSupplementaryOutputFilename(
446446
OPT_emit_cxx_header, pathsFromArguments.CxxHeaderOutputPath,
447-
file_types::TY_ObjCHeader, "",
447+
file_types::TY_CXXHeader, "",
448448
defaultSupplementaryOutputPathExcludingExtension);
449449

450450
auto loadedModuleTracePath = determineSupplementaryOutputFilename(
@@ -587,7 +587,7 @@ createFromTypeToPathMap(const TypeToPathMap *map) {
587587
return paths;
588588
const std::pair<file_types::ID, std::string &> typesAndStrings[] = {
589589
{file_types::TY_ObjCHeader, paths.ObjCHeaderOutputPath},
590-
{file_types::TY_ObjCHeader, paths.CxxHeaderOutputPath},
590+
{file_types::TY_CXXHeader, paths.CxxHeaderOutputPath},
591591
{file_types::TY_SwiftModuleFile, paths.ModuleOutputPath},
592592
{file_types::TY_SwiftModuleDocFile, paths.ModuleDocOutputPath},
593593
{file_types::TY_SwiftSourceInfoFile, paths.ModuleSourceInfoOutputPath},

0 commit comments

Comments
 (0)