Skip to content

Commit 3e802a8

Browse files
authored
Merge pull request #1114 from DavidGoldman/release/5.7
[5.7] Add support for the new `-index-ignore-clang-modules` flag
2 parents b1ed23b + 3add10e commit 3e802a8

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

Sources/SwiftDriver/Jobs/CompileJob.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ extension Driver {
338338
if !parsedOptions.contains(.indexIgnoreSystemModules) {
339339
commandLine.appendFlag(.indexSystemModules)
340340
}
341+
try commandLine.appendLast(.indexIgnoreClangModules, from: &parsedOptions)
341342
}
342343

343344
if parsedOptions.contains(.debugInfoStoreInvocation) ||

Sources/SwiftOptions/Options.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,7 @@ extension Option {
409409
public static let indentWidth: Option = Option("-indent-width", .separate, attributes: [.noInteractive, .noBatch, .indent], metaVar: "<n>", helpText: "Number of characters to indent.", group: .codeFormatting)
410410
public static let indexFilePath: Option = Option("-index-file-path", .separate, attributes: [.noInteractive, .doesNotAffectIncrementalBuild, .argumentIsPath], metaVar: "<path>", helpText: "Produce index data for file <path>")
411411
public static let indexFile: Option = Option("-index-file", .flag, attributes: [.noInteractive, .doesNotAffectIncrementalBuild], helpText: "Produce index data for a source file", group: .modes)
412+
public static let indexIgnoreClangModules: Option = Option("-index-ignore-clang-modules", .flag, attributes: [.frontend], helpText: "Avoid indexing clang modules (pcms)")
412413
public static let indexIgnoreStdlib: Option = Option("-index-ignore-stdlib", .flag, attributes: [.helpHidden, .frontend, .noDriver], helpText: "Avoid emitting index data for the standard library.")
413414
public static let indexIgnoreSystemModules: Option = Option("-index-ignore-system-modules", .flag, attributes: [.noInteractive], helpText: "Avoid indexing system modules")
414415
public static let indexStorePath: Option = Option("-index-store-path", .separate, attributes: [.frontend, .argumentIsPath], metaVar: "<path>", helpText: "Store indexing data to <path>")
@@ -1079,6 +1080,7 @@ extension Option {
10791080
Option.indentWidth,
10801081
Option.indexFilePath,
10811082
Option.indexFile,
1083+
Option.indexIgnoreClangModules,
10821084
Option.indexIgnoreStdlib,
10831085
Option.indexIgnoreSystemModules,
10841086
Option.indexStorePath,

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,22 @@ final class SwiftDriverTests: XCTestCase {
422422
}
423423
}
424424

425+
func testIndexIgnoreClangModules() throws {
426+
// Make sure `-index-ignore-clang-modules` isn't passed by default, only when explicitly given.
427+
try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-index-store-path", "/tmp/idx") { driver in
428+
let jobs = try driver.planBuild()
429+
let commandLine = jobs[0].commandLine
430+
XCTAssertTrue(commandLine.contains(.flag("-index-store-path")))
431+
XCTAssertFalse(commandLine.contains(.flag("-index-ignore-clang-modules")))
432+
}
433+
try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-index-store-path", "/tmp/idx", "-index-ignore-clang-modules") { driver in
434+
let jobs = try driver.planBuild()
435+
let commandLine = jobs[0].commandLine
436+
XCTAssertTrue(commandLine.contains(.flag("-index-store-path")))
437+
XCTAssertTrue(commandLine.contains(.flag("-index-ignore-clang-modules")))
438+
}
439+
}
440+
425441
func testMultiThreadingOutputs() throws {
426442
try assertDriverDiagnostics(args: "swiftc", "-c", "foo.swift", "bar.swift", "-o", "bar.ll", "-o", "foo.ll", "-num-threads", "2", "-whole-module-optimization") {
427443
$1.expect(.error("cannot specify -o when generating multiple output files"))

0 commit comments

Comments
 (0)