From b2dfa87dd2ebf56ee292c6b4770ebe11eec52dc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexis=20Laferri=C3=A8re?= Date: Tue, 20 Feb 2024 17:23:49 -0800 Subject: [PATCH] Protect passing down the -no-verify flag on whether the frontend accepts it rdar://123345345 --- Sources/SwiftDriver/Jobs/FrontendJobHelpers.swift | 3 ++- Tests/SwiftDriverTests/SwiftDriverTests.swift | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Sources/SwiftDriver/Jobs/FrontendJobHelpers.swift b/Sources/SwiftDriver/Jobs/FrontendJobHelpers.swift index c5d6a099b..e8e17b9f4 100644 --- a/Sources/SwiftDriver/Jobs/FrontendJobHelpers.swift +++ b/Sources/SwiftDriver/Jobs/FrontendJobHelpers.swift @@ -423,7 +423,8 @@ extension Driver { // Pass along -no-verify-emitted-module-interface only if it's effective. // Assume verification by default as we want to know only when the user skips // the verification. - if !parsedOptions.hasFlag(positive: .verifyEmittedModuleInterface, + if isFrontendArgSupported(.noVerifyEmittedModuleInterface) && + !parsedOptions.hasFlag(positive: .verifyEmittedModuleInterface, negative: .noVerifyEmittedModuleInterface, default: true) { commandLine.appendFlag("-no-verify-emitted-module-interface") diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index 94ba6aacc..5a6168a22 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -5621,7 +5621,9 @@ final class SwiftDriverTests: XCTestCase { let plannedJobs = try driver.planBuild() XCTAssertEqual(plannedJobs.count, 2) let emitJob = try plannedJobs.findJob(.emitModule) - XCTAssertTrue(emitJob.commandLine.contains("-no-verify-emitted-module-interface")) + if driver.isFrontendArgSupported(.noVerifyEmittedModuleInterface) { + XCTAssertTrue(emitJob.commandLine.contains("-no-verify-emitted-module-interface")) + } } // Disabled by default in merge-module @@ -5694,7 +5696,9 @@ final class SwiftDriverTests: XCTestCase { let plannedJobs = try driver.planBuild() XCTAssertEqual(plannedJobs.count, 1) let compileJob = try plannedJobs.findJob(.compile) - XCTAssertTrue(compileJob.commandLine.contains("-no-verify-emitted-module-interface")) + if driver.isFrontendArgSupported(.noVerifyEmittedModuleInterface) { + XCTAssertTrue(compileJob.commandLine.contains("-no-verify-emitted-module-interface")) + } } // Enabled by default when the library-level is api.