Move empty final TokenStream handling to server side of bridge

This commit is contained in:
Nika Layzell 2022-06-17 11:07:42 -04:00
parent 4d45af9e73
commit af51424008
2 changed files with 16 additions and 14 deletions

View File

@ -427,11 +427,7 @@ impl Client<crate::TokenStream, crate::TokenStream> {
Client { Client {
get_handle_counters: HandleCounters::get, get_handle_counters: HandleCounters::get,
run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| { run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| {
run_client(bridge, |input| { run_client(bridge, |input| f(crate::TokenStream(Some(input))).0)
f(crate::TokenStream(Some(input)))
.0
.unwrap_or_else(|| TokenStream::concat_streams(None, vec![]))
})
}), }),
_marker: PhantomData, _marker: PhantomData,
} }
@ -446,9 +442,7 @@ impl Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream> {
get_handle_counters: HandleCounters::get, get_handle_counters: HandleCounters::get,
run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| { run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| {
run_client(bridge, |(input, input2)| { run_client(bridge, |(input, input2)| {
f(crate::TokenStream(Some(input)), crate::TokenStream(Some(input2))) f(crate::TokenStream(Some(input)), crate::TokenStream(Some(input2))).0
.0
.unwrap_or_else(|| TokenStream::concat_streams(None, vec![]))
}) })
}), }),
_marker: PhantomData, _marker: PhantomData,

View File

@ -273,13 +273,17 @@ fn run_server<
} }
impl client::Client<crate::TokenStream, crate::TokenStream> { impl client::Client<crate::TokenStream, crate::TokenStream> {
pub fn run<S: Server>( pub fn run<S>(
&self, &self,
strategy: &impl ExecutionStrategy, strategy: &impl ExecutionStrategy,
server: S, server: S,
input: S::TokenStream, input: S::TokenStream,
force_show_panics: bool, force_show_panics: bool,
) -> Result<S::TokenStream, PanicMessage> { ) -> Result<S::TokenStream, PanicMessage>
where
S: Server,
S::TokenStream: Default,
{
let client::Client { get_handle_counters, run, _marker } = *self; let client::Client { get_handle_counters, run, _marker } = *self;
run_server( run_server(
strategy, strategy,
@ -289,19 +293,23 @@ impl client::Client<crate::TokenStream, crate::TokenStream> {
run, run,
force_show_panics, force_show_panics,
) )
.map(<MarkedTypes<S> as Types>::TokenStream::unmark) .map(|s| <Option<<MarkedTypes<S> as Types>::TokenStream>>::unmark(s).unwrap_or_default())
} }
} }
impl client::Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream> { impl client::Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream> {
pub fn run<S: Server>( pub fn run<S>(
&self, &self,
strategy: &impl ExecutionStrategy, strategy: &impl ExecutionStrategy,
server: S, server: S,
input: S::TokenStream, input: S::TokenStream,
input2: S::TokenStream, input2: S::TokenStream,
force_show_panics: bool, force_show_panics: bool,
) -> Result<S::TokenStream, PanicMessage> { ) -> Result<S::TokenStream, PanicMessage>
where
S: Server,
S::TokenStream: Default,
{
let client::Client { get_handle_counters, run, _marker } = *self; let client::Client { get_handle_counters, run, _marker } = *self;
run_server( run_server(
strategy, strategy,
@ -314,6 +322,6 @@ impl client::Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream
run, run,
force_show_panics, force_show_panics,
) )
.map(<MarkedTypes<S> as Types>::TokenStream::unmark) .map(|s| <Option<<MarkedTypes<S> as Types>::TokenStream>>::unmark(s).unwrap_or_default())
} }
} }