diff --git a/.chronus/changes/uptake-object-literals-2024-2-19-2-42-4.md b/.chronus/changes/uptake-object-literals-2024-2-19-2-42-4.md new file mode 100644 index 0000000000..7cdba67a7d --- /dev/null +++ b/.chronus/changes/uptake-object-literals-2024-2-19-2-42-4.md @@ -0,0 +1,8 @@ +--- +# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking +changeKind: fix +packages: + - "@azure-tools/typespec-autorest" +--- + +Add support for tuple literals as default values diff --git a/.chronus/changes/uptake-object-literals-2024-2-19-2-47-33.md b/.chronus/changes/uptake-object-literals-2024-2-19-2-47-33.md new file mode 100644 index 0000000000..fbd98bdd8e --- /dev/null +++ b/.chronus/changes/uptake-object-literals-2024-2-19-2-47-33.md @@ -0,0 +1,9 @@ +--- +# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking +changeKind: feature +packages: + - "@azure-tools/typespec-azure-core" + - "@azure-tools/typespec-azure-resource-manager" +--- + +Add support for values diff --git a/.chronus/changes/uptake-object-literals-2024-2-19-3-23-18.md b/.chronus/changes/uptake-object-literals-2024-2-19-3-23-18.md new file mode 100644 index 0000000000..ae7f47347f --- /dev/null +++ b/.chronus/changes/uptake-object-literals-2024-2-19-3-23-18.md @@ -0,0 +1,8 @@ +--- +# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking +changeKind: feature +packages: + - "@azure-tools/typespec-client-generator-core" +--- + +Add support for values diff --git a/core b/core index dec504364c..7ec17161b7 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit dec504364c90ff0769e2733326681e717c06f589 +Subproject commit 7ec17161b78117737660506b424b8a133e477cfc diff --git a/docs/libraries/azure-core/reference/data-types.md b/docs/libraries/azure-core/reference/data-types.md index ef2bbafe6f..56935331bd 100644 --- a/docs/libraries/azure-core/reference/data-types.md +++ b/docs/libraries/azure-core/reference/data-types.md @@ -427,10 +427,10 @@ model Azure.Core.StatusMonitorOptions #### Properties -| Name | Type | Description | -| -------------- | ---------------------------- | --------------------------------------------------------------------------------------- | -| kind | `"statusMonitor"` | The kind of polling options | -| finalProperty? | `ModelProperty \| ErrorType` | A reference to or name of the property of the status monitor that contains the response | +| Name | Type | Description | +| -------------- | ------------------------- | --------------------------------------------------------------------------------------- | +| kind | `"statusMonitor"` | The kind of polling options | +| finalProperty? | `ModelProperty \| string` | A reference to or name of the property of the status monitor that contains the response | ### `StatusMonitorPollingOptions` {#Azure.Core.StatusMonitorPollingOptions} diff --git a/docs/libraries/azure-core/reference/interfaces.md b/docs/libraries/azure-core/reference/interfaces.md index 8e615e7167..7ed271e946 100644 --- a/docs/libraries/azure-core/reference/interfaces.md +++ b/docs/libraries/azure-core/reference/interfaces.md @@ -28,7 +28,7 @@ interface Azure.Core.ResourceOperations Create or replace operation template. ```typespec -op Azure.Core.ResourceOperations.ResourceCreateOrReplace(apiVersion: string, resource: Resource): (anonymous model) | (anonymous model) | ErrorResponse +op Azure.Core.ResourceOperations.ResourceCreateOrReplace(apiVersion: string, resource: Resource): { statusCode: 201 } | { statusCode: 200 } | ErrorResponse ``` ##### Template Parameters @@ -43,7 +43,7 @@ op Azure.Core.ResourceOperations.ResourceCreateOrReplace(apiVersion: string, res Long-running resource create or replace operation template. ```typespec -op Azure.Core.ResourceOperations.LongRunningResourceCreateOrReplace(apiVersion: string, resource: Resource): (anonymous model) | (anonymous model) | ErrorResponse +op Azure.Core.ResourceOperations.LongRunningResourceCreateOrReplace(apiVersion: string, resource: Resource): { statusCode: 201, operationLocation: TypeSpec.Rest.ResourceLocation } | { statusCode: 200, operationLocation: TypeSpec.Rest.ResourceLocation } | ErrorResponse ``` ##### Template Parameters @@ -58,7 +58,7 @@ op Azure.Core.ResourceOperations.LongRunningResourceCreateOrReplace(apiVersion: Create or update operation template. ```typespec -op Azure.Core.ResourceOperations.ResourceCreateOrUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): (anonymous model) | (anonymous model) | ErrorResponse +op Azure.Core.ResourceOperations.ResourceCreateOrUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): { statusCode: 201 } | { statusCode: 200 } | ErrorResponse ``` ##### Template Parameters @@ -73,7 +73,7 @@ op Azure.Core.ResourceOperations.ResourceCreateOrUpdate(apiVersion: string, cont Long-running resource create or update operation template. ```typespec -op Azure.Core.ResourceOperations.LongRunningResourceCreateOrUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): (anonymous model) | (anonymous model) | ErrorResponse +op Azure.Core.ResourceOperations.LongRunningResourceCreateOrUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): { statusCode: 201, operationLocation: TypeSpec.Rest.ResourceLocation } | { statusCode: 200, operationLocation: TypeSpec.Rest.ResourceLocation } | ErrorResponse ``` ##### Template Parameters @@ -88,7 +88,7 @@ op Azure.Core.ResourceOperations.LongRunningResourceCreateOrUpdate(apiVersion: s Resource update operation template. ```typespec -op Azure.Core.ResourceOperations.ResourceUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): (anonymous model) | ErrorResponse +op Azure.Core.ResourceOperations.ResourceUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): { statusCode: 200 } | ErrorResponse ``` ##### Template Parameters @@ -103,7 +103,7 @@ op Azure.Core.ResourceOperations.ResourceUpdate(apiVersion: string, contentType: Resource create with service-provided name operation template. ```typespec -op Azure.Core.ResourceOperations.ResourceCreateWithServiceProvidedName(apiVersion: string, resource: Resource): Azure.Core.(anonymous model) | ErrorResponse +op Azure.Core.ResourceOperations.ResourceCreateWithServiceProvidedName(apiVersion: string, resource: Resource): Azure.Core.{ statusCode: 201, location: TypeSpec.Rest.ResourceLocation } | ErrorResponse ``` ##### Template Parameters @@ -118,7 +118,7 @@ op Azure.Core.ResourceOperations.ResourceCreateWithServiceProvidedName(apiVersio Long-running resource create with service-provided name operation template. ```typespec -op Azure.Core.ResourceOperations.LongRunningResourceCreateWithServiceProvidedName(apiVersion: string, resource: Resource): Azure.Core.(anonymous model) | ErrorResponse +op Azure.Core.ResourceOperations.LongRunningResourceCreateWithServiceProvidedName(apiVersion: string, resource: Resource): Azure.Core.{ statusCode: 202, location: TypeSpec.Rest.ResourceLocation } | ErrorResponse ``` ##### Template Parameters @@ -148,7 +148,7 @@ op Azure.Core.ResourceOperations.ResourceRead(apiVersion: string): {} | ErrorRes Resource delete operation template. ```typespec -op Azure.Core.ResourceOperations.ResourceDelete(apiVersion: string): Azure.Core.(anonymous model) | ErrorResponse +op Azure.Core.ResourceOperations.ResourceDelete(apiVersion: string): Azure.Core.{ statusCode: 204 } | ErrorResponse ``` ##### Template Parameters @@ -163,7 +163,7 @@ op Azure.Core.ResourceOperations.ResourceDelete(apiVersion: string): Azure.Core. Long-running resource delete operation template. ```typespec -op Azure.Core.ResourceOperations.LongRunningResourceDelete(apiVersion: string): (anonymous model) | ErrorResponse +op Azure.Core.ResourceOperations.LongRunningResourceDelete(apiVersion: string): { statusCode: 202, id: string, status: Azure.Core.Foundations.OperationState, error: Azure.Core.Foundations.Error, result: never, operationLocation: TypeSpec.Rest.ResourceLocation } | ErrorResponse ``` ##### Template Parameters @@ -227,7 +227,7 @@ op Azure.Core.ResourceOperations.ResourceCollectionAction(apiVersion: string): { Long-running resource action operation template. ```typespec -op Azure.Core.ResourceOperations.LongRunningResourceAction(apiVersion: string): Azure.Core.(anonymous model) | ErrorResponse +op Azure.Core.ResourceOperations.LongRunningResourceAction(apiVersion: string): Azure.Core.{ statusCode: 202, id: string, status: Azure.Core.Foundations.OperationState, error: StatusError, result: StatusResult, operationLocation: TypeSpec.Rest.ResourceLocation } | ErrorResponse ``` ##### Template Parameters @@ -245,7 +245,7 @@ op Azure.Core.ResourceOperations.LongRunningResourceAction(apiVersion: string): Long-running resource collection action operation template. ```typespec -op Azure.Core.ResourceOperations.LongRunningResourceCollectionAction(apiVersion: string): Azure.Core.(anonymous model) | ErrorResponse +op Azure.Core.ResourceOperations.LongRunningResourceCollectionAction(apiVersion: string): Azure.Core.{ statusCode: 202, id: string, status: Azure.Core.Foundations.OperationState, error: StatusError, result: StatusResult, operationLocation: TypeSpec.Rest.ResourceLocation } | ErrorResponse ``` ##### Template Parameters @@ -301,7 +301,7 @@ See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05#def Long-running operation signature for a resource action. ```typespec -op Azure.Core.LongRunningResourceAction(apiVersion: string): Azure.Core.(anonymous model) | Azure.Core.Foundations.ErrorResponse +op Azure.Core.LongRunningResourceAction(apiVersion: string): Azure.Core.{ statusCode: 202, id: string, status: Azure.Core.Foundations.OperationState, error: StatusError, result: StatusResult, operationLocation: TypeSpec.Rest.ResourceLocation } | Azure.Core.Foundations.ErrorResponse ``` #### Template Parameters @@ -323,7 +323,7 @@ See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05#def Long-running operation signature for an action that applies to a collection of resources. ```typespec -op Azure.Core.LongRunningResourceCollectionAction(apiVersion: string): Azure.Core.(anonymous model) | Azure.Core.Foundations.ErrorResponse +op Azure.Core.LongRunningResourceCollectionAction(apiVersion: string): Azure.Core.{ statusCode: 202, id: string, status: Azure.Core.Foundations.OperationState, error: StatusError, result: StatusResult, operationLocation: TypeSpec.Rest.ResourceLocation } | Azure.Core.Foundations.ErrorResponse ``` #### Template Parameters @@ -345,7 +345,7 @@ See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05#def Long-running operation signature to create or replace a resource. ```typespec -op Azure.Core.LongRunningResourceCreateOrReplace(apiVersion: string, resource: Resource): (anonymous model) | (anonymous model) | Azure.Core.Foundations.ErrorResponse +op Azure.Core.LongRunningResourceCreateOrReplace(apiVersion: string, resource: Resource): { statusCode: 201, operationLocation: TypeSpec.Rest.ResourceLocation } | { statusCode: 200, operationLocation: TypeSpec.Rest.ResourceLocation } | Azure.Core.Foundations.ErrorResponse ``` #### Template Parameters @@ -364,7 +364,7 @@ See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05#def Long-running operation signature to create or update a resource. ```typespec -op Azure.Core.LongRunningResourceCreateOrUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): (anonymous model) | (anonymous model) | Azure.Core.Foundations.ErrorResponse +op Azure.Core.LongRunningResourceCreateOrUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): { statusCode: 201, operationLocation: TypeSpec.Rest.ResourceLocation } | { statusCode: 200, operationLocation: TypeSpec.Rest.ResourceLocation } | Azure.Core.Foundations.ErrorResponse ``` #### Template Parameters @@ -383,7 +383,7 @@ See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05#def Long-running operation signature to create a resource with a service-provided name. ```typespec -op Azure.Core.LongRunningResourceCreateWithServiceProvidedName(apiVersion: string, resource: Resource): Azure.Core.(anonymous model) | Azure.Core.Foundations.ErrorResponse +op Azure.Core.LongRunningResourceCreateWithServiceProvidedName(apiVersion: string, resource: Resource): Azure.Core.{ statusCode: 202, location: TypeSpec.Rest.ResourceLocation } | Azure.Core.Foundations.ErrorResponse ``` #### Template Parameters @@ -402,7 +402,7 @@ See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05#def Long-running operation signature to delete a resource. ```typespec -op Azure.Core.LongRunningResourceDelete(apiVersion: string): (anonymous model) | Azure.Core.Foundations.ErrorResponse +op Azure.Core.LongRunningResourceDelete(apiVersion: string): { statusCode: 202, id: string, status: Azure.Core.Foundations.OperationState, error: Azure.Core.Foundations.Error, result: never, operationLocation: TypeSpec.Rest.ResourceLocation } | Azure.Core.Foundations.ErrorResponse ``` #### Template Parameters @@ -417,7 +417,7 @@ op Azure.Core.LongRunningResourceDelete(apiVersion: string): (anonymous model) | A long-running remote procedure call (RPC) operation. ```typespec -op Azure.Core.LongRunningRpcOperation(apiVersion: string): Azure.Core.(anonymous model) | ErrorResponse +op Azure.Core.LongRunningRpcOperation(apiVersion: string): Azure.Core.{ statusCode: 202, id: string, status: Azure.Core.Foundations.OperationState, error: StatusError, result: StatusResult, operationLocation: TypeSpec.Rest.ResourceLocation } | ErrorResponse ``` #### Template Parameters @@ -483,7 +483,7 @@ See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05#def Operation signature to create or replace a resource. ```typespec -op Azure.Core.ResourceCreateOrReplace(apiVersion: string, resource: Resource): (anonymous model) | (anonymous model) | Azure.Core.Foundations.ErrorResponse +op Azure.Core.ResourceCreateOrReplace(apiVersion: string, resource: Resource): { statusCode: 201 } | { statusCode: 200 } | Azure.Core.Foundations.ErrorResponse ``` #### Template Parameters @@ -502,7 +502,7 @@ See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05#def Operation signature to create or update a resource. ```typespec -op Azure.Core.ResourceCreateOrUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): (anonymous model) | (anonymous model) | Azure.Core.Foundations.ErrorResponse +op Azure.Core.ResourceCreateOrUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): { statusCode: 201 } | { statusCode: 200 } | Azure.Core.Foundations.ErrorResponse ``` #### Template Parameters @@ -521,7 +521,7 @@ See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05#def Operation signature to synchronously create a resource with a service-provided name. ```typespec -op Azure.Core.ResourceCreateWithServiceProvidedName(apiVersion: string, resource: Resource): Azure.Core.(anonymous model) | Azure.Core.Foundations.ErrorResponse +op Azure.Core.ResourceCreateWithServiceProvidedName(apiVersion: string, resource: Resource): Azure.Core.{ statusCode: 201, location: TypeSpec.Rest.ResourceLocation } | Azure.Core.Foundations.ErrorResponse ``` #### Template Parameters @@ -540,7 +540,7 @@ See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05#def Operation signature to delete a resource. ```typespec -op Azure.Core.ResourceDelete(apiVersion: string): Azure.Core.(anonymous model) | Azure.Core.Foundations.ErrorResponse +op Azure.Core.ResourceDelete(apiVersion: string): Azure.Core.{ statusCode: 204 } | Azure.Core.Foundations.ErrorResponse ``` #### Template Parameters @@ -596,7 +596,7 @@ See https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05#def Operation signature to update a resource. ```typespec -op Azure.Core.ResourceUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): (anonymous model) | Azure.Core.Foundations.ErrorResponse +op Azure.Core.ResourceUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): { statusCode: 200 } | Azure.Core.Foundations.ErrorResponse ``` #### Template Parameters @@ -649,7 +649,7 @@ op Azure.Core.Foundations.GetOperationStatus(apiVersion: string, operationId: st Long-running operation. ```typespec -op Azure.Core.Foundations.LongRunningOperation(apiVersion: string): Azure.Core.Foundations.(anonymous model) | ErrorResponse +op Azure.Core.Foundations.LongRunningOperation(apiVersion: string): Azure.Core.Foundations.{ operationLocation: TypeSpec.Rest.ResourceLocation } | ErrorResponse ``` #### Template Parameters @@ -666,7 +666,7 @@ op Azure.Core.Foundations.LongRunningOperation(apiVersion: string): Azure.Core.F Long-running operation that updates a resource. ```typespec -op Azure.Core.Foundations.LongRunningResourceUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): (anonymous model) | ErrorResponse +op Azure.Core.Foundations.LongRunningResourceUpdate(apiVersion: string, contentType: "application/merge-patch+json", resource: Resource): { statusCode: 200, operationLocation: TypeSpec.Rest.ResourceLocation } | ErrorResponse ``` #### Template Parameters @@ -682,7 +682,7 @@ op Azure.Core.Foundations.LongRunningResourceUpdate(apiVersion: string, contentT Operation that lists resources in a non-paginated way. ```typespec -op Azure.Core.Foundations.NonPagedResourceList(apiVersion: string): Azure.Core.Foundations.(anonymous model) | ErrorResponse +op Azure.Core.Foundations.NonPagedResourceList(apiVersion: string): Azure.Core.Foundations.{ body: Array } | ErrorResponse ``` #### Template Parameters diff --git a/docs/libraries/azure-resource-manager/reference/interfaces.md b/docs/libraries/azure-resource-manager/reference/interfaces.md index 13ef0e088b..e9faafed8d 100644 --- a/docs/libraries/azure-resource-manager/reference/interfaces.md +++ b/docs/libraries/azure-resource-manager/reference/interfaces.md @@ -64,7 +64,7 @@ op Azure.ResourceManager.ExtensionResourceInstanceOperations.update(apiVersion: #### `ExtensionResourceInstanceOperations.delete` {#Azure.ResourceManager.ExtensionResourceInstanceOperations.delete} ```typespec -op Azure.ResourceManager.ExtensionResourceInstanceOperations.delete(apiVersion: string, resourceUri: string, provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse +op Azure.ResourceManager.ExtensionResourceInstanceOperations.delete(apiVersion: string, resourceUri: string, provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse ``` ### `ExtensionResourceOperations` {#Azure.ResourceManager.ExtensionResourceOperations} @@ -103,7 +103,7 @@ op Azure.ResourceManager.ExtensionResourceOperations.update(apiVersion: string, #### `ExtensionResourceOperations.delete` {#Azure.ResourceManager.ExtensionResourceOperations.delete} ```typespec -op Azure.ResourceManager.ExtensionResourceOperations.delete(apiVersion: string, resourceUri: string, provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse +op Azure.ResourceManager.ExtensionResourceOperations.delete(apiVersion: string, resourceUri: string, provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse ``` #### `ExtensionResourceOperations.listByParent` {#Azure.ResourceManager.ExtensionResourceOperations.listByParent} @@ -167,7 +167,7 @@ op Azure.ResourceManager.ProxyResourceOperations.createOrUpdate(provider: "Micro #### `ProxyResourceOperations.delete` {#Azure.ResourceManager.ProxyResourceOperations.delete} ```typespec -op Azure.ResourceManager.ProxyResourceOperations.delete(provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse +op Azure.ResourceManager.ProxyResourceOperations.delete(provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse ``` #### `ProxyResourceOperations.listByParent` {#Azure.ResourceManager.ProxyResourceOperations.listByParent} @@ -261,7 +261,7 @@ interface Azure.ResourceManager.ResourceDeleteAsync #### `ResourceDeleteAsync.delete` {#Azure.ResourceManager.ResourceDeleteAsync.delete} ```typespec -op Azure.ResourceManager.ResourceDeleteAsync.delete(provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse +op Azure.ResourceManager.ResourceDeleteAsync.delete(provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse ``` ### `ResourceDeleteSync` {#Azure.ResourceManager.ResourceDeleteSync} @@ -301,7 +301,7 @@ interface Azure.ResourceManager.ResourceDeleteWithoutOkAsync | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse +op Azure.ResourceManager.ResourceDeleteWithoutOkAsync.delete(provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse ``` ### `ResourceInstanceOperations` {#Azure.ResourceManager.ResourceInstanceOperations} @@ -342,7 +342,7 @@ op Azure.ResourceManager.ResourceInstanceOperations.update(provider: "Microsoft. #### `ResourceInstanceOperations.delete` {#Azure.ResourceManager.ResourceInstanceOperations.delete} ```typespec -op Azure.ResourceManager.ResourceInstanceOperations.delete(provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse +op Azure.ResourceManager.ResourceInstanceOperations.delete(provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse ``` ### `ResourceListByParent` {#Azure.ResourceManager.ResourceListByParent} @@ -423,7 +423,7 @@ op Azure.ResourceManager.ResourceOperations.update(provider: "Microsoft.ThisWill #### `ResourceOperations.delete` {#Azure.ResourceManager.ResourceOperations.delete} ```typespec -op Azure.ResourceManager.ResourceOperations.delete(provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse +op Azure.ResourceManager.ResourceOperations.delete(provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse ``` #### `ResourceOperations.listByParent` {#Azure.ResourceManager.ResourceOperations.listByParent} @@ -476,7 +476,7 @@ interface Azure.ResourceManager.ResourceUpdateAsync): Azure.ResourceManager.ArmResponse | Azure.ResourceManager.ArmAcceptedLroResponse<"Resource update request accepted.", Azure.ResourceManager.(anonymous model)> | Azure.ResourceManager.ErrorResponse +op Azure.ResourceManager.ResourceUpdateAsync.update(provider: "Microsoft.ThisWillBeReplaced", properties: Azure.ResourceManager.Foundations.ResourceUpdateModel): Azure.ResourceManager.ArmResponse | Azure.ResourceManager.ArmAcceptedLroResponse<"Resource update request accepted.", Azure.ResourceManager.{ location: string, retryAfter: int32 }> | Azure.ResourceManager.ErrorResponse ``` ### `ResourceUpdateSync` {#Azure.ResourceManager.ResourceUpdateSync} @@ -543,7 +543,7 @@ op Azure.ResourceManager.TenantResourceOperations.update(apiVersion: string, pro #### `TenantResourceOperations.delete` {#Azure.ResourceManager.TenantResourceOperations.delete} ```typespec -op Azure.ResourceManager.TenantResourceOperations.delete(apiVersion: string, provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse +op Azure.ResourceManager.TenantResourceOperations.delete(apiVersion: string, provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse ``` #### `TenantResourceOperations.listByParent` {#Azure.ResourceManager.TenantResourceOperations.listByParent} @@ -592,7 +592,7 @@ op Azure.ResourceManager.TrackedResourceOperations.update(provider: "Microsoft.T #### `TrackedResourceOperations.delete` {#Azure.ResourceManager.TrackedResourceOperations.delete} ```typespec -op Azure.ResourceManager.TrackedResourceOperations.delete(provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse +op Azure.ResourceManager.TrackedResourceOperations.delete(provider: "Microsoft.ThisWillBeReplaced"): Azure.ResourceManager.ArmDeletedResponse | Azure.ResourceManager.ArmDeleteAcceptedLroResponse | Azure.ResourceManager.ArmDeletedNoContentResponse | Azure.ResourceManager.ErrorResponse ``` #### `TrackedResourceOperations.listByParent` {#Azure.ResourceManager.TrackedResourceOperations.listByParent} diff --git a/docs/libraries/typespec-client-generator-core/reference/decorators.md b/docs/libraries/typespec-client-generator-core/reference/decorators.md index 408d308352..07a83c9e33 100644 --- a/docs/libraries/typespec-client-generator-core/reference/decorators.md +++ b/docs/libraries/typespec-client-generator-core/reference/decorators.md @@ -45,7 +45,7 @@ the access result is undefined. // Access.internal @access(Access.internal) model ModelToHide { -prop: valueof string +prop: string; } // Access.internal @access(Access.internal) @@ -315,7 +315,7 @@ all models that are included in operations. ```typespec @exclude("python") model ModelToExclude { - prop: valueof string; + prop: string; } ``` @@ -373,7 +373,7 @@ all models that are included in operations. ```typespec @include("python") model ModelToInclude { - prop: valueof string; + prop: string; } ``` diff --git a/packages/samples/test/output/core/string-template/@azure-tools/typespec-autorest/openapi.json b/packages/samples/test/output/core/string-template/@azure-tools/typespec-autorest/openapi.json index 426b6fd74d..944bca3535 100644 --- a/packages/samples/test/output/core/string-template/@azure-tools/typespec-autorest/openapi.json +++ b/packages/samples/test/output/core/string-template/@azure-tools/typespec-autorest/openapi.json @@ -25,18 +25,12 @@ "type": "object", "description": "Animal named: Cat", "properties": { - "kind": { - "type": "string", - "enum": [ - "Cat" - ], - "x-ms-enum": { - "modelAsString": false - } + "named": { + "type": "string" } }, "required": [ - "kind" + "named" ] }, "Person": { diff --git a/packages/typespec-autorest/src/openapi.ts b/packages/typespec-autorest/src/openapi.ts index 2b26ea52cd..551d992085 100644 --- a/packages/typespec-autorest/src/openapi.ts +++ b/packages/typespec-autorest/src/openapi.ts @@ -36,6 +36,7 @@ import { TypeNameOptions, Union, UnionVariant, + Value, compilerAssert, createDiagnosticCollector, getAllTags, @@ -1084,8 +1085,8 @@ export async function getOpenAPIForService( if (param.name !== ph.name) { ph["x-ms-client-name"] = param.name; } - if (param.default) { - ph.default = getDefaultValue(param.default); + if (param.defaultValue) { + ph.default = getDefaultValue(param.defaultValue); } if (ph.in === "body") { @@ -1444,33 +1445,25 @@ export async function getOpenAPIForService( return getSchemaForType(variant.type, schemaContext)!; } - function getDefaultValue(type: Type): any { - switch (type.kind) { - case "String": - return type.value; - case "Number": - return type.value; - case "Boolean": - return type.value; - case "Tuple": - return type.values.map(getDefaultValue); - case "EnumMember": - return type.value ?? type.name; - case "Intrinsic": - return isNullType(type) - ? null - : reportDiagnostic(program, { - code: "invalid-default", - format: { type: type.kind }, - target: type, - }); - case "UnionVariant": - return getDefaultValue(type.type); + function getDefaultValue(defaultType: Value): any { + switch (defaultType.valueKind) { + case "StringValue": + return defaultType.value; + case "NumericValue": + return defaultType.value.asNumber() ?? undefined; + case "BooleanValue": + return defaultType.value; + case "ArrayValue": + return defaultType.values.map((x) => getDefaultValue(x)); + case "NullValue": + return null; + case "EnumValue": + return defaultType.value.value ?? defaultType.value.name; default: reportDiagnostic(program, { code: "invalid-default", - format: { type: type.kind }, - target: type, + format: { type: defaultType.valueKind }, + target: defaultType, }); } } @@ -1607,8 +1600,8 @@ export async function getOpenAPIForService( property.description = description; } - if (prop.default && !("$ref" in property)) { - property.default = getDefaultValue(prop.default); + if (prop.defaultValue && !("$ref" in property)) { + property.default = getDefaultValue(prop.defaultValue); } if (isReadonlyProperty(program, prop)) { diff --git a/packages/typespec-autorest/test/decorators.test.ts b/packages/typespec-autorest/test/decorators.test.ts index f1a1fdfb02..f126796f8e 100644 --- a/packages/typespec-autorest/test/decorators.test.ts +++ b/packages/typespec-autorest/test/decorators.test.ts @@ -77,7 +77,6 @@ describe("typespec-autorest: decorators", () => { expectDiagnostics(ignoreUseStandardOps(diagnostics), { code: "invalid-argument", - message: "Argument '123' is not assignable to parameter of type 'valueof string'", }); }); diff --git a/packages/typespec-azure-core/lib/models.tsp b/packages/typespec-azure-core/lib/models.tsp index c6dfc5aae2..4dae8dfa1d 100644 --- a/packages/typespec-azure-core/lib/models.tsp +++ b/packages/typespec-azure-core/lib/models.tsp @@ -242,7 +242,7 @@ model EmbeddingVector is Array; model StatusMonitorPollingOptions< PollingModel extends TypeSpec.Reflection.Model | void = never, FinalResult extends TypeSpec.Reflection.Model | void = never, - FinalProperty extends TypeSpec.Reflection.ModelProperty | (valueof string) = never + FinalProperty extends TypeSpec.Reflection.ModelProperty | string = never > extends StatusMonitorOptions { /** The kind of polling options */ kind: PollingOptionKind.statusMonitor; @@ -263,7 +263,7 @@ model StatusMonitorOptions extends PollingOptions { kind: PollingOptionKind.statusMonitor; /** A reference to or name of the property of the status monitor that contains the response */ - finalProperty?: TypeSpec.Reflection.ModelProperty | (valueof string); + finalProperty?: TypeSpec.Reflection.ModelProperty | string; } /** Generic polling options for LRO operations. */ diff --git a/packages/typespec-azure-core/src/lro-info.ts b/packages/typespec-azure-core/src/lro-info.ts index 65183c2391..7cbc9ef951 100644 --- a/packages/typespec-azure-core/src/lro-info.ts +++ b/packages/typespec-azure-core/src/lro-info.ts @@ -7,9 +7,11 @@ import { Program, Union, UnionVariant, + compilerAssert, createDiagnosticCollector, getEffectiveModelType, isErrorType, + isType, } from "@typespec/compiler"; import { HttpOperationResponse, @@ -355,7 +357,12 @@ export function getLroOperationInfo( ); return; } - const sourceProperty = propMap.templateMapper!.args[0]; + let sourceProperty = propMap.templateMapper!.args[0]; + if (sourceProperty.entityKind === "Indeterminate") { + sourceProperty = sourceProperty.type; + } else if (!isType(sourceProperty)) { + compilerAssert(false, "Lro Template Arg should be a Type", propMap); + } switch (sourceProperty.kind) { case "String": const sourcePropertyName = sourceProperty.value; diff --git a/packages/typespec-azure-core/test/operations.test.ts b/packages/typespec-azure-core/test/operations.test.ts index d658278a44..fbd381ea2b 100644 --- a/packages/typespec-azure-core/test/operations.test.ts +++ b/packages/typespec-azure-core/test/operations.test.ts @@ -2865,34 +2865,22 @@ describe("typespec-azure-core: operation templates", () => { expectDiagnostics(diagnostics, [ { - code: "unassignable", - message: - "Type 'Azure.MyService.Foo | Azure.MyService.Bar' is not assignable to type 'Model'", + code: "invalid-argument", }, { - code: "unassignable", - message: - "Type 'Azure.MyService.Foo | Azure.MyService.Bar' is not assignable to type 'Model'", + code: "invalid-argument", }, { - code: "unassignable", - message: - "Type 'Azure.MyService.Foo | Azure.MyService.Bar' is not assignable to type 'Model'", + code: "invalid-argument", }, { - code: "unassignable", - message: - "Type 'Azure.MyService.Bar | Azure.MyService.Foo' is not assignable to type 'Model'", + code: "invalid-argument", }, { - code: "unassignable", - message: - "Type 'Azure.MyService.Bar | Azure.MyService.Foo' is not assignable to type 'Model'", + code: "invalid-argument", }, { - code: "unassignable", - message: - "Type 'Azure.MyService.Bar | Azure.MyService.Foo' is not assignable to type 'Model'", + code: "invalid-argument", }, ]); }); @@ -2911,7 +2899,7 @@ describe("typespec-azure-core: operation templates", () => { message: "Unknown identifier abc", }, { - code: "unassignable", + code: "invalid-argument", }, ] ); diff --git a/packages/typespec-azure-core/test/traits.test.ts b/packages/typespec-azure-core/test/traits.test.ts index 6180acf636..2ec9010a77 100644 --- a/packages/typespec-azure-core/test/traits.test.ts +++ b/packages/typespec-azure-core/test/traits.test.ts @@ -309,7 +309,7 @@ describe("typespec-azure-core: service traits", () => { `); expectDiagnostics(diagnostics, { - code: "unassignable", + code: "invalid-argument", }); }); }); @@ -342,7 +342,7 @@ describe("typespec-azure-core: service traits", () => { `); expectDiagnostics(diagnostics, { - code: "unassignable", + code: "invalid-argument", }); }); }); diff --git a/packages/typespec-azure-resource-manager/lib/common-types/managed-identity.tsp b/packages/typespec-azure-resource-manager/lib/common-types/managed-identity.tsp index 2147c5d253..3f9fd12cbf 100644 --- a/packages/typespec-azure-resource-manager/lib/common-types/managed-identity.tsp +++ b/packages/typespec-azure-resource-manager/lib/common-types/managed-identity.tsp @@ -9,10 +9,7 @@ alias ManagedIdentityProperties = ManagedServiceIdentity; */ @armCommonDefinition( "ManagedServiceIdentity", - { - version: Azure.ResourceManager.CommonTypes.Versions.v4, - isDefault: true, - }, + #{ version: Azure.ResourceManager.CommonTypes.Versions.v4, isDefault: true }, "managedidentity.json" ) @armCommonDefinition( @@ -46,10 +43,7 @@ alias ManagedSystemIdentityProperties = SystemAssignedServiceIdentity; */ @armCommonDefinition( "SystemAssignedServiceIdentity", - { - version: Azure.ResourceManager.CommonTypes.Versions.v4, - isDefault: true, - }, + #{ version: Azure.ResourceManager.CommonTypes.Versions.v4, isDefault: true }, "managedidentity.json" ) @armCommonDefinition( diff --git a/packages/typespec-azure-resource-manager/lib/common-types/private-links.tsp b/packages/typespec-azure-resource-manager/lib/common-types/private-links.tsp index b15d734e6d..e6232d0d36 100644 --- a/packages/typespec-azure-resource-manager/lib/common-types/private-links.tsp +++ b/packages/typespec-azure-resource-manager/lib/common-types/private-links.tsp @@ -15,10 +15,7 @@ namespace Azure.ResourceManager; /** The private endpoint resource */ @armCommonDefinition( "PrivateEndpoint", - { - version: Azure.ResourceManager.CommonTypes.Versions.v4, - isDefault: true, - }, + #{ version: Azure.ResourceManager.CommonTypes.Versions.v4, isDefault: true }, "privatelinks.json" ) @armCommonDefinition( @@ -44,10 +41,7 @@ model PrivateEndpointConnection extends Azure.ResourceManager.Foundations.ProxyR /** Properties of he private endpoint connection resource */ @armCommonDefinition( "PrivateEndpointConnectionProperties", - { - version: Azure.ResourceManager.CommonTypes.Versions.v4, - isDefault: true, - }, + #{ version: Azure.ResourceManager.CommonTypes.Versions.v4, isDefault: true }, "privatelinks.json" ) @armCommonDefinition( @@ -73,10 +67,7 @@ model PrivateEndpointConnectionProperties { /** A collection of information about the state of the connection between service consumer and provider. */ @armCommonDefinition( "PrivateLinkServiceConnectionState", - { - version: Azure.ResourceManager.CommonTypes.Versions.v4, - isDefault: true, - }, + #{ version: Azure.ResourceManager.CommonTypes.Versions.v4, isDefault: true }, "privatelinks.json" ) @armCommonDefinition( @@ -129,10 +120,7 @@ model PrivateLinkResource extends Azure.ResourceManager.Foundations.ProxyResourc #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "Matches current common code" @armCommonDefinition( "PrivateLinkResourceProperties", - { - version: Azure.ResourceManager.CommonTypes.Versions.v4, - isDefault: true, - }, + #{ version: Azure.ResourceManager.CommonTypes.Versions.v4, isDefault: true }, "privatelinks.json" ) @armCommonDefinition( @@ -174,10 +162,7 @@ model PrivateEndpointConnectionParameter for (const arg of modelCandidate.templateMapper.args) { - if (arg.kind === "Model") { + if (isType(arg) && arg.kind === "Model") { checkIfArmModel(context, operation, model, arg); if (arg.templateMapper !== undefined) { // ArmResponse> for (const type of arg.templateMapper.args) { - if (type.kind === "Model") { + if (isType(type) && type.kind === "Model") { checkIfArmModel(context, operation, model, type); } } diff --git a/packages/typespec-azure-resource-manager/src/rules/arm-resource-patch.ts b/packages/typespec-azure-resource-manager/src/rules/arm-resource-patch.ts index f7023782d6..0ba0541a58 100644 --- a/packages/typespec-azure-resource-manager/src/rules/arm-resource-patch.ts +++ b/packages/typespec-azure-resource-manager/src/rules/arm-resource-patch.ts @@ -9,6 +9,7 @@ import { getEffectiveModelType, getProperty, isErrorType, + isType, paramMessage, } from "@typespec/compiler"; import { @@ -106,7 +107,7 @@ function getResourceModel(program: Program, operation: Operation): Model | undef } if (modelCandidate.templateMapper !== undefined) { for (const arg of modelCandidate.templateMapper.args) { - if (arg.kind === "Model" && getArmResource(program, arg)) { + if (isType(arg) && arg.kind === "Model" && getArmResource(program, arg)) { return arg; } } diff --git a/packages/typespec-azure-resource-manager/src/rules/unsupported-type.ts b/packages/typespec-azure-resource-manager/src/rules/unsupported-type.ts index 97e46317fb..2414070c4a 100644 --- a/packages/typespec-azure-resource-manager/src/rules/unsupported-type.ts +++ b/packages/typespec-azure-resource-manager/src/rules/unsupported-type.ts @@ -1,4 +1,4 @@ -import { DiagnosticTarget, Type, createRule, paramMessage } from "@typespec/compiler"; +import { DiagnosticTarget, Type, createRule, isType, paramMessage } from "@typespec/compiler"; const UnsupportedIntrinsicModel = new Set(["int8", "int16", "uint8", "uint16", "uint32", "uint64"]); /** @@ -36,7 +36,9 @@ export const unsupportedTypeRule = createRule({ } if (type.templateMapper) { for (const templateArg of type.templateMapper.args) { - checkUnsupportedType(templateArg, target); + if (isType(templateArg)) { + checkUnsupportedType(templateArg, target); + } } } } diff --git a/packages/typespec-azure-resource-manager/test/resource.test.ts b/packages/typespec-azure-resource-manager/test/resource.test.ts index 4d9be5f670..a06025c280 100644 --- a/packages/typespec-azure-resource-manager/test/resource.test.ts +++ b/packages/typespec-azure-resource-manager/test/resource.test.ts @@ -849,13 +849,13 @@ describe("typespec-azure-resource-manager: ARM resource model", () => { foo: string; } - @Azure.ResourceManager.Private.armCommonDefinition("Bar", { version: Azure.ResourceManager.CommonTypes.Versions.v4, isDefault: true }, "bar.json") + @Azure.ResourceManager.Private.armCommonDefinition("Bar", #{ version: Azure.ResourceManager.CommonTypes.Versions.v4, isDefault: true }, "bar.json") @Azure.ResourceManager.Private.armCommonDefinition("Bar", Azure.ResourceManager.CommonTypes.Versions.v5, "bar-v5.json") model Bar {prop: string} model BarParam { @path - @Azure.ResourceManager.Private.armCommonParameter("BarParam", { version: Azure.ResourceManager.CommonTypes.Versions.v4, isDefault: true }, "bar.json") + @Azure.ResourceManager.Private.armCommonParameter("BarParam", #{ version: Azure.ResourceManager.CommonTypes.Versions.v4, isDefault: true }, "bar.json") @Azure.ResourceManager.Private.armCommonParameter("BarParam", Azure.ResourceManager.CommonTypes.Versions.v5, "bar-v5.json") bar: string; } diff --git a/packages/typespec-client-generator-core/README.md b/packages/typespec-client-generator-core/README.md index 45c0f8f59f..615820b4c6 100644 --- a/packages/typespec-client-generator-core/README.md +++ b/packages/typespec-client-generator-core/README.md @@ -62,7 +62,7 @@ the access result is undefined. // Access.internal @access(Access.internal) model ModelToHide { -prop: valueof string +prop: string; } // Access.internal @access(Access.internal) @@ -332,7 +332,7 @@ all models that are included in operations. ```typespec @exclude("python") model ModelToExclude { - prop: valueof string; + prop: string; } ``` @@ -390,7 +390,7 @@ all models that are included in operations. ```typespec @include("python") model ModelToInclude { - prop: valueof string; + prop: string; } ``` diff --git a/packages/typespec-client-generator-core/lib/decorators.tsp b/packages/typespec-client-generator-core/lib/decorators.tsp index a0731d8d4e..b258f72761 100644 --- a/packages/typespec-client-generator-core/lib/decorators.tsp +++ b/packages/typespec-client-generator-core/lib/decorators.tsp @@ -102,7 +102,7 @@ extern dec operationGroup(target: Namespace | Interface, scope?: valueof string) * ```typespec * @exclude("python") * model ModelToExclude { - * prop: valueof string + * prop: string; * } * ``` */ @@ -120,7 +120,7 @@ extern dec exclude(target: Model, scope?: valueof string); * ```typespec * @include("python") * model ModelToInclude { - * prop: valueof string + * prop: string; * } * ``` */ @@ -278,7 +278,7 @@ enum Access { * // Access.internal * @access(Access.internal) * model ModelToHide { - * prop: valueof string + * prop: string; * } * // Access.internal * @access(Access.internal) diff --git a/packages/typespec-client-generator-core/src/public-utils.ts b/packages/typespec-client-generator-core/src/public-utils.ts index bfad9920dd..3d173b3809 100644 --- a/packages/typespec-client-generator-core/src/public-utils.ts +++ b/packages/typespec-client-generator-core/src/public-utils.ts @@ -15,6 +15,7 @@ import { getProjectedName, ignoreDiagnostics, isErrorModel, + isType, listServices, resolveEncodedName, } from "@typespec/compiler"; @@ -184,7 +185,7 @@ export function getLibraryName( type.templateMapper.args .filter( (arg): arg is Model | Enum => - (arg.kind === "Model" || arg.kind === "Enum") && arg.name.length > 0 + isType(arg) && (arg.kind === "Model" || arg.kind === "Enum") && arg.name.length > 0 ) .map((arg) => pascalCase(arg.name)) .join("") diff --git a/packages/typespec-client-generator-core/src/types.ts b/packages/typespec-client-generator-core/src/types.ts index 06ed55dd9a..0dfb31d5a8 100644 --- a/packages/typespec-client-generator-core/src/types.ts +++ b/packages/typespec-client-generator-core/src/types.ts @@ -28,6 +28,7 @@ import { ignoreDiagnostics, isErrorModel, isNeverType, + isType, } from "@typespec/compiler"; import { Authentication, @@ -1148,6 +1149,7 @@ function checkAndGetClientType( if (context.filterOutCoreModels && isAzureCoreModel(effectivePayloadType)) { if (effectivePayloadType.templateMapper && effectivePayloadType.name) { effectivePayloadType.templateMapper.args + .filter(isType) .filter((arg) => arg.kind === "Model" && arg.name) .forEach((arg) => { retval.push(...diagnostics.pipe(checkAndGetClientType(context, arg, operation))); diff --git a/packages/typespec-service-csharp/src/service.ts b/packages/typespec-service-csharp/src/service.ts index 74b4ed5be7..0e2836b616 100644 --- a/packages/typespec-service-csharp/src/service.ts +++ b/packages/typespec-service-csharp/src/service.ts @@ -18,6 +18,7 @@ import { getNamespaceFullName, getService, isErrorModel, + isType, } from "@typespec/compiler"; import { CodeTypeEmitter, @@ -465,6 +466,7 @@ export async function $onEmit(context: EmitContext) let pushed = 0; for (const arg of model.templateMapper!.args) { if ( + isType(arg) && arg.kind !== "Intrinsic" && (arg.kind !== "Model" || (arg.name !== "" && arg.name !== "Error" && arg.name !== "AcceptedResponse")) @@ -730,7 +732,8 @@ export async function $onEmit(context: EmitContext) let i = 0; const params = new StringBuilder(); const args = model.templateMapper.args.filter( - (parameter) => + (parameter): parameter is Type => + isType(parameter) && parameter.kind !== "Boolean" && parameter.kind !== "Intrinsic" && parameter.kind !== "Number" &&