Skip to content

Commit 03a131f

Browse files
authored
Fix SwiftPM's dropdown showing on projects disabling the SwiftPM integration (#2011)
1 parent 6374a39 commit 03a131f

File tree

3 files changed

+15
-12
lines changed

3 files changed

+15
-12
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
### Fixed
66

77
- Fix the wrong toolchain being shown as selected when using swiftly v1.0.1 ([#2014](https://github.com/swiftlang/vscode-swift/pull/2014))
8+
- Fix extension displaying SwiftPM's project view and automatic build tasks even when `disableSwiftPMIntegration` was true ([#2011](https://github.com/swiftlang/vscode-swift/pull/2011))
89

910
## 2.14.3 - 2025-12-15
1011

src/SwiftPackage.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,16 @@ export interface PackagePlugin {
180180
type SwiftPackageState = PackageContents | Error | undefined;
181181

182182
function isPackage(state: SwiftPackageState): state is PackageContents {
183+
if (state === undefined) {
184+
return false;
185+
}
183186
return (state as PackageContents).products !== undefined;
184187
}
185188

186189
function isError(state: SwiftPackageState): state is Error {
190+
if (state === undefined) {
191+
return false;
192+
}
187193
return state instanceof Error;
188194
}
189195

@@ -262,14 +268,9 @@ export class SwiftPackage {
262268
toolchain: SwiftToolchain,
263269
disableSwiftPMIntegration: boolean = false
264270
): Promise<SwiftPackageState> {
265-
// When SwiftPM integration is disabled, return empty package structure
271+
// When SwiftPM integration is disabled, return undefined to disable all features
266272
if (disableSwiftPMIntegration) {
267-
return {
268-
name: path.basename(folder.fsPath),
269-
products: [],
270-
dependencies: [],
271-
targets: [],
272-
};
273+
return undefined;
273274
}
274275

275276
try {

test/integration-tests/SwiftPackage.test.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,29 +81,30 @@ tag("medium").suite("SwiftPackage Test Suite", function () {
8181
assert.strictEqual(spmPackage.resolved.pins[0].identity, "swift-log");
8282
});
8383

84-
test("Disabled SwiftPM integration returns empty package", async () => {
84+
test("Disabled SwiftPM integration returns undefined package", async () => {
8585
const spmPackage = await SwiftPackage.create(
8686
testAssetUri("package2"),
8787
toolchain,
8888
true // disableSwiftPMIntegration
8989
);
90-
assert.strictEqual(await spmPackage.isValid, true);
91-
assert.strictEqual(await spmPackage.name, "package2"); // derived from folder name
90+
assert.strictEqual(await spmPackage.isValid, false);
91+
assert.strictEqual(await spmPackage.foundPackage, false);
9292
assert.strictEqual((await spmPackage.executableProducts).length, 0);
9393
assert.strictEqual((await spmPackage.libraryProducts).length, 0);
9494
assert.strictEqual((await spmPackage.dependencies).length, 0);
9595
assert.strictEqual((await spmPackage.targets).length, 0);
9696
});
9797

98-
test("Reload with disabled SwiftPM integration returns empty package", async () => {
98+
test("Reload with disabled SwiftPM integration returns undefined package", async () => {
9999
const spmPackage = await SwiftPackage.create(testAssetUri("package2"), toolchain, false);
100100
// First verify it loaded normally
101101
assert.strictEqual(await spmPackage.isValid, true);
102102
assert.strictEqual((await spmPackage.libraryProducts).length, 1);
103103

104104
// Now reload with disabled integration
105105
await spmPackage.reload(toolchain, true);
106-
assert.strictEqual(await spmPackage.isValid, true);
106+
assert.strictEqual(await spmPackage.isValid, false);
107+
assert.strictEqual(await spmPackage.foundPackage, false);
107108
assert.strictEqual((await spmPackage.libraryProducts).length, 0);
108109
assert.strictEqual((await spmPackage.dependencies).length, 0);
109110
assert.strictEqual((await spmPackage.targets).length, 0);

0 commit comments

Comments
 (0)