From 2fe21be1da66f08853a60e4806801a49756dacfb Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Fri, 13 Sep 2024 14:39:11 -0700 Subject: [PATCH 1/3] Fix x-ms-identifier not working with inheritance --- .../src/rules/missing-x-ms-identifiers.ts | 2 +- .../rules/missing-x-ms-identifiers.test.ts | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/typespec-azure-resource-manager/src/rules/missing-x-ms-identifiers.ts b/packages/typespec-azure-resource-manager/src/rules/missing-x-ms-identifiers.ts index cb68b2b7a8..e310ba27d6 100644 --- a/packages/typespec-azure-resource-manager/src/rules/missing-x-ms-identifiers.ts +++ b/packages/typespec-azure-resource-manager/src/rules/missing-x-ms-identifiers.ts @@ -60,7 +60,7 @@ export const missingXmsIdentifiersRule = createRule({ if (Array.isArray(xmsIdentifiers)) { for (const prop of xmsIdentifiers) { if (typeof prop === "string") { - if (!elementType.properties.has(prop)) { + if (getProperty(elementType, prop) === undefined) { context.reportDiagnostic({ messageId: "missingProperty", format: { propertyName: prop, targetModelName: elementType.name }, diff --git a/packages/typespec-azure-resource-manager/test/rules/missing-x-ms-identifiers.test.ts b/packages/typespec-azure-resource-manager/test/rules/missing-x-ms-identifiers.test.ts index 9f2b972ce0..99c273e7d1 100644 --- a/packages/typespec-azure-resource-manager/test/rules/missing-x-ms-identifiers.test.ts +++ b/packages/typespec-azure-resource-manager/test/rules/missing-x-ms-identifiers.test.ts @@ -95,6 +95,26 @@ describe("typespec-azure-core: no-enum rule", () => { ) .toBeValid(); }); + + it(`doesn't emit diagnostic if x-ms-identifiers property is defined in a base class`, async () => { + await tester + .expect( + ` + model Foo { + @OpenAPI.extension("x-ms-identifiers", ["name"]) + bar: Child[]; + } + + model Child extends Base { + other: string; + } + + model Base { name: string;} + ` + ) + .toBeValid(); + }); + it(`doesn't emit diagnostic if element is a primitive type`, async () => { await tester .expect( From a628f46cf66c600fde64fcdb695e8bcbc1508e1a Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Fri, 13 Sep 2024 14:48:15 -0700 Subject: [PATCH 2/3] Create fix-x-ms-identifier-inheritance-2024-8-13-21-41-26.md --- .../fix-x-ms-identifier-inheritance-2024-8-13-21-41-26.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .chronus/changes/fix-x-ms-identifier-inheritance-2024-8-13-21-41-26.md diff --git a/.chronus/changes/fix-x-ms-identifier-inheritance-2024-8-13-21-41-26.md b/.chronus/changes/fix-x-ms-identifier-inheritance-2024-8-13-21-41-26.md new file mode 100644 index 0000000000..9e37ed0779 --- /dev/null +++ b/.chronus/changes/fix-x-ms-identifier-inheritance-2024-8-13-21-41-26.md @@ -0,0 +1,8 @@ +--- +# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking +changeKind: fix +packages: + - "@azure-tools/typespec-azure-resource-manager" +--- + +Fix missing-x-ms-identifier rule not checking base class for properties From a50eab0553197867d00966f675fd4853a6459624 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Wed, 2 Oct 2024 14:19:57 -0700 Subject: [PATCH 3/3] format --- .../test/rules/missing-x-ms-identifiers.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/typespec-azure-resource-manager/test/rules/missing-x-ms-identifiers.test.ts b/packages/typespec-azure-resource-manager/test/rules/missing-x-ms-identifiers.test.ts index 0d1ee5eff7..d0bbe77c26 100644 --- a/packages/typespec-azure-resource-manager/test/rules/missing-x-ms-identifiers.test.ts +++ b/packages/typespec-azure-resource-manager/test/rules/missing-x-ms-identifiers.test.ts @@ -110,7 +110,7 @@ describe("typespec-azure-core: no-enum rule", () => { } model Base { name: string;} - ` + `, ) .toBeValid(); });