Skip to content

Commit

Permalink
[tcgc] add visibility to non-body properties (#2163)
Browse files Browse the repository at this point in the history
fixes #2122

---------

Co-authored-by: iscai-msft <[email protected]>
  • Loading branch information
iscai-msft and iscai-msft authored Feb 4, 2025
1 parent a6fa00a commit e3407ae
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 2 deletions.
7 changes: 7 additions & 0 deletions .chronus/changes/tcgc-visibilityHeader-2025-1-3-16-4-24.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
changeKind: fix
packages:
- "@azure-tools/typespec-client-generator-core"
---

add visibility for other properties
2 changes: 1 addition & 1 deletion packages/typespec-client-generator-core/src/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,7 @@ export interface SdkModelPropertyTypeBase extends DecoratedType {
isApiVersionParam: boolean;
optional: boolean;
crossLanguageDefinitionId: string;
visibility?: Visibility[];
}

/**
Expand Down Expand Up @@ -585,7 +586,6 @@ export interface SdkBodyModelPropertyType extends SdkModelPropertyTypeBase {
* @deprecated This property is deprecated. Use `serializationOptions.multipart` instead.
*/
multipartOptions?: MultipartOptions;
visibility?: Visibility[];
flatten: boolean;
}

Expand Down
2 changes: 1 addition & 1 deletion packages/typespec-client-generator-core/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1163,6 +1163,7 @@ export function getSdkModelPropertyTypeBase(
onClient,
crossLanguageDefinitionId: getCrossLanguageDefinitionId(context, type, operation),
decorators: diagnostics.pipe(getTypeDecorators(context, type)),
visibility: getSdkVisibility(context, type),
});
}

Expand Down Expand Up @@ -1317,7 +1318,6 @@ export function getSdkModelPropertyType(
...base,
kind: "property",
optional: type.optional,
visibility: getSdkVisibility(context, type),
discriminator: false,
serializedName: getPropertyNames(context, type)[1],
isMultipartFileInput: false,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { AzureCoreTestLibrary } from "@azure-tools/typespec-azure-core/testing";
import { Visibility } from "@typespec/http";
import { deepStrictEqual, ok, strictEqual } from "assert";
import { beforeEach, describe, it } from "vitest";
import { SdkModelType, UsageFlags } from "../../src/interfaces.js";
Expand Down Expand Up @@ -1787,4 +1788,26 @@ describe("typespec-client-generator-core: model types", () => {
strictEqual(models.length, 1);
strictEqual(models[0].properties.length, 1);
});

it("header property on body root model visibility", async function () {
await runner.compileWithBuiltInService(`
model InputModel {
@visibility("read")
@header("x-name")
name: string;
}
op foo(@bodyRoot body: InputModel): void;
`);
const sdkPackage = runner.context.sdkPackage;
strictEqual(sdkPackage.models.length, 1);
const inputModel = sdkPackage.models[0];
strictEqual(inputModel.name, "InputModel");
strictEqual(inputModel.properties.length, 1);
const nameProperty = inputModel.properties[0];
strictEqual(nameProperty.name, "name");
strictEqual(nameProperty.kind, "header");
ok(nameProperty.visibility);
strictEqual(nameProperty.visibility.length, 1);
strictEqual(nameProperty.visibility[0], Visibility.Read);
});
});

0 comments on commit e3407ae

Please sign in to comment.