From f72c031eb9a15f25834a7980008db764ff2867a0 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 10 Jan 2019 13:04:04 +0300 Subject: implement RefUnwindSafe --- crates/ra_db/src/lib.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'crates/ra_db/src/lib.rs') diff --git a/crates/ra_db/src/lib.rs b/crates/ra_db/src/lib.rs index 00d2d5ae9..20e712afe 100644 --- a/crates/ra_db/src/lib.rs +++ b/crates/ra_db/src/lib.rs @@ -20,7 +20,7 @@ pub use crate::{ loc2id::LocationIntener, }; -pub trait BaseDatabase: salsa::Database { +pub trait BaseDatabase: salsa::Database + panic::RefUnwindSafe { fn check_canceled(&self) -> Cancelable<()> { self.salsa_runtime() .if_current_revision_is_canceled(Canceled::throw); @@ -31,8 +31,7 @@ pub trait BaseDatabase: salsa::Database { &self, f: F, ) -> Result { - let me = panic::AssertUnwindSafe(self); - panic::catch_unwind(|| f(me.0)).map_err(|err| match err.downcast::() { + panic::catch_unwind(|| f(self)).map_err(|err| match err.downcast::() { Ok(canceled) => *canceled, Err(payload) => panic::resume_unwind(payload), }) -- cgit v1.2.3