about summary refs log tree commit diff
path: root/compiler/rustc_query_impl
diff options
context:
space:
mode:
authorJohn Kåre Alsaker <john.kare.alsaker@gmail.com>2023-02-14 14:17:04 +0100
committerJohn Kåre Alsaker <john.kare.alsaker@gmail.com>2023-02-16 14:55:05 +0100
commit067bf2ac1340a9362585d0d1690b9da24195582c (patch)
tree425d4e06333d0c6d5a0200c3ff94b375b7d0209b /compiler/rustc_query_impl
parent265e1e968d918f4dc9e62dfb712c600af136f92f (diff)
downloadrust-067bf2ac1340a9362585d0d1690b9da24195582c.tar.gz
rust-067bf2ac1340a9362585d0d1690b9da24195582c.zip
Move provider fields back to rustc_query_impl
Diffstat (limited to 'compiler/rustc_query_impl')
-rw-r--r--compiler/rustc_query_impl/src/lib.rs2
-rw-r--r--compiler/rustc_query_impl/src/plumbing.rs25
2 files changed, 17 insertions, 10 deletions
diff --git a/compiler/rustc_query_impl/src/lib.rs b/compiler/rustc_query_impl/src/lib.rs
index 372f2c69c78..d7708a3bc3f 100644
--- a/compiler/rustc_query_impl/src/lib.rs
+++ b/compiler/rustc_query_impl/src/lib.rs
@@ -21,10 +21,10 @@ 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::QueryEngine;
 use rustc_middle::ty::query::{
     query_keys, query_provided, query_provided_to_value, query_storage, query_values,
 };
+use rustc_middle::ty::query::{ExternProviders, Providers, QueryEngine};
 use rustc_middle::ty::TyCtxt;
 use rustc_span::Span;
 
diff --git a/compiler/rustc_query_impl/src/plumbing.rs b/compiler/rustc_query_impl/src/plumbing.rs
index 318077e75c4..532c1b52f53 100644
--- a/compiler/rustc_query_impl/src/plumbing.rs
+++ b/compiler/rustc_query_impl/src/plumbing.rs
@@ -278,13 +278,13 @@ macro_rules! hash_result {
 
 macro_rules! get_provider {
     ([][$tcx:expr, $name:ident, $key:expr]) => {{
-        $tcx.query_system.local_providers.$name
+        $tcx.queries.local_providers.$name
     }};
     ([(separate_provide_extern) $($rest:tt)*][$tcx:expr, $name:ident, $key:expr]) => {{
         if $key.query_crate_is_local() {
-            $tcx.query_system.local_providers.$name
+            $tcx.queries.local_providers.$name
         } else {
-            $tcx.query_system.extern_providers.$name
+            $tcx.queries.extern_providers.$name
         }
     }};
     ([$other:tt $($modifiers:tt)*][$($args:tt)*]) => {
@@ -500,12 +500,11 @@ macro_rules! define_queries {
             }
 
             #[inline]
-            // key is only sometimes used
             #[allow(unused_variables)]
-            fn compute(tcx: TyCtxt<'tcx>, key: Self::Key) -> Self::Value {
+            fn compute(qcx: QueryCtxt<'tcx>, key: Self::Key) -> Self::Value {
                 query_provided_to_value::$name(
-                    tcx,
-                    get_provider!([$($modifiers)*][tcx, $name, key])(tcx, key)
+                    qcx.tcx,
+                    get_provider!([$($modifiers)*][qcx, $name, key])(qcx.tcx, key)
                 )
             }
 
@@ -664,12 +663,18 @@ macro_rules! define_queries {
     }
 }
 
-use crate::OnDiskCache;
+use crate::{ExternProviders, OnDiskCache, Providers};
 
 impl<'tcx> Queries<'tcx> {
-    pub fn new(on_disk_cache: Option<OnDiskCache<'tcx>>) -> Self {
+    pub fn new(
+        local_providers: Providers,
+        extern_providers: ExternProviders,
+        on_disk_cache: Option<OnDiskCache<'tcx>>,
+    ) -> Self {
         use crate::query_structs;
         Queries {
+            local_providers: Box::new(local_providers),
+            extern_providers: Box::new(extern_providers),
             query_structs: make_dep_kind_array!(query_structs).to_vec(),
             on_disk_cache,
             jobs: AtomicU64::new(1),
@@ -683,6 +688,8 @@ macro_rules! define_queries_struct {
      input: ($(([$($modifiers:tt)*] [$($attr:tt)*] [$name:ident]))*)) => {
         #[derive(Default)]
         pub struct Queries<'tcx> {
+            local_providers: Box<Providers>,
+            extern_providers: Box<ExternProviders>,
             query_structs: Vec<$crate::plumbing::QueryStruct<'tcx>>,
             pub on_disk_cache: Option<OnDiskCache<'tcx>>,
             jobs: AtomicU64,