about summary refs log tree commit diff
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/rustc_hir_analysis/messages.ftl4
-rw-r--r--compiler/rustc_hir_analysis/src/collect.rs2
-rw-r--r--compiler/rustc_hir_analysis/src/collect/dump.rs18
-rw-r--r--compiler/rustc_hir_analysis/src/collect/type_of.rs1
-rw-r--r--compiler/rustc_hir_analysis/src/collect/type_of/opaque.rs20
-rw-r--r--compiler/rustc_hir_analysis/src/errors.rs4
-rw-r--r--compiler/rustc_hir_analysis/src/lib.rs12
-rw-r--r--compiler/rustc_hir_analysis/src/outlives/dump.rs29
-rw-r--r--compiler/rustc_hir_analysis/src/outlives/mod.rs3
-rw-r--r--compiler/rustc_hir_analysis/src/outlives/test.rs31
-rw-r--r--compiler/rustc_hir_analysis/src/variance/dump.rs32
-rw-r--r--compiler/rustc_hir_analysis/src/variance/mod.rs3
-rw-r--r--compiler/rustc_hir_analysis/src/variance/test.rs37
13 files changed, 92 insertions, 104 deletions
diff --git a/compiler/rustc_hir_analysis/messages.ftl b/compiler/rustc_hir_analysis/messages.ftl
index 8c740d87e95..14a505ca401 100644
--- a/compiler/rustc_hir_analysis/messages.ftl
+++ b/compiler/rustc_hir_analysis/messages.ftl
@@ -510,7 +510,7 @@ hir_analysis_ty_param_some = type parameter `{$param}` must be used as the type
     .note = implementing a foreign trait is only possible if at least one of the types for which it is implemented is local
     .only_note = only traits defined in the current crate can be implemented for a type parameter
 
-hir_analysis_type_of = {$type_of}
+hir_analysis_type_of = {$ty}
 
 hir_analysis_typeof_reserved_keyword_used =
     `typeof` is a reserved keyword but unimplemented
@@ -566,7 +566,7 @@ hir_analysis_value_of_associated_struct_already_specified =
 hir_analysis_variadic_function_compatible_convention = C-variadic function must have a compatible calling convention, like {$conventions}
     .label = C-variadic function must have a compatible calling convention
 
-hir_analysis_variances_of = {$variances_of}
+hir_analysis_variances_of = {$variances}
 
 hir_analysis_where_clause_on_main = `main` function is not allowed to have a `where` clause
     .label = `main` cannot have a `where` clause
diff --git a/compiler/rustc_hir_analysis/src/collect.rs b/compiler/rustc_hir_analysis/src/collect.rs
index c6e8759327f..e5bd147352d 100644
--- a/compiler/rustc_hir_analysis/src/collect.rs
+++ b/compiler/rustc_hir_analysis/src/collect.rs
@@ -45,8 +45,8 @@ use std::ops::Bound;
 use crate::check::intrinsic::intrinsic_operation_unsafety;
 use crate::errors;
 use crate::hir_ty_lowering::{HirTyLowerer, RegionInferReason};
-pub use type_of::test_opaque_hidden_types;
 
+pub(crate) mod dump;
 mod generics_of;
 mod item_bounds;
 mod predicates_of;
diff --git a/compiler/rustc_hir_analysis/src/collect/dump.rs b/compiler/rustc_hir_analysis/src/collect/dump.rs
new file mode 100644
index 00000000000..f7323edfe4d
--- /dev/null
+++ b/compiler/rustc_hir_analysis/src/collect/dump.rs
@@ -0,0 +1,18 @@
+use rustc_hir::def::DefKind;
+use rustc_hir::def_id::CRATE_DEF_ID;
+use rustc_middle::ty::TyCtxt;
+use rustc_span::sym;
+
+pub(crate) fn opaque_hidden_types(tcx: TyCtxt<'_>) {
+    if !tcx.has_attr(CRATE_DEF_ID, sym::rustc_hidden_type_of_opaques) {
+        return;
+    }
+
+    for id in tcx.hir().items() {
+        let DefKind::OpaqueTy = tcx.def_kind(id.owner_id) else { continue };
+
+        let ty = tcx.type_of(id.owner_id).instantiate_identity();
+
+        tcx.dcx().emit_err(crate::errors::TypeOf { span: tcx.def_span(id.owner_id), ty });
+    }
+}
diff --git a/compiler/rustc_hir_analysis/src/collect/type_of.rs b/compiler/rustc_hir_analysis/src/collect/type_of.rs
index 2684467a438..1e2b0c43233 100644
--- a/compiler/rustc_hir_analysis/src/collect/type_of.rs
+++ b/compiler/rustc_hir_analysis/src/collect/type_of.rs
@@ -15,7 +15,6 @@ use crate::errors::TypeofReservedKeywordUsed;
 
 use super::bad_placeholder;
 use super::ItemCtxt;
