Skip to content

[http-client-csharp] Fix BinaryContent wrapping in MethodParameterSegments navigation#10740

Open
JonathanCrd wants to merge 2 commits into
microsoft:mainfrom
JonathanCrd:joncarde/spector-streaming-jsonl
Open

[http-client-csharp] Fix BinaryContent wrapping in MethodParameterSegments navigation#10740
JonathanCrd wants to merge 2 commits into
microsoft:mainfrom
JonathanCrd:joncarde/spector-streaming-jsonl

Conversation

@JonathanCrd
Copy link
Copy Markdown
Member

@JonathanCrd JonathanCrd commented May 19, 2026

Summary

Fixes a generator bug where MethodParameterSegments navigation resolving to a BinaryData property was passed directly as a BinaryContent protocol argument without wrapping in BinaryContent.Create(), causing a CS1503 compilation error.

Bug Fix

When ScmMethodProviderCollection.GetProtocolMethodArguments() navigates MethodParameterSegments to resolve a property path (e.g., streamstream.Body), the resolved BinaryData expression was passed directly as a BinaryContent protocol argument. The fix wraps the expression with BinaryContent.Create() when the protocol parameter is a content parameter.

This also fixed a pre-existing latent bug in the Sample-TypeSpec NoContentType method (info.Action had the same issue).

Changes

  • Fix ScmMethodProviderCollection.GetProtocolMethodArguments() to wrap with RequestContentApiSnippets.Create() when the protocol param is a content parameter
  • Add unit test for the BinaryData-to-BinaryContent wrapping case
  • Regenerate Sample-TypeSpec (side-effect of the fix)

Validation

  • All 1335 ClientModel generator tests pass
  • All 37 Local tests pass

🤖 Created with JonathanCrd's copilot

JonathanCrd and others added 2 commits May 19, 2026 15:32
…n MethodParameterSegments navigation

When MethodParameterSegments navigation resolves to a BinaryData property,
the expression was passed directly as a BinaryContent protocol argument
without wrapping. This caused a CS1503 compilation error.

Wrap the resolved property expression with RequestContentApiSnippets.Create()
when the protocol parameter is a content parameter.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ntent fix

Co-authored-by: Copilot <223556219+Copilot@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 May 19, 2026
@JonathanCrd JonathanCrd self-assigned this May 19, 2026
@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented May 19, 2026

Open in StackBlitz

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

commit: e5cca81

@github-actions
Copy link
Copy Markdown
Contributor

No changes needing a change description found.

@JonathanCrd JonathanCrd force-pushed the joncarde/spector-streaming-jsonl branch from 952f63e to e5cca81 Compare May 21, 2026 00:13
@JonathanCrd JonathanCrd changed the title [http-client-csharp] Adopt streaming/jsonl Spector scenario and fix BinaryContent wrapping [http-client-csharp] Fix BinaryContent wrapping in MethodParameterSegments navigation May 21, 2026
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.

3 participants