diff --git a/src/semver/Version.zig b/src/semver/Version.zig index 876a43b5f8..e3546863e6 100644 --- a/src/semver/Version.zig +++ b/src/semver/Version.zig @@ -326,18 +326,21 @@ pub const Version = extern struct { new_version.major +|= 1; new_version.minor = 0; new_version.patch = 0; - try pre_strings.writer().print("{s}.0", .{identifier orelse "0"}); + const id = if (identifier) |i| if (i.len > 0) i else "0" else "0"; + try pre_strings.writer().print("{s}.0", .{id}); new_version.tag.pre = ExternalString.from(pre_strings.items); }, .preminor => { new_version.minor +|= 1; new_version.patch = 0; - try pre_strings.writer().print("{s}.0", .{identifier orelse "0"}); + const id = if (identifier) |i| if (i.len > 0) i else "0" else "0"; + try pre_strings.writer().print("{s}.0", .{id}); new_version.tag.pre = ExternalString.from(pre_strings.items); }, .prepatch => { new_version.patch +|= 1; - try pre_strings.writer().print("{s}.0", .{identifier orelse "0"}); + const id = if (identifier) |i| if (i.len > 0) i else "0" else "0"; + try pre_strings.writer().print("{s}.0", .{id}); new_version.tag.pre = ExternalString.from(pre_strings.items); }, .release => { @@ -347,7 +350,8 @@ pub const Version = extern struct { if (!new_version.tag.hasPre()) { // Same as prepatch new_version.patch +|= 1; - try pre_strings.writer().print("{s}.0", .{identifier orelse "0"}); + const id = if (identifier) |i| if (i.len > 0) i else "0" else "0"; + try pre_strings.writer().print("{s}.0", .{id}); new_version.tag.pre = ExternalString.from(pre_strings.items); } else { // Increment existing prerelease diff --git a/test/cli/install/semver.test.ts b/test/cli/install/semver.test.ts index 868ee6548a..ee275ab70f 100644 --- a/test/cli/install/semver.test.ts +++ b/test/cli/install/semver.test.ts @@ -1178,7 +1178,7 @@ describe("Bun.semver negative tests", () => { // Note: non-string identifiers are converted to strings expect(Bun.semver.bump("1.2.3", "prerelease", 123 as any)).toBe("1.2.4-123.0"); expect(Bun.semver.bump("1.2.3", "prerelease", {} as any)).toBe("1.2.4-[object Object].0"); - expect(Bun.semver.bump("1.2.3", "prerelease", [] as any)).toBe("1.2.4-.0"); + expect(Bun.semver.bump("1.2.3", "prerelease", [] as any)).toBe("1.2.4-0.0"); expect(Bun.semver.bump("1.2.3", "prerelease", true as any)).toBe("1.2.4-true.0"); }); });