agent_patch
runs/2026-02-27__21-30-28__gpt-5-4/flux-pr-3535/flux-pr-3535.1-of-1.2026-02-27__21-30-28__gpt-5-4/agent-logs/agent.patch
5424 bytes
diff --git a/tmp/agent-patch-flux-pr-3535.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/deno/lib/__tests__/discriminated-unions.test.ts b/app/deno/lib/__tests__/discriminated-unions.test.ts
index bff0cda..393e52e 100644
--- a/tmp/agent-patch-flux-pr-3535.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/deno/lib/__tests__/discriminated-unions.test.ts
+++ b/app/deno/lib/__tests__/discriminated-unions.test.ts
@@ -63,6 +63,22 @@ test("valid - discriminator value of various primitive types", () => {
});
});
+test("readonly options", () => {
+ const options = [
+ z.object({ type: z.literal("a"), a: z.string() }),
+ z.object({ type: z.literal("b"), b: z.number() }),
+ ] as const;
+ const schema = z.discriminatedUnion("type", options);
+
+ z.util.assertEqual<
+ z.infer<typeof schema>,
+ { type: "a"; a: string } | { type: "b"; b: number }
+ >(true);
+
+ schema.parse({ type: "a", a: "abc" });
+ schema.parse({ type: "b", b: 123 });
+});
+
test("invalid - null", () => {
try {
z.discriminatedUnion("type", [
diff --git a/tmp/agent-patch-flux-pr-3535.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/deno/lib/types.ts b/app/deno/lib/types.ts
index 19bbdd6..84087c6 100644
--- a/tmp/agent-patch-flux-pr-3535.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/deno/lib/types.ts
+++ b/app/deno/lib/types.ts
@@ -3163,9 +3163,17 @@ export type ZodDiscriminatedUnionOption<Discriminator extends string> =
ZodTypeAny
>;
+export type ZodDiscriminatedUnionOptions<Discriminator extends string> =
+ Readonly<
+ [
+ ZodDiscriminatedUnionOption<Discriminator>,
+ ...ZodDiscriminatedUnionOption<Discriminator>[]
+ ]
+ >;
+
export interface ZodDiscriminatedUnionDef<
Discriminator extends string,
- Options extends ZodDiscriminatedUnionOption<string>[] = ZodDiscriminatedUnionOption<string>[]
+ Options extends ZodDiscriminatedUnionOptions<string> = ZodDiscriminatedUnionOptions<string>
> extends ZodTypeDef {
discriminator: Discriminator;
options: Options;
@@ -3175,7 +3183,7 @@ export interface ZodDiscriminatedUnionDef<
export class ZodDiscriminatedUnion<
Discriminator extends string,
- Options extends ZodDiscriminatedUnionOption<Discriminator>[]
+ Options extends ZodDiscriminatedUnionOptions<Discriminator>
> extends ZodType<
output<Options[number]>,
ZodDiscriminatedUnionDef<Discriminator, Options>,
@@ -3245,10 +3253,7 @@ export class ZodDiscriminatedUnion<
*/
static create<
Discriminator extends string,
- Types extends [
- ZodDiscriminatedUnionOption<Discriminator>,
- ...ZodDiscriminatedUnionOption<Discriminator>[]
- ]
+ Types extends ZodDiscriminatedUnionOptions<Discriminator>
>(
discriminator: Discriminator,
options: Types,
diff --git a/tmp/agent-patch-flux-pr-3535.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/src/__tests__/discriminated-unions.test.ts b/app/src/__tests__/discriminated-unions.test.ts
index 9d8e7b6..af3a159 100644
--- a/tmp/agent-patch-flux-pr-3535.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/src/__tests__/discriminated-unions.test.ts
+++ b/app/src/__tests__/discriminated-unions.test.ts
@@ -62,6 +62,22 @@ test("valid - discriminator value of various primitive types", () => {
});
});
+test("readonly options", () => {
+ const options = [
+ z.object({ type: z.literal("a"), a: z.string() }),
+ z.object({ type: z.literal("b"), b: z.number() }),
+ ] as const;
+ const schema = z.discriminatedUnion("type", options);
+
+ z.util.assertEqual<
+ z.infer<typeof schema>,
+ { type: "a"; a: string } | { type: "b"; b: number }
+ >(true);
+
+ schema.parse({ type: "a", a: "abc" });
+ schema.parse({ type: "b", b: 123 });
+});
+
test("invalid - null", () => {
try {
z.discriminatedUnion("type", [
diff --git a/tmp/agent-patch-flux-pr-3535.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/src/types.ts b/app/src/types.ts
index bbb857a..66d94e0 100644
--- a/tmp/agent-patch-flux-pr-3535.1-of-1.2026-02-27__21-30-28__gpt-5-4/app/src/types.ts
+++ b/app/src/types.ts
@@ -3163,9 +3163,17 @@ export type ZodDiscriminatedUnionOption<Discriminator extends string> =
ZodTypeAny
>;
+export type ZodDiscriminatedUnionOptions<Discriminator extends string> =
+ Readonly<
+ [
+ ZodDiscriminatedUnionOption<Discriminator>,
+ ...ZodDiscriminatedUnionOption<Discriminator>[]
+ ]
+ >;
+
export interface ZodDiscriminatedUnionDef<
Discriminator extends string,
- Options extends ZodDiscriminatedUnionOption<string>[] = ZodDiscriminatedUnionOption<string>[]
+ Options extends ZodDiscriminatedUnionOptions<string> = ZodDiscriminatedUnionOptions<string>
> extends ZodTypeDef {
discriminator: Discriminator;
options: Options;
@@ -3175,7 +3183,7 @@ export interface ZodDiscriminatedUnionDef<
export class ZodDiscriminatedUnion<
Discriminator extends string,
- Options extends ZodDiscriminatedUnionOption<Discriminator>[]
+ Options extends ZodDiscriminatedUnionOptions<Discriminator>
> extends ZodType<
output<Options[number]>,
ZodDiscriminatedUnionDef<Discriminator, Options>,
@@ -3245,10 +3253,7 @@ export class ZodDiscriminatedUnion<
*/
static create<
Discriminator extends string,
- Types extends [
- ZodDiscriminatedUnionOption<Discriminator>,
- ...ZodDiscriminatedUnionOption<Discriminator>[]
- ]
+ Types extends ZodDiscriminatedUnionOptions<Discriminator>
>(
discriminator: Discriminator,
options: Types,