Skip to content

Commit af51424

Browse files
committed
Move empty final TokenStream handling to server side of bridge
1 parent 4d45af9 commit af51424

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

library/proc_macro/src/bridge/client.rs

+2-8
Original file line numberDiff line numberDiff line change
@@ -427,11 +427,7 @@ impl Client<crate::TokenStream, crate::TokenStream> {
427427
Client {
428428
get_handle_counters: HandleCounters::get,
429429
run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| {
430-
run_client(bridge, |input| {
431-
f(crate::TokenStream(Some(input)))
432-
.0
433-
.unwrap_or_else(|| TokenStream::concat_streams(None, vec![]))
434-
})
430+
run_client(bridge, |input| f(crate::TokenStream(Some(input))).0)
435431
}),
436432
_marker: PhantomData,
437433
}
@@ -446,9 +442,7 @@ impl Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream> {
446442
get_handle_counters: HandleCounters::get,
447443
run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| {
448444
run_client(bridge, |(input, input2)| {
449-
f(crate::TokenStream(Some(input)), crate::TokenStream(Some(input2)))
450-
.0
451-
.unwrap_or_else(|| TokenStream::concat_streams(None, vec![]))
445+
f(crate::TokenStream(Some(input)), crate::TokenStream(Some(input2))).0
452446
})
453447
}),
454448
_marker: PhantomData,

library/proc_macro/src/bridge/server.rs

+14-6
Original file line numberDiff line numberDiff line change
@@ -273,13 +273,17 @@ fn run_server<
273273
}
274274

275275
impl client::Client<crate::TokenStream, crate::TokenStream> {
276-
pub fn run<S: Server>(
276+
pub fn run<S>(
277277
&self,
278278
strategy: &impl ExecutionStrategy,
279279
server: S,
280280
input: S::TokenStream,
281281
force_show_panics: bool,
282-
) -> Result<S::TokenStream, PanicMessage> {
282+
) -> Result<S::TokenStream, PanicMessage>
283+
where
284+
S: Server,
285+
S::TokenStream: Default,
286+
{
283287
let client::Client { get_handle_counters, run, _marker } = *self;
284288
run_server(
285289
strategy,
@@ -289,19 +293,23 @@ impl client::Client<crate::TokenStream, crate::TokenStream> {
289293
run,
290294
force_show_panics,
291295
)
292-
.map(<MarkedTypes<S> as Types>::TokenStream::unmark)
296+
.map(|s| <Option<<MarkedTypes<S> as Types>::TokenStream>>::unmark(s).unwrap_or_default())
293297
}
294298
}
295299

296300
impl client::Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream> {
297-
pub fn run<S: Server>(
301+
pub fn run<S>(
298302
&self,
299303
strategy: &impl ExecutionStrategy,
300304
server: S,
301305
input: S::TokenStream,
302306
input2: S::TokenStream,
303307
force_show_panics: bool,
304-
) -> Result<S::TokenStream, PanicMessage> {
308+
) -> Result<S::TokenStream, PanicMessage>
309+
where
310+
S: Server,
311+
S::TokenStream: Default,
312+
{
305313
let client::Client { get_handle_counters, run, _marker } = *self;
306314
run_server(
307315
strategy,
@@ -314,6 +322,6 @@ impl client::Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream
314322
run,
315323
force_show_panics,
316324
)
317-
.map(<MarkedTypes<S> as Types>::TokenStream::unmark)
325+
.map(|s| <Option<<MarkedTypes<S> as Types>::TokenStream>>::unmark(s).unwrap_or_default())
318326
}
319327
}

0 commit comments

Comments
 (0)