You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
List-to-Get normalization collapsed singleton GET and pageable LIST operations onto the same REST request-builder signature, causing CS0111 despite their distinct request paths.
Collision handling: Check stable input names and projected C# signatures before applying List-to-Get normalization. Retain the original List name when REST or public declarations would collide, including generated Async variants.
Compatibility: Preserve non-colliding overloads and existing explicit, published-API, acronym, and URL naming. Compare generic arguments recursively so IEnumerable<int> and IEnumerable<int?> remain distinct signatures.
Regression coverage: Cover operation order, explicit-name peers, List/GetAll and async-name collisions, valid overloads, unique declarations, and URI/lookup/initial-page/next-page binding.
Azure Pipelines:
Successfully started running 1 pipeline(s).
1 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.
CopilotAI
changed the title
[WIP] Fix duplicate REST request builders for getByResourceGroup and listByResourceGroup
[http-client-csharp] Prevent List/Get request-builder collisions
Oct 14, 2026
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Compatibility-sensitive naming changes warrant human validation of downstream API stability, and the signature-projection performance concern remains unresolved.
No open issues 🎉
1 previously missed issue
In code that hasn't changed since last review
Skip disjoint peers before rebuilding operation parameters
Skip peers with disjoint emitted names before projecting their parameters: CleanOperationNames invokes this path twice per List operation (ClientProvider.cs:220–224), but both protocol variants and convenience parameters are rebuilt for every unrelated peer. This adds quadratic parameter construction and repeated compatibility lookups to client creation even when no names can collide; intersect GetEmittedMethodNames first and return early.
The reason will be displayed to describe this comment to others. Learn more.
Copilot overall, the changes are way too complicated. Ideally, we simplify the PR and fix the problem we are trying to solve. If we can target the changes to simply avoid collisions based on method names, that may reduce a lot of the complexity we are adding.
Copilot overall, the changes are way too complicated. Ideally, we simplify the PR and fix the problem we are trying to solve. If we can target the changes to simply avoid collisions based on method n...
Simplified the collision handling to use emitted method names rather than parameter signatures, removed the projection machinery, and restored the existing REST/protocol parameter-building paths. Commit: 7beecf78.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
List-to-Get normalization collapsed singleton GET and pageable LIST operations onto the same REST request-builder signature, causing CS0111 despite their distinct request paths.
Asyncvariants.IEnumerable<int>andIEnumerable<int?>remain distinct signatures.