diff --git a/src/librustc_codegen_llvm/back/archive.rs b/src/librustc_codegen_llvm/back/archive.rs index 609629bffb9..9ea6c44502a 100644 --- a/src/librustc_codegen_llvm/back/archive.rs +++ b/src/librustc_codegen_llvm/back/archive.rs @@ -48,7 +48,7 @@ enum Addition { }, Archive { archive: ArchiveRO, - skip: Box bool>, + skip: Box bool>, }, } diff --git a/src/librustc_codegen_llvm/back/link.rs b/src/librustc_codegen_llvm/back/link.rs index e8636b1c999..a7f0910a6fc 100644 --- a/src/librustc_codegen_llvm/back/link.rs +++ b/src/librustc_codegen_llvm/back/link.rs @@ -251,7 +251,7 @@ fn filename_for_metadata(sess: &Session, crate_name: &str, outputs: &OutputFilen pub(crate) fn each_linked_rlib(sess: &Session, info: &CrateInfo, - f: &mut FnMut(CrateNum, &Path)) -> Result<(), String> { + f: &mut dyn FnMut(CrateNum, &Path)) -> Result<(), String> { let crates = info.used_crates_static.iter(); let fmts = sess.dependency_formats.borrow(); let fmts = fmts.get(&config::CrateTypeExecutable) @@ -984,7 +984,7 @@ fn exec_linker(sess: &Session, cmd: &mut Command, out_filename: &Path, tmpdir: & } } -fn link_args(cmd: &mut Linker, +fn link_args(cmd: &mut dyn Linker, sess: &Session, crate_type: config::CrateType, tmpdir: &Path, @@ -1195,7 +1195,7 @@ fn link_args(cmd: &mut Linker, // Also note that the native libraries linked here are only the ones located // in the current crate. Upstream crates with native library dependencies // may have their native library pulled in above. -fn add_local_native_libraries(cmd: &mut Linker, +fn add_local_native_libraries(cmd: &mut dyn Linker, sess: &Session, codegen_results: &CodegenResults) { sess.target_filesearch(PathKind::All).for_each_lib_search_path(|path, k| { @@ -1226,7 +1226,7 @@ fn add_local_native_libraries(cmd: &mut Linker, // Rust crates are not considered at all when creating an rlib output. All // dependencies will be linked when producing the final output (instead of // the intermediate rlib version) -fn add_upstream_rust_crates(cmd: &mut Linker, +fn add_upstream_rust_crates(cmd: &mut dyn Linker, sess: &Session, codegen_results: &CodegenResults, crate_type: config::CrateType, @@ -1350,7 +1350,7 @@ fn add_upstream_rust_crates(cmd: &mut Linker, // it's packed in a .rlib, it contains stuff that are not objects that will // make the linker error. So we must remove those bits from the .rlib before // linking it. - fn link_sanitizer_runtime(cmd: &mut Linker, + fn link_sanitizer_runtime(cmd: &mut dyn Linker, sess: &Session, codegen_results: &CodegenResults, tmpdir: &Path, @@ -1419,7 +1419,7 @@ fn add_upstream_rust_crates(cmd: &mut Linker, // (aka we're making an executable), we can just pass the rlib blindly to // the linker (fast) because it's fine if it's not actually included as // we're at the end of the dependency chain. - fn add_static_crate(cmd: &mut Linker, + fn add_static_crate(cmd: &mut dyn Linker, sess: &Session, codegen_results: &CodegenResults, tmpdir: &Path, @@ -1524,7 +1524,7 @@ fn add_upstream_rust_crates(cmd: &mut Linker, } // Same thing as above, but for dynamic crates instead of static crates. - fn add_dynamic_crate(cmd: &mut Linker, sess: &Session, cratepath: &Path) { + fn add_dynamic_crate(cmd: &mut dyn Linker, sess: &Session, cratepath: &Path) { // If we're performing LTO, then it should have been previously required // that all upstream rust dependencies were available in an rlib format. assert!(!is_full_lto_enabled(sess)); @@ -1559,7 +1559,7 @@ fn add_upstream_rust_crates(cmd: &mut Linker, // generic function calls a native function, then the generic function must // be instantiated in the target crate, meaning that the native symbol must // also be resolved in the target crate. -fn add_upstream_native_libraries(cmd: &mut Linker, +fn add_upstream_native_libraries(cmd: &mut dyn Linker, sess: &Session, codegen_results: &CodegenResults, crate_type: config::CrateType) { diff --git a/src/librustc_codegen_llvm/back/linker.rs b/src/librustc_codegen_llvm/back/linker.rs index f07c758807e..f5f48689385 100644 --- a/src/librustc_codegen_llvm/back/linker.rs +++ b/src/librustc_codegen_llvm/back/linker.rs @@ -44,7 +44,7 @@ impl LinkerInfo { pub fn to_linker<'a>(&'a self, cmd: Command, - sess: &'a Session) -> Box { + sess: &'a Session) -> Box { match sess.linker_flavor() { LinkerFlavor::Lld(LldFlavor::Link) | LinkerFlavor::Msvc => { @@ -52,14 +52,14 @@ impl LinkerInfo { cmd, sess, info: self - }) as Box + }) as Box } LinkerFlavor::Em => { Box::new(EmLinker { cmd, sess, info: self - }) as Box + }) as Box } LinkerFlavor::Gcc => { Box::new(GccLinker { @@ -68,7 +68,7 @@ impl LinkerInfo { info: self, hinted_static: false, is_ld: false, - }) as Box + }) as Box } LinkerFlavor::Lld(LldFlavor::Ld) | @@ -80,14 +80,14 @@ impl LinkerInfo { info: self, hinted_static: false, is_ld: true, - }) as Box + }) as Box } LinkerFlavor::Lld(LldFlavor::Wasm) => { Box::new(WasmLd { cmd, sess, - }) as Box + }) as Box } } } diff --git a/src/librustc_codegen_llvm/back/rpath.rs b/src/librustc_codegen_llvm/back/rpath.rs index 8e5e7d37648..f46205cb590 100644 --- a/src/librustc_codegen_llvm/back/rpath.rs +++ b/src/librustc_codegen_llvm/back/rpath.rs @@ -22,7 +22,7 @@ pub struct RPathConfig<'a> { pub is_like_osx: bool, pub has_rpath: bool, pub linker_is_gnu: bool, - pub get_install_prefix_lib_path: &'a mut FnMut() -> PathBuf, + pub get_install_prefix_lib_path: &'a mut dyn FnMut() -> PathBuf, } pub fn get_rpath_flags(config: &mut RPathConfig) -> Vec { diff --git a/src/librustc_codegen_llvm/back/write.rs b/src/librustc_codegen_llvm/back/write.rs index 5382bbafcf4..467782518f6 100644 --- a/src/librustc_codegen_llvm/back/write.rs +++ b/src/librustc_codegen_llvm/back/write.rs @@ -140,7 +140,7 @@ pub fn create_target_machine(sess: &Session, find_features: bool) -> TargetMachi // that `is_pie_binary` is false. When we discover LLVM target features // `sess.crate_types` is uninitialized so we cannot access it. pub fn target_machine_factory(sess: &Session, find_features: bool) - -> Arc Result + Send + Sync> + -> Arc Result + Send + Sync> { let reloc_model = get_reloc_model(sess); @@ -343,7 +343,7 @@ pub struct CodegenContext { regular_module_config: Arc, metadata_module_config: Arc, allocator_module_config: Arc, - pub tm_factory: Arc Result + Send + Sync>, + pub tm_factory: Arc Result + Send + Sync>, pub msvc_imps_needed: bool, pub target_pointer_width: String, debuginfo: config::DebugInfoLevel, @@ -362,7 +362,7 @@ pub struct CodegenContext { // compiling incrementally pub incr_comp_session_dir: Option, // Channel back to the main control thread to send messages to - coordinator_send: Sender>, + coordinator_send: Sender>, // A reference to the TimeGraph so we can register timings. None means that // measuring is disabled. time_graph: Option, @@ -884,7 +884,7 @@ pub fn start_async_codegen(tcx: TyCtxt, time_graph: Option, link: LinkMeta, metadata: EncodedMetadata, - coordinator_receive: Receiver>, + coordinator_receive: Receiver>, total_cgus: usize) -> OngoingCodegen { let sess = tcx.sess; @@ -1412,7 +1412,7 @@ fn start_executing_work(tcx: TyCtxt, crate_info: &CrateInfo, shared_emitter: SharedEmitter, codegen_worker_send: Sender, - coordinator_receive: Receiver>, + coordinator_receive: Receiver>, total_cgus: usize, jobserver: Client, time_graph: Option, @@ -1976,7 +1976,7 @@ fn spawn_work(cgcx: CodegenContext, work: WorkItem) { // Set up a destructor which will fire off a message that we're done as // we exit. struct Bomb { - coordinator_send: Sender>, + coordinator_send: Sender>, result: Option, worker_id: usize, } @@ -2056,7 +2056,7 @@ pub unsafe fn with_llvm_pmb(llmod: ModuleRef, config: &ModuleConfig, opt_level: llvm::CodeGenOptLevel, prepare_for_thin_lto: bool, - f: &mut FnMut(llvm::PassManagerBuilderRef)) { + f: &mut dyn FnMut(llvm::PassManagerBuilderRef)) { use std::ptr; // Create the PassManagerBuilder for LLVM. We configure it with @@ -2243,7 +2243,7 @@ pub struct OngoingCodegen { linker_info: LinkerInfo, crate_info: CrateInfo, time_graph: Option, - coordinator_send: Sender>, + coordinator_send: Sender>, codegen_worker_receive: Receiver, shared_emitter_main: SharedEmitterMain, future: thread::JoinHandle>, diff --git a/src/librustc_codegen_llvm/base.rs b/src/librustc_codegen_llvm/base.rs index 179fffc4e7f..ea26e271c9b 100644 --- a/src/librustc_codegen_llvm/base.rs +++ b/src/librustc_codegen_llvm/base.rs @@ -717,7 +717,7 @@ pub fn iter_globals(llmod: llvm::ModuleRef) -> ValueIter { } pub fn codegen_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, - rx: mpsc::Receiver>) + rx: mpsc::Receiver>) -> OngoingCodegen { check_for_rustc_errors_attr(tcx); diff --git a/src/librustc_codegen_llvm/intrinsic.rs b/src/librustc_codegen_llvm/intrinsic.rs index 6bb5456f903..7625e4c7e0f 100644 --- a/src/librustc_codegen_llvm/intrinsic.rs +++ b/src/librustc_codegen_llvm/intrinsic.rs @@ -916,7 +916,7 @@ fn gen_fn<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>, name: &str, inputs: Vec>, output: Ty<'tcx>, - codegen: &mut for<'b> FnMut(Builder<'b, 'tcx>)) + codegen: &mut dyn for<'b> FnMut(Builder<'b, 'tcx>)) -> ValueRef { let rust_fn_ty = cx.tcx.mk_fn_ptr(ty::Binder::bind(cx.tcx.mk_fn_sig( inputs.into_iter(), @@ -936,7 +936,7 @@ fn gen_fn<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>, // // This function is only generated once and is then cached. fn get_rust_try_fn<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>, - codegen: &mut for<'b> FnMut(Builder<'b, 'tcx>)) + codegen: &mut dyn for<'b> FnMut(Builder<'b, 'tcx>)) -> ValueRef { if let Some(llfn) = cx.rust_try_fn.get() { return llfn; diff --git a/src/librustc_codegen_llvm/lib.rs b/src/librustc_codegen_llvm/lib.rs index a2f28417520..8aa7902021f 100644 --- a/src/librustc_codegen_llvm/lib.rs +++ b/src/librustc_codegen_llvm/lib.rs @@ -23,6 +23,7 @@ #![feature(custom_attribute)] #![feature(fs_read_write)] #![allow(unused_attributes)] +#![deny(bare_trait_objects)] #![feature(libc)] #![feature(quote)] #![feature(range_contains)] @@ -125,7 +126,7 @@ impl !Send for LlvmCodegenBackend {} // Llvm is on a per-thread basis impl !Sync for LlvmCodegenBackend {} impl LlvmCodegenBackend { - pub fn new() -> Box { + pub fn new() -> Box { box LlvmCodegenBackend(()) } } @@ -178,7 +179,7 @@ impl CodegenBackend for LlvmCodegenBackend { target_features(sess) } - fn metadata_loader(&self) -> Box { + fn metadata_loader(&self) -> Box { box metadata::LlvmMetadataLoader } @@ -198,14 +199,14 @@ impl CodegenBackend for LlvmCodegenBackend { fn codegen_crate<'a, 'tcx>( &self, tcx: TyCtxt<'a, 'tcx, 'tcx>, - rx: mpsc::Receiver> - ) -> Box { + rx: mpsc::Receiver> + ) -> Box { box base::codegen_crate(tcx, rx) } fn join_codegen_and_link( &self, - ongoing_codegen: Box, + ongoing_codegen: Box, sess: &Session, dep_graph: &DepGraph, outputs: &OutputFilenames, @@ -247,7 +248,7 @@ impl CodegenBackend for LlvmCodegenBackend { /// This is the entrypoint for a hot plugged rustc_codegen_llvm #[no_mangle] -pub fn __rustc_codegen_backend() -> Box { +pub fn __rustc_codegen_backend() -> Box { LlvmCodegenBackend::new() }