-pub use opaque::test_opaque_hidden_types;
 
 mod opaque;
 
diff --git a/compiler/rustc_hir_analysis/src/collect/type_of/opaque.rs b/compiler/rustc_hir_analysis/src/collect/type_of/opaque.rs
index 2b2f07001d2..d1048b742a0 100644
--- a/compiler/rustc_hir_analysis/src/collect/type_of/opaque.rs
+++ b/compiler/rustc_hir_analysis/src/collect/type_of/opaque.rs
@@ -1,28 +1,14 @@
 use rustc_errors::StashKey;
 use rustc_hir::def::DefKind;
-use rustc_hir::def_id::{LocalDefId, CRATE_DEF_ID};
+use rustc_hir::def_id::LocalDefId;
 use rustc_hir::intravisit::{self, Visitor};
 use rustc_hir::{self as hir, def, Expr, ImplItem, Item, Node, TraitItem};
 use rustc_middle::bug;
 use rustc_middle::hir::nested_filter;
 use rustc_middle::ty::{self, Ty, TyCtxt, TypeVisitableExt};
-use rustc_span::{sym, ErrorGuaranteed, DUMMY_SP};
+use rustc_span::DUMMY_SP;
 
-use crate::errors::{TaitForwardCompat, TaitForwardCompat2, TypeOf, UnconstrainedOpaqueType};
-
-pub fn test_opaque_hidden_types(tcx: TyCtxt<'_>) -> Result<(), ErrorGuaranteed> {
-    let mut res = Ok(());
-    if tcx.has_attr(CRATE_DEF_ID, sym::rustc_hidden_type_of_opaques) {
-        for id in tcx.hir().items() {
-            if matches!(tcx.def_kind(id.owner_id), DefKind::OpaqueTy) {
-                let type_of = tcx.type_of(id.owner_id).instantiate_identity();
-
-                res = Err(tcx.dcx().emit_err(TypeOf { span: tcx.def_span(id.owner_id), type_of }));
-            }
-        }
-    }
-    res
-}
+use crate::errors::{TaitForwardCompat, TaitForwardCompat2, UnconstrainedOpaqueType};
 
 /// Checks "defining uses" of opaque `impl Trait` in associated types.
 /// These can only be defined by associated items of the same trait.
