diff --git a/packages/quicktype-core/src/language/Dart/DartRenderer.ts b/packages/quicktype-core/src/language/Dart/DartRenderer.ts index f5220d2505..3c24da88df 100644 --- a/packages/quicktype-core/src/language/Dart/DartRenderer.ts +++ b/packages/quicktype-core/src/language/Dart/DartRenderer.ts @@ -603,7 +603,8 @@ export class DartRenderer extends ConvenienceRenderer { (transformedStringType.isNullable || isNullable) ) { return [ - '"${', + dynamic, + ' == null ? null : "${', dynamic, "!.year.toString().padLeft(4, '0')", "}-${", diff --git a/test/inputs/json/priority/bug2590.json b/test/inputs/json/priority/bug2590.json new file mode 100644 index 0000000000..60e067955a --- /dev/null +++ b/test/inputs/json/priority/bug2590.json @@ -0,0 +1,14 @@ +{ + "invoices": [ + { + "name": "invoice-1", + "dueDate": "2023-01-15", + "createdAt": "2023-01-15T10:30:00Z" + }, + { + "name": "invoice-2", + "dueDate": null, + "createdAt": null + } + ] +} diff --git a/test/languages.ts b/test/languages.ts index a31f78b6f5..c9cdccdab2 100644 --- a/test/languages.ts +++ b/test/languages.ts @@ -1563,6 +1563,9 @@ export const TypeScriptZodLanguage: Language = { // Does not handle top level array "bug863.json", + // z.coerce.date() coerces null to the Unix epoch: #2880 + "bug2590.json", + "no-classes.json", "00c36.json", "10be4.json",