Skip to content

Commit f906c2d

Browse files
committed
Pass through the tools version of the package that declares the extension, which will control availability annotations in the PackageExtension module.
1 parent 69dc4de commit f906c2d

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

Sources/SPMBuildCore/ExtensionEvaluator.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ extension PackageGraph {
101101
let (extensionOutput, emittedText) = try runExtension(
102102
sources: extTarget.sources,
103103
input: extensionInput,
104+
toolsVersion: package.manifest.toolsVersion,
104105
extensionRunner: extensionRunner,
105106
diagnostics: diagnostics,
106107
fileSystem: fileSystem
@@ -161,13 +162,13 @@ extension PackageGraph {
161162

162163
/// Private helper function that serializes an ExtensionEvaluationInput as input JSON, calls the extension runner to invoke the extension, and finally deserializes the output JSON it emits to a ExtensionEvaluationOutput. Adds any errors or warnings to `diagnostics`, and throws an error if there was a failure.
163164
/// FIXME: This should be asynchronous, taking a queue and a completion closure.
164-
fileprivate func runExtension(sources: Sources, input: ExtensionEvaluationInput, extensionRunner: ExtensionRunner, diagnostics: DiagnosticsEngine, fileSystem: FileSystem) throws -> (output: ExtensionEvaluationOutput, stdoutText: Data) {
165+
fileprivate func runExtension(sources: Sources, input: ExtensionEvaluationInput, toolsVersion: ToolsVersion, extensionRunner: ExtensionRunner, diagnostics: DiagnosticsEngine, fileSystem: FileSystem) throws -> (output: ExtensionEvaluationOutput, stdoutText: Data) {
165166
// Serialize the ExtensionEvaluationInput to JSON.
166167
let encoder = JSONEncoder()
167168
let inputJSON = try encoder.encode(input)
168169

169170
// Call the extension runner.
170-
let (outputJSON, stdoutText) = try extensionRunner.runExtension(sources: sources, inputJSON: inputJSON, diagnostics: diagnostics, fileSystem: fileSystem)
171+
let (outputJSON, stdoutText) = try extensionRunner.runExtension(sources: sources, inputJSON: inputJSON, toolsVersion: toolsVersion, diagnostics: diagnostics, fileSystem: fileSystem)
171172

172173
// Deserialize the JSON to an ExtensionEvaluationOutput.
173174
let output: ExtensionEvaluationOutput
@@ -278,6 +279,7 @@ public protocol ExtensionRunner {
278279
func runExtension(
279280
sources: Sources,
280281
inputJSON: Data,
282+
toolsVersion: ToolsVersion,
281283
diagnostics: DiagnosticsEngine,
282284
fileSystem: FileSystem
283285
) throws -> (outputJSON: Data, stdoutText: Data)

Tests/SPMBuildCoreTests/ExtensionEvaluationTests.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ class ExtensionEvaluationTests: XCTestCase {
8787
func runExtension(
8888
sources: Sources,
8989
inputJSON: Data,
90+
toolsVersion: ToolsVersion,
9091
diagnostics: DiagnosticsEngine,
9192
fileSystem: FileSystem
9293
) throws -> (outputJSON: Data, stdoutText: Data) {

0 commit comments

Comments
 (0)