@@ -166,7 +166,10 @@ def _marshaller(self, base: str, module: str) -> list[str]:
166166 "// @unchecked Sendable: a transient per-message carrier handed to a single" ,
167167 "// consumer and (de)serialized synchronously, never shared across threads," ,
168168 "// so grpc-swift's async APIs can move it under Swift 6 strict concurrency." ,
169- f"struct { base } Message<Value: Serializer>: GRPCPayload, @unchecked Sendable {{" ,
169+ (
170+ f"struct { base } Message<Value: Serializer>: GRPCPayload, @unchecked Sendable"
171+ " where Value.Target == Value {"
172+ ),
170173 " let value: Value" ,
171174 " init(_ value: Value) { self.value = value }" ,
172175 " init(serializedByteBuffer buffer: inout NIOCore.ByteBuffer) throws {" ,
@@ -241,7 +244,10 @@ def _adapters(self, base: str, modes: set[StreamingMode]) -> list[str]:
241244
242245 def _streaming_response_context (self , base : str ) -> list [str ]:
243246 return [
244- f"public struct { base } StreamingResponseContext<Response: Serializer> {{" ,
247+ (
248+ f"public struct { base } StreamingResponseContext<Response: Serializer>"
249+ " where Response.Target == Response {"
250+ ),
245251 f" fileprivate let base: StreamingResponseCallContext<{ base } Message<Response>>" ,
246252 " public var eventLoop: EventLoop { base.eventLoop }" ,
247253 " @discardableResult" ,
@@ -253,7 +259,10 @@ def _streaming_response_context(self, base: str) -> list[str]:
253259
254260 def _unary_response_context (self , base : str ) -> list [str ]:
255261 return [
256- f"public struct { base } UnaryResponseContext<Response: Serializer> {{" ,
262+ (
263+ f"public struct { base } UnaryResponseContext<Response: Serializer>"
264+ " where Response.Target == Response {"
265+ ),
257266 f" fileprivate let base: UnaryResponseCallContext<{ base } Message<Response>>" ,
258267 " public var eventLoop: EventLoop { base.eventLoop }" ,
259268 " public func respond(_ response: Response) {" ,
@@ -265,7 +274,10 @@ def _unary_response_context(self, base: str) -> list[str]:
265274 def _async_response_stream (self , base : str ) -> list [str ]:
266275 return [
267276 _ASYNC_AVAILABLE ,
268- f"public struct { base } AsyncResponseStream<Response: Serializer> {{" ,
277+ (
278+ f"public struct { base } AsyncResponseStream<Response: Serializer>"
279+ " where Response.Target == Response {"
280+ ),
269281 f" fileprivate let base: GRPCAsyncResponseStreamWriter<{ base } Message<Response>>" ,
270282 " public func send(_ response: Response) async throws {" ,
271283 f" try await base.send({ base } Message(response))" ,
@@ -276,7 +288,10 @@ def _async_response_stream(self, base: str) -> list[str]:
276288 def _async_request_stream (self , base : str ) -> list [str ]:
277289 return [
278290 _ASYNC_AVAILABLE ,
279- f"public struct { base } AsyncRequestStream<Request: Serializer>: AsyncSequence {{" ,
291+ (
292+ f"public struct { base } AsyncRequestStream<Request: Serializer>: AsyncSequence"
293+ " where Request.Target == Request {"
294+ ),
280295 " public typealias Element = Request" ,
281296 f" fileprivate let base: GRPCAsyncRequestStream<{ base } Message<Request>>" ,
282297 " public struct AsyncIterator: AsyncIteratorProtocol {" ,
@@ -294,7 +309,10 @@ def _async_request_stream(self, base: str) -> list[str]:
294309 def _client_response_stream (self , base : str ) -> list [str ]:
295310 return [
296311 _ASYNC_AVAILABLE ,
297- f"public struct { base } ResponseStream<Response: Serializer>: AsyncSequence {{" ,
312+ (
313+ f"public struct { base } ResponseStream<Response: Serializer>: AsyncSequence"
314+ " where Response.Target == Response {"
315+ ),
298316 " public typealias Element = Response" ,
299317 f" fileprivate let base: GRPCAsyncResponseStream<{ base } Message<Response>>" ,
300318 " public struct AsyncIterator: AsyncIteratorProtocol {" ,
0 commit comments