Fix double borrow in synchronous tests
This commit is contained in:
parent
e1cb993878
commit
1864d37d2e
2 changed files with 20 additions and 2 deletions
|
@ -68,9 +68,27 @@ impl AppCell {
|
||||||
#[derive(Deref, DerefMut)]
|
#[derive(Deref, DerefMut)]
|
||||||
pub struct AppRef<'a>(Ref<'a, AppContext>);
|
pub struct AppRef<'a>(Ref<'a, AppContext>);
|
||||||
|
|
||||||
|
impl<'a> Drop for AppRef<'a> {
|
||||||
|
fn drop(&mut self) {
|
||||||
|
if let Some(_) = option_env!("TRACK_THREAD_BORROWS") {
|
||||||
|
let thread_id = std::thread::current().id();
|
||||||
|
eprintln!("dropped borrow from {thread_id:?}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Deref, DerefMut)]
|
#[derive(Deref, DerefMut)]
|
||||||
pub struct AppRefMut<'a>(RefMut<'a, AppContext>);
|
pub struct AppRefMut<'a>(RefMut<'a, AppContext>);
|
||||||
|
|
||||||
|
impl<'a> Drop for AppRefMut<'a> {
|
||||||
|
fn drop(&mut self) {
|
||||||
|
if let Some(_) = option_env!("TRACK_THREAD_BORROWS") {
|
||||||
|
let thread_id = std::thread::current().id();
|
||||||
|
eprintln!("dropped {thread_id:?}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub struct App(Rc<AppCell>);
|
pub struct App(Rc<AppCell>);
|
||||||
|
|
||||||
/// Represents an application before it is fully launched. Once your app is
|
/// Represents an application before it is fully launched. Once your app is
|
||||||
|
|
|
@ -175,10 +175,10 @@ pub fn test(args: TokenStream, function: TokenStream) -> TokenStream {
|
||||||
));
|
));
|
||||||
inner_fn_args.extend(quote!(&mut #cx_varname_lock,));
|
inner_fn_args.extend(quote!(&mut #cx_varname_lock,));
|
||||||
cx_teardowns.extend(quote!(
|
cx_teardowns.extend(quote!(
|
||||||
dispatcher.run_until_parked();
|
|
||||||
#cx_varname_lock.quit();
|
|
||||||
drop(#cx_varname_lock);
|
drop(#cx_varname_lock);
|
||||||
dispatcher.run_until_parked();
|
dispatcher.run_until_parked();
|
||||||
|
#cx_varname.update(|cx| { cx.quit() });
|
||||||
|
dispatcher.run_until_parked();
|
||||||
));
|
));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue