Rollup merge of #57308 - Zoxc:controller-sync, r=michaelwoerister

Make CompileController thread-safe
This commit is contained in:
Pietro Albini 2019-01-07 16:25:35 +01:00 committed by GitHub
commit e319f12cf4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 3 deletions

View File

@ -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) {}

View File

@ -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> {