diff options
| -rw-r--r-- | src/librustc_data_structures/sync.rs | 1 | ||||
| -rw-r--r-- | src/librustc_driver/driver.rs | 7 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/librustc_data_structures/sync.rs b/src/librustc_data_structures/sync.rs index d935eb7bdab..c18a5328dd5 100644 --- a/src/librustc_data_structures/sync.rs +++ b/src/librustc_data_structures/sync.rs @@ -323,6 +323,7 @@ cfg_if! { } pub fn assert_sync<T: ?Sized + Sync>() {} +pub fn assert_send<T: ?Sized + Send>() {} pub fn assert_send_val<T: ?Sized + Send>(_t: &T) {} pub fn assert_send_sync_val<T: ?Sized + Sync + Send>(_t: &T) {} diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index 0204d041a24..bfff592a5dd 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -402,14 +402,15 @@ pub struct CompileController<'a> { /// Allows overriding default rustc query providers, /// after `default_provide` has installed them. - pub provide: Box<dyn Fn(&mut ty::query::Providers) + 'a>, + pub provide: Box<dyn Fn(&mut ty::query::Providers) + 'a + sync::Send>, /// Same as `provide`, but only for non-local crates, /// applied after `default_provide_extern`. - pub provide_extern: Box<dyn Fn(&mut ty::query::Providers) + 'a>, + pub provide_extern: Box<dyn Fn(&mut ty::query::Providers) + 'a + sync::Send>, } impl<'a> CompileController<'a> { pub fn basic() -> CompileController<'a> { + sync::assert_send::<Self>(); CompileController { after_parse: PhaseController::basic(), after_expand: PhaseController::basic(), @@ -499,7 +500,7 @@ pub struct PhaseController<'a> { // If true then the compiler will try to run the callback even if the phase // ends with an error. Note that this is not always possible. pub run_callback_on_error: bool, - pub callback: Box<dyn Fn(&mut CompileState) + 'a>, + pub callback: Box<dyn Fn(&mut CompileState) + 'a + sync::Send>, } impl<'a> PhaseController<'a> { |
