Skip to content

Commit 212dae1

Browse files
committed
Auto merge of #116052 - oli-obk:ceci_nest_pas_une_query, r=WaffleLapkin
Add a way to decouple the implementation and the declaration of a TyCtxt method. properly addresses rust-lang/rust#115819 accepted MCP: rust-lang/compiler-team#395
2 parents 73b3c86 + 0406c3c commit 212dae1

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/bin/miri.rs

+8-7
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ use rustc_middle::{
2828
middle::exported_symbols::{
2929
ExportedSymbol, SymbolExportInfo, SymbolExportKind, SymbolExportLevel,
3030
},
31-
query::{ExternProviders, LocalCrate},
31+
query::{LocalCrate},
32+
util::Providers,
3233
ty::TyCtxt,
3334
};
3435
use rustc_session::config::{CrateType, ErrorOutputType, OptLevel};
@@ -43,11 +44,11 @@ struct MiriCompilerCalls {
4344

4445
impl rustc_driver::Callbacks for MiriCompilerCalls {
4546
fn config(&mut self, config: &mut Config) {
46-
config.override_queries = Some(|_, _, external_providers| {
47-
external_providers.used_crate_source = |tcx, cnum| {
48-
let mut providers = ExternProviders::default();
49-
rustc_metadata::provide_extern(&mut providers);
50-
let mut crate_source = (providers.used_crate_source)(tcx, cnum);
47+
config.override_queries = Some(|_, providers| {
48+
providers.extern_queries.used_crate_source = |tcx, cnum| {
49+
let mut providers = Providers::default();
50+
rustc_metadata::provide(&mut providers);
51+
let mut crate_source = (providers.extern_queries.used_crate_source)(tcx, cnum);
5152
// HACK: rustc will emit "crate ... required to be available in rlib format, but
5253
// was not found in this form" errors once we use `tcx.dependency_formats()` if
5354
// there's no rlib provided, so setting a dummy path here to workaround those errors.
@@ -125,7 +126,7 @@ impl rustc_driver::Callbacks for MiriBeRustCompilerCalls {
125126
if config.opts.prints.is_empty() && self.target_crate {
126127
// Queries overridden here affect the data stored in `rmeta` files of dependencies,
127128
// which will be used later in non-`MIRI_BE_RUSTC` mode.
128-
config.override_queries = Some(|_, local_providers, _| {
129+
config.override_queries = Some(|_, local_providers| {
129130
// `exported_symbols` and `reachable_non_generics` provided by rustc always returns
130131
// an empty result if `tcx.sess.opts.output_types.should_codegen()` is false.
131132
local_providers.exported_symbols = |tcx, LocalCrate| {

0 commit comments

Comments
 (0)