diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index fad0a553802a2..27f7dfa89905e 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -44,7 +44,7 @@ pub struct Builder<'a> { pub top_stage: u32, pub kind: Kind, cache: Cache, - stack: RefCell>>, + stack: RefCell>>, time_spent_on_dependencies: Cell, pub paths: Vec, graph_nodes: RefCell>, diff --git a/src/bootstrap/cache.rs b/src/bootstrap/cache.rs index d81c6bc28e527..bca5ff85ba23e 100644 --- a/src/bootstrap/cache.rs +++ b/src/bootstrap/cache.rs @@ -249,7 +249,7 @@ lazy_static! { pub struct Cache( RefCell, // actually a HashMap> + Box, // actually a HashMap> >> ); diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs index 298bd58c6cdfe..7d94bac66f770 100644 --- a/src/bootstrap/compile.rs +++ b/src/bootstrap/compile.rs @@ -1189,7 +1189,7 @@ pub fn run_cargo(builder: &Builder, cargo: &mut Command, stamp: &Path, is_check: pub fn stream_cargo( builder: &Builder, cargo: &mut Command, - cb: &mut FnMut(CargoMessage), + cb: &mut dyn FnMut(CargoMessage), ) -> bool { if builder.config.dry_run { return true; diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index 5f66d0b102e26..cd9a639e82e2f 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -113,6 +113,7 @@ //! More documentation can be found in each respective module below, and you can //! also check out the `src/bootstrap/README.md` file for more information. +#![deny(bare_trait_objects)] #![deny(warnings)] #![feature(core_intrinsics)] #![feature(drain_filter)] @@ -1174,13 +1175,13 @@ impl Build { /// Copies the `src` directory recursively to `dst`. Both are assumed to exist /// when this function is called. Unwanted files or directories can be skipped /// by returning `false` from the filter function. - pub fn cp_filtered(&self, src: &Path, dst: &Path, filter: &Fn(&Path) -> bool) { + pub fn cp_filtered(&self, src: &Path, dst: &Path, filter: &dyn Fn(&Path) -> bool) { // Immediately recurse with an empty relative path self.recurse_(src, dst, Path::new(""), filter) } // Inner function does the actual work - fn recurse_(&self, src: &Path, dst: &Path, relative: &Path, filter: &Fn(&Path) -> bool) { + fn recurse_(&self, src: &Path, dst: &Path, relative: &Path, filter: &dyn Fn(&Path) -> bool) { for f in self.read_dir(src) { let path = f.path(); let name = path.file_name().unwrap();