From 750c639347a44d40e19a1e23e2eb21dd72a56788 Mon Sep 17 00:00:00 2001 From: Allan Shortlidge Date: Fri, 13 Oct 2023 09:57:41 -0700 Subject: [PATCH] Add -experimental-skip-non-exportable-decls to lazy typechecking emit module jobs. Resolves rdar://115731361 --- Sources/SwiftDriver/Jobs/EmitModuleJob.swift | 8 +++++--- Tests/SwiftDriverTests/SwiftDriverTests.swift | 4 +--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Sources/SwiftDriver/Jobs/EmitModuleJob.swift b/Sources/SwiftDriver/Jobs/EmitModuleJob.swift index f3ce52dac..716aed81b 100644 --- a/Sources/SwiftDriver/Jobs/EmitModuleJob.swift +++ b/Sources/SwiftDriver/Jobs/EmitModuleJob.swift @@ -85,6 +85,11 @@ extension Driver { commandLine.appendFlags("-frontend", "-emit-module", "-experimental-skip-non-inlinable-function-bodies-without-types") + if parsedOptions.hasArgument(.experimentalLazyTypecheck) { + commandLine.appendFlag("-experimental-lazy-typecheck") + commandLine.appendFlag("-experimental-skip-non-exportable-decls") + } + // Add the inputs. for input in self.inputFiles where input.type.isPartOfSwiftCompilation { commandLine.append(.path(input.file)) @@ -103,9 +108,6 @@ extension Driver { try addCommonSymbolGraphOptions(commandLine: &commandLine) try commandLine.appendLast(.checkApiAvailabilityOnly, from: &parsedOptions) - if isFrontendArgSupported(.experimentalLazyTypecheck) { - try commandLine.appendLast(.experimentalLazyTypecheck, from: &parsedOptions) - } if parsedOptions.hasArgument(.parseAsLibrary, .emitLibrary) { commandLine.appendFlag(.parseAsLibrary) diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index 2848293bd..01732b6d2 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -7221,12 +7221,10 @@ final class SwiftDriverTests: XCTestCase { var driver = try Driver(args: [ "swiftc", "test.swift", "-module-name", "Test", "-experimental-lazy-typecheck", "-emit-module-interface" ]) - guard driver.isFrontendArgSupported(.experimentalLazyTypecheck) else { - throw XCTSkip("Skipping: compiler does not support '-experimental-lazy-typecheck'") - } let jobs = try driver.planBuild().removingAutolinkExtractJobs() let emitModuleJob = try XCTUnwrap(jobs.first(where: {$0.kind == .emitModule})) XCTAssertTrue(emitModuleJob.commandLine.contains(.flag("-experimental-lazy-typecheck"))) + XCTAssertTrue(emitModuleJob.commandLine.contains(.flag("-experimental-skip-non-exportable-decls"))) } func testEmitAPIDescriptorEmitModule() throws {