diff --git a/compiler/rustc_hir_analysis/src/errors.rs b/compiler/rustc_hir_analysis/src/errors.rs
index cff8d5a5ea5..44025c3cd61 100644
--- a/compiler/rustc_hir_analysis/src/errors.rs
+++ b/compiler/rustc_hir_analysis/src/errors.rs
@@ -682,7 +682,7 @@ pub(crate) enum CannotCaptureLateBound {
 pub(crate) struct VariancesOf {
     #[primary_span]
     pub span: Span,
-    pub variances_of: String,
+    pub variances: String,
 }
 
 #[derive(Diagnostic)]
@@ -690,7 +690,7 @@ pub(crate) struct VariancesOf {
 pub(crate) struct TypeOf<'tcx> {
     #[primary_span]
     pub span: Span,
-    pub type_of: Ty<'tcx>,
+    pub ty: Ty<'tcx>,
 }
 
 #[derive(Diagnostic)]
diff --git a/compiler/rustc_hir_analysis/src/lib.rs b/compiler/rustc_hir_analysis/src/lib.rs
index 1927359421d..6af4fdaea21 100644
--- a/compiler/rustc_hir_analysis/src/lib.rs
+++ b/compiler/rustc_hir_analysis/src/lib.rs
@@ -151,10 +151,6 @@ pub fn provide(providers: &mut Providers) {
 pub fn check_crate(tcx: TyCtxt<'_>) {
     let _prof_timer = tcx.sess.timer("type_check_crate");
 
-    if tcx.features().rustc_attrs {
-        let _ = tcx.sess.time("outlives_testing", || outlives::test::test_inferred_outlives(tcx));
-    }
-
     tcx.sess.time("coherence_checking", || {
         tcx.hir().par_for_each_module(|module| {
             let _ = tcx.ensure().check_mod_type_wf(module);
@@ -169,11 +165,9 @@ pub fn check_crate(tcx: TyCtxt<'_>) {
     });
 
     if tcx.features().rustc_attrs {
-        let _ = tcx.sess.time("variance_testing", || variance::test::test_variance(tcx));
-    }
-
-    if tcx.features().rustc_attrs {
-        let _ = collect::test_opaque_hidden_types(tcx);
+        tcx.sess.time("outlives_dumping", || outlives::dump::inferred_outlives(tcx));
+        tcx.sess.time("variance_dumping", || variance::dump::variances(tcx));
+        collect::dump::opaque_hidden_types(tcx);
     }
 
     // Make sure we evaluate all static and (non-associated) const items, even if unused.
diff --git a/compiler/rustc_hir_analysis/src/outlives/dump.rs b/compiler/rustc_hir_analysis/src/outlives/dump.rs
new file mode 100644
index 00000000000..ab50d9e86ef
--- /dev/null
+++ b/compiler/rustc_hir_analysis/src/outlives/dump.rs
@@ -0,0 +1,29 @@
+use rustc_middle::bug;
+use rustc_middle::ty::{self, TyCtxt};
+use rustc_span::sym;
+
+pub(crate) fn inferred_outlives(tcx: TyCtxt<'_>) {
+    for id in tcx.hir().items() {
+        if !tcx.has_attr(id.owner_id, sym::rustc_outlives) {
+            continue;
+        }
+
+        let preds = tcx.inferred_outlives_of(id.owner_id);
+        let mut preds: Vec<_> = preds
+            .iter()
+            .map(|(pred, _)| match pred.kind().skip_binder() {
+                ty::ClauseKind::RegionOutlives(p) => p.to_string(),
+                ty::ClauseKind::TypeOutlives(p) => p.to_string(),
+                err => bug!("unexpected clause {:?}", err),
+            })
+            .collect();
+        preds.sort();
+
+        let span = tcx.def_span(id.owner_id);
+        let mut err = tcx.dcx().struct_span_err(span, sym::rustc_outlives.as_str());
+        for pred in preds {
+            err.note(pred);
+        }
+        err.emit();
+    }
+}
diff --git a/compiler/rustc_hir_analysis/src/outlives/mod.rs b/compiler/rustc_hir_analysis/src/outlives/mod.rs
index 97fd7731b1e..1f74ebf99f1 100644
--- a/compiler/rustc_hir_analysis/src/outlives/mod.rs
+++ b/compiler/rustc_hir_analysis/src/outlives/mod.rs
@@ -5,10 +5,9 @@ use rustc_middle::ty::GenericArgKind;
 use rustc_middle::ty::{self, CratePredicatesMap, TyCtxt, Upcast};
 use rustc_span::Span;
 
+pub(crate) mod dump;
 mod explicit;
 mod implicit_infer;
-/// Code to write unit test for outlives.
-pub mod test;
 mod utils;
 
 pub fn provide(providers: &mut Providers) {
diff --git a/compiler/rustc_hir_analysis/src/outlives/test.rs b/compiler/rustc_hir_analysis/src/outlives/test.rs
deleted file mode 100644
index e9b6c679bd5..00000000000
--- a/compiler/rustc_hir_analysis/src/outlives/test.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-use rustc_middle::bug;
-use rustc_middle::ty::{self, TyCtxt};
-use rustc_span::{symbol::sym, ErrorGuaranteed};
-
-pub fn test_inferred_outlives(tcx: TyCtxt<'_>) -> Result<(), ErrorGuaranteed> {
-    let mut res = Ok(());
-    for id in tcx.hir().items() {
-        // For unit testing: check for a special "rustc_outlives"
-        // attribute and report an error with various results if found.
-        if tcx.has_attr(id.owner_id, sym::rustc_outlives) {
-            let predicates = tcx.inferred_outlives_of(id.owner_id);
-            let mut pred: Vec<String> = predicates
-                .iter()
-                .map(|(out_pred, _)| match out_pred.kind().skip_binder() {
-                    ty::ClauseKind::RegionOutlives(p) => p.to_string(),
-                    ty::ClauseKind::TypeOutlives(p) => p.to_string(),
-                    err => bug!("unexpected clause {:?}", err),
-                })
-                .collect();
-            pred.sort();
-
-            let span = tcx.def_span(id.owner_id);
-            let mut err = tcx.dcx().struct_span_err(span, "rustc_outlives");
-            for p in pred {
-                err.note(p);
-            }
-            res = Err(err.emit());
-        }
-    }
-    res
-}
diff --git a/compiler/rustc_hir_analysis/src/variance/dump.rs b/compiler/rustc_hir_analysis/src/variance/dump.rs
new file mode 100644
index 00000000000..1a17dabb677
--- /dev/null
+++ b/compiler/rustc_hir_analysis/src/variance/dump.rs
@@ -0,0 +1,32 @@
+use rustc_hir::def::DefKind;
+use rustc_hir::def_id::CRATE_DEF_ID;
+use rustc_middle::ty::TyCtxt;
+use rustc_span::symbol::sym;
+
+pub(crate) fn variances(tcx: TyCtxt<'_>) {
+    if tcx.has_attr(CRATE_DEF_ID, sym::rustc_variance_of_opaques) {
+        for id in tcx.hir().items() {
+            let DefKind::OpaqueTy = tcx.def_kind(id.owner_id) else { continue };
+
+            let variances = tcx.variances_of(id.owner_id);
+
+            tcx.dcx().emit_err(crate::errors::VariancesOf {
+                span: tcx.def_span(id.owner_id),
+                variances: format!("{variances:?}"),
+            });
+        }
+    }
+
+    for id in tcx.hir().items() {
+        if !tcx.has_attr(id.owner_id, sym::rustc_variance) {
+            continue;
+        }
+
+        let variances = tcx.variances_of(id.owner_id);
+
+        tcx.dcx().emit_err(crate::errors::VariancesOf {
+            span: tcx.def_span(id.owner_id),
+            variances: format!("{variances:?}"),
+        });
+    }
+}
diff --git a/compiler/rustc_hir_analysis/src/variance/mod.rs b/compiler/rustc_hir_analysis/src/variance/mod.rs
index 1977451f39e..29f96e27b64 100644
--- a/compiler/rustc_hir_analysis/src/variance/mod.rs
+++ b/compiler/rustc_hir_analysis/src/variance/mod.rs
@@ -22,8 +22,7 @@ mod constraints;
 /// Code to solve constraints and write out the results.
 mod solve;
 
-/// Code to write unit tests of variance.
-pub mod test;
+pub(crate) mod dump;
 
 /// Code for transforming variances.
 mod xform;
diff --git a/compiler/rustc_hir_analysis/src/variance/test.rs b/compiler/rustc_hir_analysis/src/variance/test.rs
deleted file mode 100644
index c211e1af046..00000000000
--- a/compiler/rustc_hir_analysis/src/variance/test.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-use rustc_hir::def::DefKind;
-use rustc_hir::def_id::CRATE_DEF_ID;
-use rustc_middle::ty::TyCtxt;
-use rustc_span::symbol::sym;
-use rustc_span::ErrorGuaranteed;
-
-use crate::errors;
-
-pub fn test_variance(tcx: TyCtxt<'_>) -> Result<(), ErrorGuaranteed> {
-    let mut res = Ok(());
-    if tcx.has_attr(CRATE_DEF_ID, sym::rustc_variance_of_opaques) {
-        for id in tcx.hir().items() {
-            if matches!(tcx.def_kind(id.owner_id), DefKind::OpaqueTy) {
-                let variances_of = tcx.variances_of(id.owner_id);
-
-                res = Err(tcx.dcx().emit_err(errors::VariancesOf {
-                    span: tcx.def_span(id.owner_id),
-                    variances_of: format!("{variances_of:?}"),
-                }));
-            }
-        }
-    }
-
-    // For unit testing: check for a special "rustc_variance"
-    // attribute and report an error with various results if found.
-    for id in tcx.hir().items() {
-        if tcx.has_attr(id.owner_id, sym::rustc_variance) {
-            let variances_of = tcx.variances_of(id.owner_id);
-
-            res = Err(tcx.dcx().emit_err(errors::VariancesOf {
-                span: tcx.def_span(id.owner_id),
-                variances_of: format!("{variances_of:?}"),
-            }));
-        }
-    }
-    res
-}