summary refs log tree commit diff
path: root/compiler/rustc_pattern_analysis/src
diff options
context:
space:
mode:
authorZalathar <Zalathar@users.noreply.github.com>2024-08-02 21:12:04 +1000
committerZalathar <Zalathar@users.noreply.github.com>2024-08-07 21:44:53 +1000
commit29245ec75914a32fcb33ba5282f73d6d741ab2f7 (patch)
treee33bcaf31f9330ef7dd90dab75a452004e68a203 /compiler/rustc_pattern_analysis/src
parent582208b0f26dd448b7a869f3a3e11ad07cd76346 (diff)
downloadrust-29245ec75914a32fcb33ba5282f73d6d741ab2f7.tar.gz
rust-29245ec75914a32fcb33ba5282f73d6d741ab2f7.zip
Avoid using `ty::tls::with` in `write_struct_like`
Diffstat (limited to 'compiler/rustc_pattern_analysis/src')
-rw-r--r--compiler/rustc_pattern_analysis/src/rustc/print.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/compiler/rustc_pattern_analysis/src/rustc/print.rs b/compiler/rustc_pattern_analysis/src/rustc/print.rs
index 64f041dc21a..dba60223202 100644
--- a/compiler/rustc_pattern_analysis/src/rustc/print.rs
+++ b/compiler/rustc_pattern_analysis/src/rustc/print.rs
@@ -12,7 +12,7 @@
 use std::fmt;
 
 use rustc_middle::thir::PatRange;
-use rustc_middle::ty::{self, AdtDef, Ty};
+use rustc_middle::ty::{self, AdtDef, Ty, TyCtxt};
 use rustc_middle::{bug, mir};
 use rustc_span::sym;
 use rustc_target::abi::{FieldIdx, VariantIdx};
@@ -70,7 +70,7 @@ impl<'tcx> fmt::Display for Pat<'tcx> {
             PatKind::Never => write!(f, "!"),
             PatKind::Box { ref subpattern } => write!(f, "box {subpattern}"),
             PatKind::StructLike { ref enum_info, ref subpatterns } => {
-                write_struct_like(f, self.ty, enum_info, subpatterns)
+                ty::tls::with(|tcx| write_struct_like(f, tcx, self.ty, enum_info, subpatterns))
             }
             PatKind::Deref { ref subpattern } => write_ref_like(f, self.ty, subpattern),
             PatKind::Constant { value } => write!(f, "{value}"),
@@ -105,12 +105,13 @@ pub(crate) enum EnumInfo<'tcx> {
 
 fn write_struct_like<'tcx>(
     f: &mut impl fmt::Write,
+    tcx: TyCtxt<'_>,
     ty: Ty<'tcx>,
     enum_info: &EnumInfo<'tcx>,
     subpatterns: &[FieldPat<'tcx>],
 ) -> fmt::Result {
     let variant_and_name = match *enum_info {
-        EnumInfo::Enum { adt_def, variant_index } => ty::tls::with(|tcx| {
+        EnumInfo::Enum { adt_def, variant_index } => {
             let variant = adt_def.variant(variant_index);
             let adt_did = adt_def.did();
             let name = if tcx.get_diagnostic_item(sym::Option) == Some(adt_did)
@@ -121,9 +122,9 @@ fn write_struct_like<'tcx>(
                 format!("{}::{}", tcx.def_path_str(adt_def.did()), variant.name)
             };
             Some((variant, name))
-        }),
+        }
         EnumInfo::NotEnum => ty.ty_adt_def().and_then(|adt_def| {
-            ty::tls::with(|tcx| Some((adt_def.non_enum_variant(), tcx.def_path_str(adt_def.did()))))
+            Some((adt_def.non_enum_variant(), tcx.def_path_str(adt_def.did())))
         }),
     };