mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-19 18:34:08 +00:00
Rollup merge of #57308 - Zoxc:controller-sync, r=michaelwoerister
Make CompileController thread-safe
This commit is contained in:
commit
e319f12cf4
@ -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) {}
|
||||
|
||||
|
@ -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> {
|
||||
|
Loading…
Reference in New Issue
Block a user