about summary refs log tree commit diff
path: root/compiler/rustc_infer/src
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-01-04 01:48:39 +0000
committerMichael Goulet <michael@errs.io>2024-01-05 14:48:53 +0000
commit6a2bd5acd664e6bd118563ea9033245c624fec2e (patch)
tree694127761b1265f1b0c6482d7c1ff5a49ea97009 /compiler/rustc_infer/src
parent6bc08a725f888a06ea3c6844f3d0cc2d2ebc5142 (diff)
downloadrust-6a2bd5acd664e6bd118563ea9033245c624fec2e.tar.gz
rust-6a2bd5acd664e6bd118563ea9033245c624fec2e.zip
Use `resolutions(()).effective_visiblities` to avoid cycle errors
Diffstat (limited to 'compiler/rustc_infer/src')
-rw-r--r--compiler/rustc_infer/src/traits/error_reporting/mod.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/rustc_infer/src/traits/error_reporting/mod.rs b/compiler/rustc_infer/src/traits/error_reporting/mod.rs
index d89c205da3f..34163111d3c 100644
--- a/compiler/rustc_infer/src/traits/error_reporting/mod.rs
+++ b/compiler/rustc_infer/src/traits/error_reporting/mod.rs
@@ -132,7 +132,10 @@ pub fn report_object_safety_error<'tcx>(
     };
     let externally_visible = if !impls.is_empty()
         && let Some(def_id) = trait_def_id.as_local()
-        && tcx.effective_visibilities(()).is_exported(def_id)
+        // We may be executing this during typeck, which would result in cycle
+        // if we used effective_visibilities query, which looks into opaque types
+        // (and therefore calls typeck).
+        && tcx.resolutions(()).effective_visibilities.is_exported(def_id)
     {
         true
     } else {