Skip to content

Use named arguments in ModelFactory backward-compat overloads#10404

Merged
jorgerangel-msft merged 3 commits intomainfrom
copilot/fix-getparameters-argument-order
Apr 17, 2026
Merged

Use named arguments in ModelFactory backward-compat overloads#10404
jorgerangel-msft merged 3 commits intomainfrom
copilot/fix-getparameters-argument-order

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 16, 2026

TryBuildMethodArgumentsForOverload emits positional arguments when calling the current ModelFactory method from a backward-compat overload. When @@hierarchyBuilding reorders constructor parameters, positional args map to wrong positions, causing CS1503.

Changes

  • ModelFactoryProvider.cs: Wrap matched parameters in PositionalParameterReferenceExpression so all arguments are named, not just the defaulted ones for new parameters.
  • ModelFactoryProviderTests.cs: Update existing assertion to expect named args. Add BackCompatibility_NewPropertyAddedWithDifferentParamOrder test covering the reordered-params-plus-new-property scenario.

Before:

return PublicModel1(stringProp, modelProp, listProp, dictProp: default);

After:

return PublicModel1(stringProp: stringProp, modelProp: modelProp, listProp: listProp, dictProp: default);

…vent order mismatch

When building backward-compat ModelFactory overloads, arguments are now
passed using named arguments (e.g., `paramName: paramName`) instead of
positional arguments. This ensures correct mapping even when the parameter
order differs between the previous and current method signatures, which
occurs when @@hierarchyBuilding reorders constructor parameters.

Agent-Logs-Url: https://github.com/microsoft/typespec/sessions/bcea383b-5376-46e2-b544-6520fa9b9039

Co-authored-by: jorgerangel-msft <102122018+jorgerangel-msft@users.noreply.github.com>
@microsoft-github-policy-service microsoft-github-policy-service bot added the emitter:client:csharp Issue for the C# client emitter: @typespec/http-client-csharp label Apr 16, 2026
Copilot AI changed the title [WIP] Fix GetParameters to preserve public method parameter order Use named arguments in ModelFactory backward-compat overloads Apr 16, 2026
Copilot AI requested a review from jorgerangel-msft April 16, 2026 19:50
…move comment

Agent-Logs-Url: https://github.com/microsoft/typespec/sessions/04db242b-b15a-4030-9398-7d5feadcdee4

Co-authored-by: jorgerangel-msft <102122018+jorgerangel-msft@users.noreply.github.com>
@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new bot commented Apr 16, 2026

Open in StackBlitz

npm i https://pkg.pr.new/@typespec/http-client-csharp@10404

commit: bcdbc94

@jorgerangel-msft jorgerangel-msft added this pull request to the merge queue Apr 17, 2026
Merged via the queue into main with commit c6bc569 Apr 17, 2026
29 checks passed
@jorgerangel-msft jorgerangel-msft deleted the copilot/fix-getparameters-argument-order branch April 17, 2026 18:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

emitter:client:csharp Issue for the C# client emitter: @typespec/http-client-csharp

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[csharp] ModelFactoryProvider.GetParameters() preserves constructor order, breaking backward-compat overloads with @@hierarchyBuilding

3 participants