From c71e4cc0b553afdd2662fa41d4f597456f1421f1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Mar 2026 22:16:09 +0000 Subject: [PATCH 1/2] Initial plan From 27888f87f3711559df66a91aeb1eaa927a2fdd55 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Mar 2026 22:25:24 +0000 Subject: [PATCH 2/2] fix: generate unique CT parameter name to avoid collision with OpenAPI params named 'cancellationToken' Co-authored-by: sergey-tihon <1197905+sergey-tihon@users.noreply.github.com> Agent-Logs-Url: https://github.com/fsprojects/SwaggerProvider/sessions/7d588ec7-c4df-4a6c-89f8-9c13c2472d29 --- .../v3/OperationCompiler.fs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs b/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs index 33b8705..25d03ff 100644 --- a/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs +++ b/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs @@ -157,7 +157,7 @@ type OperationCompiler(schema: OpenApiDocument, defCompiler: DefinitionCompiler, List.append required optional - let providedParameters = + let usedNames, providedParameters = ((Set.empty, []), orderedParameters) ||> List.fold(fun (names, parameters) current -> let names, paramName = uniqueParamName names current @@ -173,16 +173,21 @@ type OperationCompiler(schema: OpenApiDocument, defCompiler: DefinitionCompiler, ProvidedParameter(paramName, paramType, false, paramDefaultValue) (names, providedParam :: parameters)) - |> snd - // because we built up our list in reverse order with the fold, - // reverse it again so that all required properties come first - |> List.rev + |> fun (names, ps) -> names, List.rev ps let parameters = if includeCancellationToken then - let ctParam = - ProvidedParameter("cancellationToken", typeof) + // Find a unique name for the CancellationToken parameter that doesn't + // conflict with any OpenAPI parameter already in use. + let ctParamName = + Seq.initInfinite(fun i -> + if i = 0 then + "cancellationToken" + else + $"cancellationToken{i}") + |> Seq.find(fun n -> not(Set.contains n usedNames)) + let ctParam = ProvidedParameter(ctParamName, typeof) providedParameters @ [ ctParam ] else providedParameters