diff --git a/.chronus/changes/fix-model-properties-filter-2024-8-10-23-48-58.md b/.chronus/changes/fix-model-properties-filter-2024-8-10-23-48-58.md new file mode 100644 index 0000000000..18f47a48c1 --- /dev/null +++ b/.chronus/changes/fix-model-properties-filter-2024-8-10-23-48-58.md @@ -0,0 +1,8 @@ +--- +# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking +changeKind: fix +packages: + - "@azure-tools/typespec-client-generator-core" +--- + +fix-model-properties-filter-metadata diff --git a/packages/typespec-client-generator-core/src/types.ts b/packages/typespec-client-generator-core/src/types.ts index 5d4c997561..0c0db00126 100644 --- a/packages/typespec-client-generator-core/src/types.ts +++ b/packages/typespec-client-generator-core/src/types.ts @@ -39,6 +39,7 @@ import { getHttpPart, getServers, isHeader, + isMetadata, isOrExtendsHttpFile, isStatusCode, } from "@typespec/http"; @@ -1428,6 +1429,7 @@ function addPropertiesToModelType( if ( isStatusCode(context.program, property) || isNeverOrVoidType(property.type) || + isMetadata(context.program, property) || sdkType.kind !== "model" ) { continue; diff --git a/packages/typespec-client-generator-core/test/types/model-types.test.ts b/packages/typespec-client-generator-core/test/types/model-types.test.ts index 71e30c7796..c59e4ecffb 100644 --- a/packages/typespec-client-generator-core/test/types/model-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/model-types.test.ts @@ -1328,6 +1328,28 @@ describe("typespec-client-generator-core: model types", () => { strictEqual(catalog.properties.length, 2); strictEqual(deployment.properties.length, 2); }); + it("arm proxy resource template model", async () => { + await runner.compileWithBuiltInAzureResourceManagerService(` + @usage(Usage.input | Usage.output) + model Catalog is ProxyResource { + @pattern("^[A-Za-z0-9_-]{1,50}$") + @key("catalogName") + @segment("catalogs") + name: string; + } + + @usage(Usage.input | Usage.output) + model CatalogProperties { + test?: string; + } + `); + const models = runner.context.sdkPackage.models; + strictEqual(models.length, 4); + const catalog = models.find((x) => x.name === "Catalog"); + ok(catalog); + strictEqual(catalog.properties.length, 1); + strictEqual(catalog.properties[0].name, "properties"); + }); it("model with deprecated annotation", async () => { await runner.compileAndDiagnose(` @service({})