diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-11-26 10:39:10 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-26 10:39:10 +0100 |
| commit | 42010a23f54c8486b77f97862dff02288cc10800 (patch) | |
| tree | 253576f313264ca953d30b79b4f82b0fa6fc2c14 /compiler | |
| parent | 4733312e09c04fec3626ea27083da615d1a1df4d (diff) | |
| parent | 1767f9f9bfd63676cee998ea086968ab5f047866 (diff) | |
| download | rust-42010a23f54c8486b77f97862dff02288cc10800.tar.gz rust-42010a23f54c8486b77f97862dff02288cc10800.zip | |
Rollup merge of #104675 - SarthakSingh31:issue-101666, r=jyn514
Unsupported query error now specifies if its unsupported for local or external crate Fixes #101666. I had to move `keys.rs` from `rustc_query_impl` to `rustc_middle`. I don't know if that is problematic. I couldn't think of any other way to get the needed information inside `rustc_middle`. r? ```@jyn514```
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_middle/src/ty/query.rs | 7 | ||||
| -rw-r--r-- | compiler/rustc_query_impl/src/lib.rs | 3 |
2 files changed, 6 insertions, 4 deletions
diff --git a/compiler/rustc_middle/src/ty/query.rs b/compiler/rustc_middle/src/ty/query.rs index 0f62da9992f..afbc9eb0512 100644 --- a/compiler/rustc_middle/src/ty/query.rs +++ b/compiler/rustc_middle/src/ty/query.rs @@ -276,13 +276,16 @@ macro_rules! define_callbacks { impl Default for Providers { fn default() -> Self { + use crate::query::Key; + Providers { $($name: |_, key| bug!( - "`tcx.{}({:?})` is not supported for external or local crate;\n - hint: Queries can be either made to the local crate, or the external crate. This error means you tried to use it for one that's not supported (likely the local crate).\n + "`tcx.{}({:?})` is not supported for {} crate;\n + hint: Queries can be either made to the local crate, or the external crate. This error means you tried to use it for one that's not supported.\n If that's not the case, {} was likely never assigned to a provider function.\n", stringify!($name), key, + if key.query_crate_is_local() { "local" } else { "external" }, stringify!($name), ),)* } diff --git a/compiler/rustc_query_impl/src/lib.rs b/compiler/rustc_query_impl/src/lib.rs index e6df6956158..d426a2b6b78 100644 --- a/compiler/rustc_query_impl/src/lib.rs +++ b/compiler/rustc_query_impl/src/lib.rs @@ -20,6 +20,7 @@ extern crate rustc_middle; use rustc_data_structures::sync::AtomicU64; use rustc_middle::arena::Arena; use rustc_middle::dep_graph::{self, DepKindStruct}; +use rustc_middle::query::Key; use rustc_middle::ty::query::{query_keys, query_storage, query_stored, query_values}; use rustc_middle::ty::query::{ExternProviders, Providers, QueryEngine}; use rustc_middle::ty::TyCtxt; @@ -32,8 +33,6 @@ use rustc_query_system::query::*; #[cfg(parallel_compiler)] pub use rustc_query_system::query::{deadlock, QueryContext}; -use rustc_middle::query::Key; - pub use rustc_query_system::query::QueryConfig; pub(crate) use rustc_query_system::query::QueryVTable; |
