diff --git a/.chronus/changes/typespec-java-expose-required-fields-as-ctor-args-2026-07-24-11-40-00.md b/.chronus/changes/typespec-java-expose-required-fields-as-ctor-args-2026-07-24-11-40-00.md new file mode 100644 index 0000000000..1dfe606a73 --- /dev/null +++ b/.chronus/changes/typespec-java-expose-required-fields-as-ctor-args-2026-07-24-11-40-00.md @@ -0,0 +1,13 @@ +--- +changeKind: fix +packages: + - "@azure-tools/typespec-java" +--- + +Expose the `required-fields-as-ctor-args` emitter option in `tspconfig.yaml`. It controls whether required model properties are generated as constructor arguments. The default remains `true`. + +```yaml +options: + "@azure-tools/typespec-java": + required-fields-as-ctor-args: false +``` diff --git a/packages/typespec-java/core-commit.json b/packages/typespec-java/core-commit.json index 06499eb9e7..3747d26591 100644 --- a/packages/typespec-java/core-commit.json +++ b/packages/typespec-java/core-commit.json @@ -1 +1 @@ -{ "sha": "43ff00415eb571c0c9e2d1274f621a61886e4a9b" } +{ "sha": "ec09e28b3d2990734d1b54ebad85411adb148d12" } diff --git a/packages/typespec-java/src/options.ts b/packages/typespec-java/src/options.ts index 0e9be9e473..c8650cd595 100644 --- a/packages/typespec-java/src/options.ts +++ b/packages/typespec-java/src/options.ts @@ -110,6 +110,13 @@ export const EmitterOptionsSchema: JSONSchemaType = { nullable: true, default: true, }, + // "required-fields-as-ctor-args": { + // type: "boolean", + // description: + // "When set to `true`, required properties of the model are generated as constructor arguments; otherwise, they are generated as setter methods. Default value is `true`. This option is for backward-compatibility.", + // nullable: true, + // default: true, + // }, // customization ...UnbrandedSdkEmitterOptions["generate-protocol-methods"],