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)]
|
||||
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)]
|
||||
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>);
|
||||
|
||||
/// 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,));
|
||||
cx_teardowns.extend(quote!(
|
||||
dispatcher.run_until_parked();
|
||||
#cx_varname_lock.quit();
|
||||
drop(#cx_varname_lock);
|
||||
dispatcher.run_until_parked();
|
||||
#cx_varname.update(|cx| { cx.quit() });
|
||||
dispatcher.run_until_parked();
|
||||
));
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue