]> git.lizzy.rs Git - rust.git/commitdiff
Remove SimpleDefKind
authorMark Rousskov <mark.simulacrum@gmail.com>
Wed, 16 Feb 2022 23:06:50 +0000 (18:06 -0500)
committerMark Rousskov <mark.simulacrum@gmail.com>
Thu, 17 Feb 2022 23:08:45 +0000 (18:08 -0500)
compiler/rustc_query_impl/src/lib.rs
compiler/rustc_query_impl/src/plumbing.rs
compiler/rustc_query_impl/src/util.rs [deleted file]
compiler/rustc_query_system/src/query/job.rs
compiler/rustc_query_system/src/query/mod.rs

index 55e95e1a592d34f51c9cf47c7f8edb02d18a0608..832540a85e74b9ab2135ba967e684f3fff5c304d 100644 (file)
@@ -44,8 +44,6 @@
 mod profiling_support;
 pub use self::profiling_support::alloc_self_profile_query_strings;
 
-mod util;
-
 fn describe_as_module(def_id: LocalDefId, tcx: TyCtxt<'_>) -> String {
     if def_id.is_top_level_module() {
         "top-level module".to_string()
index ff9d32a6776520fb1aae2bd69b1900477fb61946..f9668a76723ddb1a12507021be3e0986ed0e9dde 100644 (file)
@@ -289,13 +289,11 @@ pub fn $name<$tcx>(tcx: QueryCtxt<$tcx>, key: query_keys::$name<$tcx>) -> QueryS
                 } else {
                     Some(key.default_span(*tcx))
                 };
-                let def_id = key.key_as_def_id();
-                let def_kind = def_id
+                // Use `tcx.hir().opt_def_kind()` to reduce the chance of
+                // accidentally triggering an infinite query loop.
+                let def_kind = key.key_as_def_id()
                     .and_then(|def_id| def_id.as_local())
-                    // Use `tcx.hir().opt_def_kind()` to reduce the chance of
-                    // accidentally triggering an infinite query loop.
-                    .and_then(|def_id| tcx.hir().opt_def_kind(def_id))
-                    .map(|def_kind| $crate::util::def_kind_to_simple_def_kind(def_kind));
+                    .and_then(|def_id| tcx.hir().opt_def_kind(def_id));
                 let hash = || {
                     let mut hcx = tcx.create_stable_hashing_context();
                     let mut hasher = StableHasher::new();
diff --git a/compiler/rustc_query_impl/src/util.rs b/compiler/rustc_query_impl/src/util.rs
deleted file mode 100644 (file)
index 517c107..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-use rustc_hir::def::DefKind;
-use rustc_query_system::query::SimpleDefKind;
-
-/// Convert a [`DefKind`] to a [`SimpleDefKind`].
-///
-/// *See [`SimpleDefKind`]'s docs for more information.*
-pub(crate) fn def_kind_to_simple_def_kind(def_kind: DefKind) -> SimpleDefKind {
-    match def_kind {
-        DefKind::Struct => SimpleDefKind::Struct,
-        DefKind::Enum => SimpleDefKind::Enum,
-        DefKind::Union => SimpleDefKind::Union,
-        DefKind::Trait => SimpleDefKind::Trait,
-        DefKind::TyAlias => SimpleDefKind::TyAlias,
-        DefKind::TraitAlias => SimpleDefKind::TraitAlias,
-
-        _ => SimpleDefKind::Other,
-    }
-}
index adf878a7f04c189a84c025e9737bb09a7ced0fee..4588403925efd05857cfb5c3ad9e24354a9ec4ad 100644 (file)
@@ -1,6 +1,7 @@
 use crate::dep_graph::DepContext;
 use crate::query::plumbing::CycleError;
-use crate::query::{QueryContext, QueryStackFrame, SimpleDefKind};
+use crate::query::{QueryContext, QueryStackFrame};
+use rustc_hir::def::DefKind;
 
 use rustc_data_structures::fx::FxHashMap;
 use rustc_errors::{struct_span_err, Diagnostic, DiagnosticBuilder, Handler, Level};
@@ -556,15 +557,13 @@ pub(crate) fn report_cycle<'a>(
     }
 
     if stack.iter().all(|entry| {
-        entry.query.def_kind.map_or(false, |def_kind| {
-            matches!(def_kind, SimpleDefKind::TyAlias | SimpleDefKind::TraitAlias)
-        })
+        entry
+            .query
+            .def_kind
+            .map_or(false, |def_kind| matches!(def_kind, DefKind::TyAlias | DefKind::TraitAlias))
     }) {
         if stack.iter().all(|entry| {
-            entry
-                .query
-                .def_kind
-                .map_or(false, |def_kind| matches!(def_kind, SimpleDefKind::TyAlias))
+            entry.query.def_kind.map_or(false, |def_kind| matches!(def_kind, DefKind::TyAlias))
         }) {
             err.note("type aliases cannot be recursive");
             err.help("consider using a struct, enum, or union instead to break the cycle");
index 361ae3c43527dcd26eb701df848f4d642ace24c9..de64ebb62030122e8d696a8db7eb41f3c639ca1d 100644 (file)
@@ -19,6 +19,7 @@
 use rustc_data_structures::sync::Lock;
 use rustc_data_structures::thin_vec::ThinVec;
 use rustc_errors::Diagnostic;
+use rustc_hir::def::DefKind;
 use rustc_span::Span;
 
 /// Description of a frame in the query stack.
@@ -29,46 +30,20 @@ pub struct QueryStackFrame {
     pub name: &'static str,
     pub description: String,
     span: Option<Span>,
-    /// The `DefKind` this query frame is associated with, if applicable.
-    ///
-    /// We can't use `rustc_hir::def::DefKind` because `rustc_hir` is not
-    /// available in `rustc_query_system`. Instead, we have a simplified
-    /// custom version of it, called [`SimpleDefKind`].
-    def_kind: Option<SimpleDefKind>,
+    def_kind: Option<DefKind>,
     /// This hash is used to deterministically pick
     /// a query to remove cycles in the parallel compiler.
     #[cfg(parallel_compiler)]
     hash: u64,
 }
 
-/// A simplified version of `rustc_hir::def::DefKind`.
-///
-/// It was added to help improve cycle errors caused by recursive type aliases.
-/// As of August 2021, `rustc_query_system` cannot depend on `rustc_hir`
-/// because it would create a dependency cycle. So, instead, a simplified
-/// version of `DefKind` was added to `rustc_query_system`.
-///
-/// `DefKind`s are converted to `SimpleDefKind`s in `rustc_query_impl`.
-#[derive(Debug, Copy, Clone)]
-pub enum SimpleDefKind {
-    Struct,
-    Enum,
-    Union,
-    Trait,
-    TyAlias,
-    TraitAlias,
-
-    // FIXME: add more from `rustc_hir::def::DefKind` and then remove `Other`
-    Other,
-}
-
 impl QueryStackFrame {
     #[inline]
     pub fn new(
         name: &'static str,
         description: String,
         span: Option<Span>,
-        def_kind: Option<SimpleDefKind>,
+        def_kind: Option<DefKind>,
         _hash: impl FnOnce() -> u64,
     ) -> Self {
         Self {