Skip to content

Commit 778f829

Browse files
committed
[Frontend] Escape target names in dependencies output.
- <rdar://problem/23691798> swiftc does not properly quote spaces in output paths in dependency file target names
1 parent e11efcb commit 778f829

File tree

3 files changed

+14
-14
lines changed

3 files changed

+14
-14
lines changed

test/Frontend/dependencies.swift

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,39 @@
22

33
// RUN: rm -rf %t && mkdir %t
44

5-
// RUN: %target-swift-frontend -emit-dependencies-path - -parse %S/../Inputs/empty.swift | FileCheck -check-prefix=CHECK-BASIC %s
6-
// RUN: %target-swift-frontend -emit-reference-dependencies-path - -parse -primary-file %S/../Inputs/empty.swift | FileCheck -check-prefix=CHECK-BASIC-YAML %s
5+
// RUN: %target-swift-frontend -emit-dependencies-path - -parse %S/../Inputs/empty\ file.swift | FileCheck -check-prefix=CHECK-BASIC %s
6+
// RUN: %target-swift-frontend -emit-reference-dependencies-path - -parse -primary-file %S/../Inputs/empty\ file.swift | FileCheck -check-prefix=CHECK-BASIC-YAML %s
77

8-
// RUN: %target-swift-frontend -emit-dependencies-path %t.d -emit-reference-dependencies-path %t.swiftdeps -parse -primary-file %S/../Inputs/empty.swift
8+
// RUN: %target-swift-frontend -emit-dependencies-path %t.d -emit-reference-dependencies-path %t.swiftdeps -parse -primary-file %S/../Inputs/empty\ file.swift
99
// RUN: FileCheck -check-prefix=CHECK-BASIC %s < %t.d
1010
// RUN: FileCheck -check-prefix=CHECK-BASIC-YAML %s < %t.swiftdeps
1111

1212
// CHECK-BASIC-LABEL: - :
13-
// CHECK-BASIC: Inputs/empty.swift
13+
// CHECK-BASIC: Inputs/empty\ file.swift
1414
// CHECK-BASIC: Swift.swiftmodule
1515
// CHECK-BASIC-NOT: :
1616

1717
// CHECK-BASIC-YAML-LABEL: depends-external:
18-
// CHECK-BASIC-YAML-NOT: empty.swift
18+
// CHECK-BASIC-YAML-NOT: empty\ file.swift
1919
// CHECK-BASIC-YAML: "{{.*}}/Swift.swiftmodule"
2020
// CHECK-BASIC-YAML-NOT: {{:$}}
2121

2222

23-
// RUN: %target-swift-frontend -emit-dependencies-path %t.d -emit-reference-dependencies-path %t.swiftdeps -parse %S/../Inputs/empty.swift 2>&1 | FileCheck -check-prefix=NO-PRIMARY-FILE %s
23+
// RUN: %target-swift-frontend -emit-dependencies-path %t.d -emit-reference-dependencies-path %t.swiftdeps -parse %S/../Inputs/empty\ file.swift 2>&1 | FileCheck -check-prefix=NO-PRIMARY-FILE %s
2424

2525
// NO-PRIMARY-FILE: warning: ignoring -emit-reference-dependencies (requires -primary-file)
2626

2727

28-
// RUN: %target-swift-frontend -emit-dependencies-path - -emit-module %S/../Inputs/empty.swift -o %t/empty.swiftmodule -emit-module-doc-path %t/empty.swiftdoc -emit-objc-header-path %t/empty.h | FileCheck -check-prefix=CHECK-MULTIPLE-OUTPUTS %s
28+
// RUN: %target-swift-frontend -emit-dependencies-path - -emit-module %S/../Inputs/empty\ file.swift -o %t/empty\ file.swiftmodule -emit-module-doc-path %t/empty\ file.swiftdoc -emit-objc-header-path %t/empty\ file.h | FileCheck -check-prefix=CHECK-MULTIPLE-OUTPUTS %s
2929

30-
// CHECK-MULTIPLE-OUTPUTS-LABEL: empty.swiftmodule :
31-
// CHECK-MULTIPLE-OUTPUTS: Inputs/empty.swift
30+
// CHECK-MULTIPLE-OUTPUTS-LABEL: empty\ file.swiftmodule :
31+
// CHECK-MULTIPLE-OUTPUTS: Inputs/empty\ file.swift
3232
// CHECK-MULTIPLE-OUTPUTS: Swift.swiftmodule
33-
// CHECK-MULTIPLE-OUTPUTS-LABEL: empty.swiftdoc :
34-
// CHECK-MULTIPLE-OUTPUTS: Inputs/empty.swift
33+
// CHECK-MULTIPLE-OUTPUTS-LABEL: empty\ file.swiftdoc :
34+
// CHECK-MULTIPLE-OUTPUTS: Inputs/empty\ file.swift
3535
// CHECK-MULTIPLE-OUTPUTS: Swift.swiftmodule
36-
// CHECK-MULTIPLE-OUTPUTS-LABEL: empty.h :
37-
// CHECK-MULTIPLE-OUTPUTS: Inputs/empty.swift
36+
// CHECK-MULTIPLE-OUTPUTS-LABEL: empty\ file.h :
37+
// CHECK-MULTIPLE-OUTPUTS: Inputs/empty\ file.swift
3838
// CHECK-MULTIPLE-OUTPUTS: Swift.swiftmodule
3939
// CHECK-MULTIPLE-OUTPUTS-NOT: :
4040

test/Inputs/empty file.swift

Whitespace-only changes.

tools/driver/frontend_main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ static bool emitMakeDependencies(DiagnosticEngine &diags,
102102
// FIXME: Xcode can't currently handle multiple targets in a single
103103
// dependency line.
104104
opts.forAllOutputPaths([&](StringRef targetName) {
105-
out << targetName << " :";
105+
out << escape(targetName) << " :";
106106
// First include all other files in the module. Make-style dependencies
107107
// need to be conservative!
108108
for (StringRef path : opts.InputFilenames)

0 commit comments

Comments
 (0)