Skip to content

Commit aa51449

Browse files
committed
Fix hotplug_codegen_backend test
1 parent 12a2941 commit aa51449

File tree

1 file changed

+26
-32
lines changed

1 file changed

+26
-32
lines changed

src/test/run-make-fulldeps/hotplug_codegen_backend/the_backend.rs

+26-32
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
extern crate rustc_codegen_ssa;
44
extern crate rustc_errors;
55
extern crate rustc_middle;
6-
#[macro_use]
76
extern crate rustc_data_structures;
87
extern crate rustc_driver;
98
extern crate rustc_hir;
@@ -12,17 +11,19 @@ extern crate rustc_span;
1211
extern crate rustc_symbol_mangling;
1312
extern crate rustc_target;
1413

14+
use rustc_codegen_ssa::back::linker::LinkerInfo;
1515
use rustc_codegen_ssa::traits::CodegenBackend;
16-
use rustc_data_structures::owning_ref::OwningRef;
16+
use rustc_codegen_ssa::{CodegenResults, CrateInfo};
17+
use rustc_data_structures::fx::FxHashMap;
1718
use rustc_data_structures::sync::MetadataRef;
1819
use rustc_errors::ErrorReported;
1920
use rustc_middle::dep_graph::DepGraph;
21+
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
2022
use rustc_middle::middle::cstore::{EncodedMetadata, MetadataLoader, MetadataLoaderDyn};
2123
use rustc_middle::ty::query::Providers;
2224
use rustc_middle::ty::TyCtxt;
2325
use rustc_session::config::OutputFilenames;
2426
use rustc_session::Session;
25-
use rustc_span::symbol::Symbol;
2627
use rustc_target::spec::Target;
2728
use std::any::Any;
2829
use std::path::Path;
@@ -31,14 +32,11 @@ pub struct NoLlvmMetadataLoader;
3132

3233
impl MetadataLoader for NoLlvmMetadataLoader {
3334
fn get_rlib_metadata(&self, _: &Target, filename: &Path) -> Result<MetadataRef, String> {
34-
let buf =
35-
std::fs::read(filename).map_err(|e| format!("metadata file open err: {:?}", e))?;
36-
let buf: OwningRef<Vec<u8>, [u8]> = OwningRef::new(buf);
37-
Ok(rustc_erase_owner!(buf.map_owner_box()))
35+
unreachable!("some_crate.rs shouldn't depend on any external crates");
3836
}
3937

4038
fn get_dylib_metadata(&self, target: &Target, filename: &Path) -> Result<MetadataRef, String> {
41-
self.get_rlib_metadata(target, filename)
39+
unreachable!("some_crate.rs shouldn't depend on any external crates");
4240
}
4341
}
4442

@@ -49,53 +47,49 @@ impl CodegenBackend for TheBackend {
4947
Box::new(NoLlvmMetadataLoader)
5048
}
5149

52-
fn provide(&self, providers: &mut Providers) {
53-
rustc_symbol_mangling::provide(providers);
54-
55-
providers.supported_target_features = |tcx, _cnum| {
56-
Default::default() // Just a dummy
57-
};
58-
providers.is_reachable_non_generic = |_tcx, _defid| true;
59-
providers.exported_symbols = |_tcx, _crate| &[];
60-
}
61-
62-
fn provide_extern(&self, providers: &mut Providers) {
63-
providers.is_reachable_non_generic = |_tcx, _defid| true;
64-
}
50+
fn provide(&self, providers: &mut Providers) {}
51+
fn provide_extern(&self, providers: &mut Providers) {}
6552

6653
fn codegen_crate<'a, 'tcx>(
6754
&self,
6855
tcx: TyCtxt<'tcx>,
69-
_metadata: EncodedMetadata,
56+
metadata: EncodedMetadata,
7057
_need_metadata_module: bool,
7158
) -> Box<dyn Any> {
7259
use rustc_hir::def_id::LOCAL_CRATE;
7360

74-
Box::new(tcx.crate_name(LOCAL_CRATE) as Symbol)
61+
Box::new(CodegenResults {
62+
crate_name: tcx.crate_name(LOCAL_CRATE),
63+
modules: vec![],
64+
allocator_module: None,
65+
metadata_module: None,
66+
metadata,
67+
windows_subsystem: None,
68+
linker_info: LinkerInfo::new(tcx),
69+
crate_info: CrateInfo::new(tcx),
70+
})
7571
}
7672

7773
fn join_codegen(
7874
&self,
7975
ongoing_codegen: Box<dyn Any>,
8076
_sess: &Session,
81-
_dep_graph: &DepGraph,
82-
) -> Result<Box<dyn Any>, ErrorReported> {
83-
let crate_name = ongoing_codegen
84-
.downcast::<Symbol>()
85-
.expect("in join_codegen: ongoing_codegen is not a Symbol");
86-
Ok(crate_name)
77+
) -> Result<(CodegenResults, FxHashMap<WorkProductId, WorkProduct>), ErrorReported> {
78+
let codegen_results = ongoing_codegen
79+
.downcast::<CodegenResults>()
80+
.expect("in join_codegen: ongoing_codegen is not a CodegenResults");
81+
Ok((*codegen_results, FxHashMap::default()))
8782
}
8883

8984
fn link(
9085
&self,
9186
sess: &Session,
92-
codegen_results: Box<dyn Any>,
87+
codegen_results: CodegenResults,
9388
outputs: &OutputFilenames,
9489
) -> Result<(), ErrorReported> {
9590
use rustc_session::{config::CrateType, output::out_filename};
9691
use std::io::Write;
97-
let crate_name =
98-
codegen_results.downcast::<Symbol>().expect("in link: codegen_results is not a Symbol");
92+
let crate_name = codegen_results.crate_name;
9993
for &crate_type in sess.opts.crate_types.iter() {
10094
if crate_type != CrateType::Rlib {
10195
sess.fatal(&format!("Crate type is {:?}", crate_type));

0 commit comments

Comments
 (0)