about summary refs log tree commit diff
path: root/compiler/rustc_hir_analysis/src
diff options
context:
space:
mode:
authorDeadbeef <ent3rm4n@gmail.com>2024-06-30 17:08:10 +0000
committerDeadbeef <ent3rm4n@gmail.com>2024-06-30 17:08:10 +0000
commit34ae56de35d4c8b61f51758113debea2ec7c21e7 (patch)
treea3b0d32605076168fb5b87fd7f7ab3a378b4fe97 /compiler/rustc_hir_analysis/src
parent6c3485512fc95fa9c43cb831607bfec9d2153b6e (diff)
downloadrust-34ae56de35d4c8b61f51758113debea2ec7c21e7.tar.gz
rust-34ae56de35d4c8b61f51758113debea2ec7c21e7.zip
Make `feature(effects)` require `-Znext-solver`
Diffstat (limited to 'compiler/rustc_hir_analysis/src')
-rw-r--r--compiler/rustc_hir_analysis/src/errors.rs6
-rw-r--r--compiler/rustc_hir_analysis/src/lib.rs6
2 files changed, 12 insertions, 0 deletions
diff --git a/compiler/rustc_hir_analysis/src/errors.rs b/compiler/rustc_hir_analysis/src/errors.rs
index 44025c3cd61..3ffb51fa992 100644
--- a/compiler/rustc_hir_analysis/src/errors.rs
+++ b/compiler/rustc_hir_analysis/src/errors.rs
@@ -1699,3 +1699,9 @@ pub struct InvalidReceiverTy<'tcx> {
     pub span: Span,
     pub receiver_ty: Ty<'tcx>,
 }
+
+#[derive(Diagnostic)]
+#[diag(hir_analysis_effects_without_next_solver)]
+#[note]
+#[help]
+pub struct EffectsWithoutNextSolver;
diff --git a/compiler/rustc_hir_analysis/src/lib.rs b/compiler/rustc_hir_analysis/src/lib.rs
index 0428abcdf24..cf41f51f748 100644
--- a/compiler/rustc_hir_analysis/src/lib.rs
+++ b/compiler/rustc_hir_analysis/src/lib.rs
@@ -151,6 +151,12 @@ pub fn provide(providers: &mut Providers) {
 pub fn check_crate(tcx: TyCtxt<'_>) {
     let _prof_timer = tcx.sess.timer("type_check_crate");
 
+    // FIXME(effects): remove once effects is implemented in old trait solver
+    // or if the next solver is stabilized.
+    if tcx.features().effects && !tcx.next_trait_solver_globally() {
+        tcx.dcx().emit_err(errors::EffectsWithoutNextSolver);
+    }
+
     tcx.sess.time("coherence_checking", || {
         tcx.hir().par_for_each_module(|module| {
             let _ = tcx.ensure().check_mod_type_wf(module);