From ecd783809c074e7e7b7e269e0ca3ecdbdce9bc56 Mon Sep 17 00:00:00 2001 From: James Barford-Evans Date: Thu, 24 Sep 2026 13:37:29 +0100 Subject: [PATCH 1/8] Move all Const methods to `rustc_type_ir` --- compiler/rustc_middle/src/ty/consts.rs | 129 +----------------- compiler/rustc_middle/src/ty/consts/int.rs | 11 ++ .../rustc_middle/src/ty/consts/valtree.rs | 5 +- .../src/ty/context/impl_interner.rs | 26 ++++ compiler/rustc_middle/src/ty/mod.rs | 6 + compiler/rustc_type_ir/src/inherent.rs | 11 ++ compiler/rustc_type_ir/src/interner.rs | 16 ++- compiler/rustc_type_ir/src/sty/consts.rs | 116 ++++++++++++++++ 8 files changed, 189 insertions(+), 131 deletions(-) diff --git a/compiler/rustc_middle/src/ty/consts.rs b/compiler/rustc_middle/src/ty/consts.rs index cbe7b6d732c0f..bf65f1b361f5c 100644 --- a/compiler/rustc_middle/src/ty/consts.rs +++ b/compiler/rustc_middle/src/ty/consts.rs @@ -1,10 +1,6 @@ -use rustc_macros::extension; -use rustc_span::bug; -use rustc_type_ir::walk::TypeWalker; use rustc_type_ir::{self as ir}; -use crate::mir::interpret::Scalar; -use crate::ty::{self, Ty, TyCtxt}; +use crate::ty::TyCtxt; mod int; mod kind; @@ -23,126 +19,3 @@ pub type Const<'tcx> = ir::Const>; #[cfg(target_pointer_width = "64")] rustc_data_structures::static_assert_size!(ConstKind<'_>, 32); - -#[extension(pub trait ConstExt<'tcx>)] -impl<'tcx> Const<'tcx> { - /// Creates a constant with the given integer value and interns it. - #[inline] - fn from_bits( - tcx: TyCtxt<'tcx>, - bits: u128, - typing_env: ty::TypingEnv<'tcx>, - ty: Ty<'tcx>, - ) -> Self { - let size = tcx - .layout_of(typing_env.as_query_input(ty)) - .unwrap_or_else(|e| panic!("could not compute layout for {ty:?}: {e:?}")) - .size; - let valtree = - ty::ValTree::from_scalar_int(tcx, ScalarInt::try_from_uint(bits, size).unwrap()); - ty::Const::new_value(tcx, valtree, ty) - } - - #[inline] - /// Creates an interned zst constant. - fn zero_sized(tcx: TyCtxt<'tcx>, ty: Ty<'tcx>) -> Self { - ty::Const::new_value(tcx, ty::ValTree::zst(tcx), ty) - } - - #[inline] - fn new_value(tcx: TyCtxt<'tcx>, valtree: ty::ValTree<'tcx>, ty: Ty<'tcx>) -> Const<'tcx> { - Const::new(tcx, ty::ConstKind::Value(ty::Value { ty, valtree })) - } - - #[inline] - /// Creates an interned bool constant. - fn from_bool(tcx: TyCtxt<'tcx>, v: bool) -> Self { - Self::from_bits(tcx, v as u128, ty::TypingEnv::fully_monomorphized(), tcx.types.bool) - } - - #[inline] - /// Creates an interned usize constant. - fn from_target_usize(tcx: TyCtxt<'tcx>, n: u64) -> Self { - Self::from_bits(tcx, n as u128, ty::TypingEnv::fully_monomorphized(), tcx.types.usize) - } - - /// Panics if `self.kind != ty::ConstKind::Value`. - fn to_value(self) -> ty::Value<'tcx> { - match self.kind() { - ty::ConstKind::Value(cv) => cv, - _ => bug!("expected ConstKind::Value, got {:?}", self.kind()), - } - } - - /// Attempts to convert to a value. - /// - /// Note that this does not normalize the constant. - fn try_to_value(self) -> Option> { - match self.kind() { - ty::ConstKind::Value(cv) => Some(cv), - _ => None, - } - } - - /// Converts to a `ValTreeKind::Leaf` value, `panic`'ing - /// if this constant is some other kind. - /// - /// Note that this does not normalize the constant. - #[inline] - fn to_leaf(self) -> ScalarInt { - self.to_value().to_leaf() - } - - /// Converts to a `ValTreeKind::Branch` value, `panic`'ing - /// if this constant is some other kind. - /// - /// Note that this does not normalize the constant. - #[inline] - fn to_branch(self) -> &'tcx [ty::Const<'tcx>] { - self.to_value().to_branch() - } - - /// Attempts to convert to a `ValTreeKind::Leaf` value. - /// - /// Note that this does not normalize the constant. - fn try_to_leaf(self) -> Option { - self.try_to_value()?.try_to_leaf() - } - - /// Attempts to convert to a `ValTreeKind::Leaf` value. - /// - /// Note that this does not normalize the constant. - fn try_to_scalar(self) -> Option { - self.try_to_leaf().map(Scalar::Int) - } - - /// Attempts to convert to a `ValTreeKind::Branch` value. - /// - /// Note that this does not normalize the constant. - fn try_to_branch(self) -> Option<&'tcx [ty::Const<'tcx>]> { - self.try_to_value()?.try_to_branch() - } - - /// Convenience method to extract the value of a usize constant, - /// useful to get the length of an array type. - /// - /// Note that this does not evaluate the constant. - #[inline] - fn try_to_target_usize(self, tcx: TyCtxt<'tcx>) -> Option { - self.try_to_value()?.try_to_target_usize(tcx) - } - - /// Iterator that walks `self` and any types reachable from - /// `self`, in depth-first order. Note that just walks the types - /// that appear in `self`, it does not descend into the fields of - /// structs or variants. For example: - /// - /// ```text - /// isize => { isize } - /// Foo> => { Foo>, Bar, isize } - /// [isize] => { [isize], isize } - /// ``` - fn walk(self) -> TypeWalker> { - TypeWalker::new(self.into()) - } -} diff --git a/compiler/rustc_middle/src/ty/consts/int.rs b/compiler/rustc_middle/src/ty/consts/int.rs index 8c56cc4aafbe1..c84e9937c549c 100644 --- a/compiler/rustc_middle/src/ty/consts/int.rs +++ b/compiler/rustc_middle/src/ty/consts/int.rs @@ -8,6 +8,7 @@ use rustc_data_structures::stable_hash::{StableHash, StableHashCtxt}; use rustc_serialize::{Decodable, Decoder, Encodable, Encoder}; use rustc_span::bug; +use crate::mir::interpret::Scalar; use crate::ty::TyCtxt; #[derive(Copy, Clone)] @@ -185,6 +186,16 @@ impl Decodable for ScalarInt { } } +impl<'tcx> rustc_type_ir::inherent::ScalarInt> for ScalarInt { + fn try_from_uint(i: impl Into, size: Size) -> Option { + Self::try_from_uint(i, size) + } + + fn to_scalar(self) -> Scalar { + Scalar::Int(self) + } +} + impl ScalarInt { pub const TRUE: ScalarInt = ScalarInt { data: 1_u128, size: NonZero::new(1).unwrap() }; pub const FALSE: ScalarInt = ScalarInt { data: 0_u128, size: NonZero::new(1).unwrap() }; diff --git a/compiler/rustc_middle/src/ty/consts/valtree.rs b/compiler/rustc_middle/src/ty/consts/valtree.rs index 28e32a4a82d0d..4d73d5d782521 100644 --- a/compiler/rustc_middle/src/ty/consts/valtree.rs +++ b/compiler/rustc_middle/src/ty/consts/valtree.rs @@ -11,7 +11,6 @@ use rustc_span::bug; use super::ScalarInt; use crate::mir::interpret::{ErrorHandled, Scalar}; -use crate::ty::consts::ConstExt; use crate::ty::print::{FmtPrinter, PrettyPrinter}; use crate::ty::{self, Ty, TyCtxt, ValTreeKind}; @@ -235,6 +234,10 @@ impl<'tcx> rustc_type_ir::inherent::ValueConst> for Value<'tcx> { fn valtree(self) -> ValTree<'tcx> { self.valtree } + + fn new(ty: Ty<'tcx>, valtree: ValTree<'tcx>) -> Self { + Self { ty, valtree } + } } impl<'tcx> fmt::Display for Value<'tcx> { diff --git a/compiler/rustc_middle/src/ty/context/impl_interner.rs b/compiler/rustc_middle/src/ty/context/impl_interner.rs index a6688b668aab3..f358a9bd89663 100644 --- a/compiler/rustc_middle/src/ty/context/impl_interner.rs +++ b/compiler/rustc_middle/src/ty/context/impl_interner.rs @@ -2,6 +2,7 @@ use std::{debug_assert_matches, fmt}; +use rustc_abi::Size; use rustc_attr_ir::lang_items::LangItem; use rustc_data_structures::intern::Interned; use rustc_errors::ErrorGuaranteed; @@ -18,6 +19,7 @@ use rustc_type_ir::{ use crate::dep_graph::{DepKind, DepNodeIndex}; use crate::infer::canonical::CanonicalVarKinds; +use crate::mir::interpret::Scalar; use crate::traits::cache::WithDepNode; use crate::traits::solve::{ self, CanonicalInput, ExternalConstraints, ExternalConstraintsData, QueryResult, inspect, @@ -66,6 +68,7 @@ impl<'tcx> Interner for TyCtxt<'tcx> { type GenericArg = ty::GenericArg<'tcx>; type Term = ty::Term<'tcx>; type BoundVarKinds = &'tcx List>; + type TypingEnv = ty::TypingEnv<'tcx>; type PredefinedOpaques = solve::PredefinedOpaques<'tcx>; @@ -116,6 +119,7 @@ impl<'tcx> Interner for TyCtxt<'tcx> { type ExprConst = ty::Expr<'tcx>; type ValTree = ty::ValTree<'tcx>; type ScalarInt = ty::ScalarInt; + type Scalar = Scalar; type InternedRegionKind = Interned<'tcx, ty::RegionKind<'tcx>>; type InternedConstKind = Interned<'tcx, WithCachedTypeInfo>>; type EarlyParamRegion = ty::EarlyParamRegion; @@ -739,6 +743,28 @@ impl<'tcx> Interner for TyCtxt<'tcx> { )) } } + + fn intern_valtree(self, valtree_kind: ty::ValTreeKind>) -> ty::ValTree<'tcx> { + self.intern_valtree(valtree_kind) + } + + fn const_zst(self) -> ty::ValTree<'tcx> { + self.consts.valtree_zst + } + + fn layout_of_typing_env_size(self, typing_env: ty::TypingEnv<'tcx>, ty: Ty<'tcx>) -> Size { + self.layout_of(typing_env.as_query_input(ty)) + .unwrap_or_else(|e| panic!("could not compute layout for {ty:?}: {e:?}")) + .size + } + + fn try_const_value_to_target_usize(self, const_v: ty::Value<'tcx>) -> Option { + if !const_v.ty.is_usize() { + None + } else { + const_v.try_to_leaf().map(|s| s.to_target_usize(self)) + } + } } impl<'tcx, T: Clone + Copy> rustc_type_ir::intern::Interned> for Interned<'tcx, T> { diff --git a/compiler/rustc_middle/src/ty/mod.rs b/compiler/rustc_middle/src/ty/mod.rs index 1f2ffb17cc2c7..b4acedb582c83 100644 --- a/compiler/rustc_middle/src/ty/mod.rs +++ b/compiler/rustc_middle/src/ty/mod.rs @@ -1109,6 +1109,12 @@ pub struct TypingEnv<'tcx> { pub param_env: ParamEnv<'tcx>, } +impl<'tcx> rustc_type_ir::inherent::TypingEnv> for TypingEnv<'tcx> { + fn fully_monomorphized() -> Self { + Self::fully_monomorphized() + } +} + impl<'tcx> TypingEnv<'tcx> { pub fn new(param_env: ParamEnv<'tcx>, typing_mode: TypingMode<'tcx>) -> Self { Self { typing_mode: TypingModeEqWrapper(typing_mode), param_env } diff --git a/compiler/rustc_type_ir/src/inherent.rs b/compiler/rustc_type_ir/src/inherent.rs index cb68b8032f7e1..6b8240797194b 100644 --- a/compiler/rustc_type_ir/src/inherent.rs +++ b/compiler/rustc_type_ir/src/inherent.rs @@ -6,6 +6,7 @@ use std::fmt::Debug; use std::hash::Hash; +use rustc_abi::Size; use rustc_ast_ir::Mutability; use crate::elaborate::Elaboratable; @@ -233,6 +234,7 @@ pub trait Safety>: Copy + Debug + Hash + Eq { pub trait ValueConst>: Copy + Debug + Hash + Eq { fn ty(self) -> I::Ty; fn valtree(self) -> I::ValTree; + fn new(ty: I::Ty, valtree: I::ValTree) -> Self; } #[rust_analyzer::prefer_underscore_import] @@ -747,3 +749,12 @@ pub trait RegionName: Copy + Hash + PartialEq + Eq + Debug { pub trait DefIdGetter: Copy + Hash + PartialEq + Eq + Debug { fn get_def_id(self) -> Option; } + +pub trait ScalarInt: Copy + Debug + Hash + Eq { + fn to_scalar(self) -> I::Scalar; + fn try_from_uint(i: impl Into, size: Size) -> Option; +} + +pub trait TypingEnv: Copy + Clone + Debug + PartialEq + Eq + Hash { + fn fully_monomorphized() -> Self; +} diff --git a/compiler/rustc_type_ir/src/interner.rs b/compiler/rustc_type_ir/src/interner.rs index e3bf97dfebd26..8ac5e96a7dc5b 100644 --- a/compiler/rustc_type_ir/src/interner.rs +++ b/compiler/rustc_type_ir/src/interner.rs @@ -3,6 +3,7 @@ use std::fmt::{Debug, Display}; use std::hash::Hash; use std::ops::Deref; +use rustc_abi::Size; use rustc_ast_ir::Movability; use rustc_ast_ir::visit::VisitorResult; #[cfg(feature = "nightly")] @@ -22,7 +23,8 @@ use crate::solve::{ use crate::visit::{Flags, TypeVisitable}; use crate::{ self as ty, AliasTermKind, BoundRegion, BoundVar, CanonicalParamEnvCache, Const, ConstKind, - DebruijnIndex, Region, RegionKind, RegionVid, TraitRef, WithCachedTypeInfo, search_graph, + DebruijnIndex, Region, RegionKind, RegionVid, TraitRef, ValTreeKind, WithCachedTypeInfo, + search_graph, }; /// The central trait in the shared abstraction layer, specifying all implementation-specific @@ -117,6 +119,7 @@ pub trait Interner: type Term: Term; type BoundVarKinds: BoundVarKinds; + type TypingEnv: TypingEnv; type PredefinedOpaques: Copy + Debug @@ -207,7 +210,8 @@ pub trait Interner: type ValueConst: ValueConst + TypeFoldable + Display; type ExprConst: ExprConst; type ValTree: Copy + Debug + Hash + Eq + IntoKind>; - type ScalarInt: Copy + Debug + Hash + Eq; + type ScalarInt: ScalarInt; + type Scalar: Copy + Debug + Hash + Eq; // Kinds of regions /// (2026/08/13) @@ -557,8 +561,16 @@ pub trait Interner: fn intern_canonical_bound(self, var: BoundVar) -> Region; + fn intern_valtree(self, valtree_kind: ValTreeKind) -> Self::ValTree; + type CanonicalInput: Copy + Debug + Hash + Eq + Deref>; fn mk_canonical_input(self, data: CanonicalInputData) -> Self::CanonicalInput; + + fn const_zst(self) -> Self::ValTree; + + fn layout_of_typing_env_size(self, typing_env: Self::TypingEnv, ty: Self::Ty) -> Size; + + fn try_const_value_to_target_usize(self, const_v: Self::ValueConst) -> Option; } macro_rules! declare_lift_into { diff --git a/compiler/rustc_type_ir/src/sty/consts.rs b/compiler/rustc_type_ir/src/sty/consts.rs index da2256078efa7..2728aea6310a9 100644 --- a/compiler/rustc_type_ir/src/sty/consts.rs +++ b/compiler/rustc_type_ir/src/sty/consts.rs @@ -4,15 +4,18 @@ use derive_where::derive_where; use rustc_ast_ir::visit::VisitorResult; #[cfg(feature = "nightly")] use rustc_macros::StableHash_NoContext; +use rustc_span::bug; use rustc_type_ir_macros::{GenericTypeVisitable, Lift_Generic}; use crate::inherent::*; use crate::intern::Interned; use crate::relate::{Relate, RelateResult, TypeRelation}; +use crate::walk::TypeWalker; use crate::{ AliasConst, BoundConst, BoundVar, BoundVarIndexKind, ConstKind, ConstVid, DebruijnIndex, FallibleTypeFolder, Flags, InferConst, Interner, IsRigid, PlaceholderConst, TypeFlags, TypeFoldable, TypeFolder, TypeSuperFoldable, TypeSuperVisitable, TypeVisitable, TypeVisitor, + ValTreeKind, }; #[derive_where(Clone, Copy, PartialEq, Eq, Hash; I: Interner)] @@ -145,6 +148,119 @@ impl Const { _ => None, } } + + #[inline] + pub fn new_value(interner: I, valtree: I::ValTree, ty: I::Ty) -> Self { + Self::new(interner, ConstKind::Value(I::ValueConst::new(ty, valtree))) + } + + /// Creates an interned zst constant. + #[inline] + pub fn zero_sized(interner: I, ty: I::Ty) -> Self { + Self::new_value(interner, interner.const_zst(), ty) + } + + /// Panics if `self.kind != ty::ConstKind::Value`. + pub fn to_value(self) -> I::ValueConst { + match self.kind() { + ConstKind::Value(cv) => cv, + _ => bug!("expected ConstKind::Value, got {:?}", self.kind()), + } + } + + /// Attempts to convert to a value. + /// + /// Note that this does not normalize the constant. + pub fn try_to_value(self) -> Option { + match self.kind() { + ConstKind::Value(cv) => Some(cv), + _ => None, + } + } + + /// Converts to a `ValTreeKind::Leaf` value, `panic`'ing + /// if this constant is some other kind. + /// + /// Note that this does not normalize the constant. + #[inline] + pub fn to_leaf(self) -> I::ScalarInt { + self.to_value().valtree().kind().to_leaf() + } + + /// Converts to a `ValTreeKind::Branch` value, `panic`'ing + /// if this constant is some other kind. + /// + /// Note that this does not normalize the constant. + #[inline] + pub fn to_branch(self) -> I::Consts { + self.to_value().valtree().kind().to_branch() + } + + /// Attempts to convert to a `ValTreeKind::Leaf` value. + /// + /// Note that this does not normalize the constant. + pub fn try_to_leaf(self) -> Option { + self.try_to_value()?.valtree().kind().try_to_leaf() + } + /// Attempts to convert to a `ValTreeKind::Branch` value. + /// + /// Note that this does not normalize the constant. + pub fn try_to_branch(self) -> Option { + self.try_to_value()?.valtree().kind().try_to_branch() + } + + /// Attempts to convert to a `ValTreeKind::Leaf` value. + /// + /// Note that this does not normalize the constant. + pub fn try_to_scalar(self) -> Option { + self.try_to_leaf().map(|x| x.to_scalar()) + } + + /// Creates a constant with the given integer value and interns it. + #[inline] + pub fn from_bits(interner: I, bits: u128, typing_env: I::TypingEnv, ty: I::Ty) -> Self { + let size = interner.layout_of_typing_env_size(typing_env, ty); + let scalar_int = I::ScalarInt::try_from_uint(bits, size).unwrap(); + let valtree = interner.intern_valtree(ValTreeKind::Leaf(scalar_int)); + Self::new_value(interner, valtree, ty) + } + + #[inline] + /// Creates an interned bool constant. + pub fn from_bool(interner: I, v: bool) -> Self { + let bool_ty = I::Ty::new_bool(interner); + Self::from_bits(interner, v as u128, I::TypingEnv::fully_monomorphized(), bool_ty) + } + + #[inline] + /// Creates an interned usize constant. + pub fn from_target_usize(interner: I, n: u64) -> Self { + let usize_ty = I::Ty::new_usize(interner); + Self::from_bits(interner, n as u128, I::TypingEnv::fully_monomorphized(), usize_ty) + } + + /// Convenience method to extract the value of a usize constant, + /// useful to get the length of an array type. + /// + /// Note that this does not evaluate the constant. + #[inline] + pub fn try_to_target_usize(self, interner: I) -> Option { + interner.try_const_value_to_target_usize(self.try_to_value()?) + } + + /// Iterator that walks `self` and any types reachable from + /// `self`, in depth-first order. Note that just walks the types + /// that appear in `self`, it does not descend into the fields of + /// structs or variants. For example: + /// + /// ```text + /// isize => { isize } + /// Foo> => { Foo>, Bar, isize } + /// [isize] => { [isize], isize } + /// ``` + pub fn walk(self) -> TypeWalker { + TypeWalker::new(self.into()) + } } impl Flags for Const { From b01745b04870a7c65f8154991435b6711d567171 Mon Sep 17 00:00:00 2001 From: James Barford-Evans Date: Thu, 24 Sep 2026 13:37:29 +0100 Subject: [PATCH 2/8] Remove `ConstExt` from `./compiler` --- compiler/rustc_borrowck/src/type_check/mod.rs | 1 - compiler/rustc_codegen_cranelift/src/base.rs | 1 - compiler/rustc_codegen_cranelift/src/debuginfo/types.rs | 1 - compiler/rustc_codegen_cranelift/src/intrinsics/simd.rs | 1 - compiler/rustc_codegen_cranelift/src/unsize.rs | 1 - compiler/rustc_codegen_gcc/src/intrinsic/simd.rs | 1 - compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs | 1 - compiler/rustc_codegen_llvm/src/intrinsic.rs | 1 - compiler/rustc_codegen_ssa/src/base.rs | 1 - compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs | 1 - compiler/rustc_codegen_ssa/src/mir/constant.rs | 1 - compiler/rustc_codegen_ssa/src/mir/intrinsic.rs | 1 - compiler/rustc_codegen_ssa/src/mir/operand.rs | 1 - compiler/rustc_codegen_ssa/src/mir/rvalue.rs | 1 - compiler/rustc_const_eval/src/const_eval/machine.rs | 1 - compiler/rustc_const_eval/src/const_eval/mod.rs | 1 - compiler/rustc_const_eval/src/const_eval/valtrees.rs | 1 - compiler/rustc_const_eval/src/interpret/cast.rs | 1 - compiler/rustc_const_eval/src/interpret/intrinsics/atomic.rs | 1 - compiler/rustc_const_eval/src/interpret/intrinsics/simd.rs | 1 - compiler/rustc_hir_analysis/src/check/check.rs | 1 - compiler/rustc_hir_analysis/src/check/intrinsic.rs | 1 - compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs | 1 - compiler/rustc_hir_typeck/src/expr.rs | 1 - compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs | 1 - compiler/rustc_hir_typeck/src/inline_asm.rs | 1 - compiler/rustc_hir_typeck/src/pat.rs | 1 - compiler/rustc_lint/src/builtin.rs | 1 - compiler/rustc_lint/src/types.rs | 1 - compiler/rustc_lint/src/unused/must_use.rs | 1 - compiler/rustc_middle/src/mir/consts.rs | 1 - compiler/rustc_middle/src/mir/pretty.rs | 1 - compiler/rustc_middle/src/mir/statement.rs | 1 - .../rustc_middle/src/ty/inhabitedness/inhabited_predicate.rs | 1 - compiler/rustc_middle/src/ty/inhabitedness/mod.rs | 1 - compiler/rustc_middle/src/ty/layout.rs | 1 - compiler/rustc_middle/src/ty/pattern.rs | 1 - compiler/rustc_middle/src/ty/print/pretty.rs | 1 - compiler/rustc_middle/src/ty/sty.rs | 1 - compiler/rustc_middle/src/ty/typetree.rs | 1 - compiler/rustc_middle/src/ty/util.rs | 1 - compiler/rustc_mir_build/src/builder/expr/as_rvalue.rs | 1 - compiler/rustc_mir_build/src/builder/matches/match_pair.rs | 1 - compiler/rustc_mir_build/src/builder/matches/mod.rs | 1 - compiler/rustc_mir_build/src/builder/scope.rs | 1 - compiler/rustc_mir_build/src/thir/constant.rs | 1 - compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs | 1 - compiler/rustc_mir_build/src/thir/pattern/mod.rs | 1 - compiler/rustc_mir_dataflow/src/move_paths/builder.rs | 1 - compiler/rustc_mir_transform/src/coroutine/layout.rs | 1 - compiler/rustc_mir_transform/src/elaborate_drop.rs | 1 - compiler/rustc_mir_transform/src/gvn.rs | 1 - compiler/rustc_mir_transform/src/instsimplify.rs | 1 - compiler/rustc_mir_transform/src/known_panics_lint.rs | 1 - compiler/rustc_mir_transform/src/promote_consts.rs | 1 - compiler/rustc_mir_transform/src/remove_zsts.rs | 1 - compiler/rustc_pattern_analysis/src/rustc.rs | 1 - compiler/rustc_public_bridge/src/context/impls.rs | 1 - .../rustc_sanitizers/src/cfi/typeid/itanium_cxx_abi/encode.rs | 1 - compiler/rustc_symbol_mangling/src/legacy.rs | 1 - compiler/rustc_symbol_mangling/src/v0.rs | 1 - compiler/rustc_trait_selection/src/error_reporting/infer/mod.rs | 1 - .../src/error_reporting/traits/ambiguity.rs | 1 - .../src/error_reporting/traits/fulfillment_errors.rs | 1 - .../src/error_reporting/traits/on_unimplemented.rs | 1 - .../src/error_reporting/traits/suggestions.rs | 1 - compiler/rustc_trait_selection/src/traits/fulfill.rs | 1 - compiler/rustc_trait_selection/src/traits/mod.rs | 1 - .../rustc_trait_selection/src/traits/query/dropck_outlives.rs | 1 - compiler/rustc_transmute/src/lib.rs | 1 - compiler/rustc_ty_utils/src/consts.rs | 1 - 71 files changed, 71 deletions(-) diff --git a/compiler/rustc_borrowck/src/type_check/mod.rs b/compiler/rustc_borrowck/src/type_check/mod.rs index ab0d786c6f264..d09b95b7fb4f3 100644 --- a/compiler/rustc_borrowck/src/type_check/mod.rs +++ b/compiler/rustc_borrowck/src/type_check/mod.rs @@ -24,7 +24,6 @@ use rustc_middle::mir::*; use rustc_middle::traits::query::NoSolution; use rustc_middle::ty::adjustment::PointerCoercion; use rustc_middle::ty::cast::CastTy; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{ self, CanonicalUserTypeAnnotation, CanonicalUserTypeAnnotations, GenericArgsRef, Ty, TyCtxt, TypeVisitableExt, UserArgs, UserTypeAnnotationIndex, fold_regions, diff --git a/compiler/rustc_codegen_cranelift/src/base.rs b/compiler/rustc_codegen_cranelift/src/base.rs index e752189130290..dcc96db5404e9 100644 --- a/compiler/rustc_codegen_cranelift/src/base.rs +++ b/compiler/rustc_codegen_cranelift/src/base.rs @@ -12,7 +12,6 @@ use rustc_errors::DiagCtxtHandle; use rustc_index::IndexVec; use rustc_middle::ty::TypeVisitableExt; use rustc_middle::ty::adjustment::PointerCoercion; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{FnAbiOf, HasTypingEnv as _}; use rustc_middle::ty::print::with_no_trimmed_paths; use rustc_session::config::OutputFilenames; diff --git a/compiler/rustc_codegen_cranelift/src/debuginfo/types.rs b/compiler/rustc_codegen_cranelift/src/debuginfo/types.rs index 2eb4725fc5b20..18a0632a0939d 100644 --- a/compiler/rustc_codegen_cranelift/src/debuginfo/types.rs +++ b/compiler/rustc_codegen_cranelift/src/debuginfo/types.rs @@ -3,7 +3,6 @@ use gimli::write::{AttributeValue, UnitEntryId}; use rustc_codegen_ssa::debuginfo::type_names; use rustc_data_structures::fx::FxHashMap; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::LayoutOf; use rustc_middle::ty::{self, Ty, TyCtxt}; diff --git a/compiler/rustc_codegen_cranelift/src/intrinsics/simd.rs b/compiler/rustc_codegen_cranelift/src/intrinsics/simd.rs index f04c32a70390a..270ea4e88a999 100644 --- a/compiler/rustc_codegen_cranelift/src/intrinsics/simd.rs +++ b/compiler/rustc_codegen_cranelift/src/intrinsics/simd.rs @@ -3,7 +3,6 @@ use cranelift_codegen::ir::immediates::Offset32; use rustc_abi::Endian; use rustc_middle::ty::SimdAlign; -use rustc_middle::ty::consts::ConstExt; use super::*; use crate::prelude::*; diff --git a/compiler/rustc_codegen_cranelift/src/unsize.rs b/compiler/rustc_codegen_cranelift/src/unsize.rs index efc89075cdeb2..48fb0f6c7d4a8 100644 --- a/compiler/rustc_codegen_cranelift/src/unsize.rs +++ b/compiler/rustc_codegen_cranelift/src/unsize.rs @@ -3,7 +3,6 @@ //! [`PointerCoercion::Unsize`]: `rustc_middle::ty::adjustment::PointerCoercion::Unsize` use rustc_codegen_ssa::base::validate_trivial_unsize; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::HasTypingEnv; use rustc_middle::ty::print::{with_no_trimmed_paths, with_no_visible_paths}; diff --git a/compiler/rustc_codegen_gcc/src/intrinsic/simd.rs b/compiler/rustc_codegen_gcc/src/intrinsic/simd.rs index 54013b6be6173..bb32a85f193ea 100644 --- a/compiler/rustc_codegen_gcc/src/intrinsic/simd.rs +++ b/compiler/rustc_codegen_gcc/src/intrinsic/simd.rs @@ -15,7 +15,6 @@ use rustc_codegen_ssa::traits::{BaseTypeCodegenMethods, BuilderMethods, LayoutTy #[cfg(feature = "master")] use rustc_hir as hir; use rustc_middle::mir::BinOp; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf}; use rustc_middle::ty::{self, Ty}; use rustc_span::{ErrorGuaranteed, Span, Symbol, span_bug, sym}; diff --git a/compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs b/compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs index a3bcce34566cb..735dd0fbaba10 100644 --- a/compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs +++ b/compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs @@ -10,7 +10,6 @@ use rustc_codegen_ssa::debuginfo::type_names::{VTableNameKind, cpp_like_debuginf use rustc_codegen_ssa::traits::*; use rustc_hir::def::{CtorKind, DefKind}; use rustc_hir::def_id::{DefId, LOCAL_CRATE}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{ HasTypingEnv, LayoutOf, TyAndLayout, WIDE_PTR_ADDR, WIDE_PTR_EXTRA, }; diff --git a/compiler/rustc_codegen_llvm/src/intrinsic.rs b/compiler/rustc_codegen_llvm/src/intrinsic.rs index da0460b2a9290..a4281b584162c 100644 --- a/compiler/rustc_codegen_llvm/src/intrinsic.rs +++ b/compiler/rustc_codegen_llvm/src/intrinsic.rs @@ -19,7 +19,6 @@ use rustc_hir as hir; use rustc_hir::def_id::LOCAL_CRATE; use rustc_lint_defs::builtin::DEPRECATED_LLVM_INTRINSIC; use rustc_middle::mir::BinOp; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{FnAbiOf, HasTyCtxt, HasTypingEnv, LayoutOf}; use rustc_middle::ty::offload_meta::OffloadMetadata; use rustc_middle::ty::{self, GenericArgsRef, Instance, SimdAlign, Ty, TyCtxt, TypingEnv}; diff --git a/compiler/rustc_codegen_ssa/src/base.rs b/compiler/rustc_codegen_ssa/src/base.rs index f9dfd04faf2ac..1e833f2d5cca7 100644 --- a/compiler/rustc_codegen_ssa/src/base.rs +++ b/compiler/rustc_codegen_ssa/src/base.rs @@ -27,7 +27,6 @@ use rustc_middle::mir::interpret::{CTFE_ALLOC_SALT, ErrorHandled, Scalar}; use rustc_middle::mir::{BinOp, ConstValue}; use rustc_middle::mono::{CodegenUnit, CodegenUnitNameBuilder, MonoItem, MonoItemPartitions}; use rustc_middle::query::Providers; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{HasTyCtxt, HasTypingEnv, LayoutOf, TyAndLayout}; use rustc_middle::ty::{self, Instance, PatternKind, Ty, TyCtxt, UintTy, Unnormalized}; use rustc_session::config::{self, EntryFnType}; diff --git a/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs b/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs index 9cf68c6e3909c..810253956b186 100644 --- a/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs +++ b/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs @@ -20,7 +20,6 @@ use rustc_hashes::Hash64; use rustc_hir::def_id::DefId; use rustc_hir::definitions::{DefPathData, DefPathDataName, DisambiguatedDefPathData}; use rustc_hir::{CoroutineDesugaring, CoroutineKind, CoroutineSource, Mutability}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{IntegerExt, TyAndLayout}; use rustc_middle::ty::{ self, ExistentialProjection, GenericArgKind, GenericArgsRef, Ty, TyCtxt, Unnormalized, diff --git a/compiler/rustc_codegen_ssa/src/mir/constant.rs b/compiler/rustc_codegen_ssa/src/mir/constant.rs index b6f16f72b021e..625e1dd8491db 100644 --- a/compiler/rustc_codegen_ssa/src/mir/constant.rs +++ b/compiler/rustc_codegen_ssa/src/mir/constant.rs @@ -1,7 +1,6 @@ use rustc_abi::BackendRepr; use rustc_middle::mir; use rustc_middle::mir::interpret::ErrorHandled; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{HasTyCtxt, HasTypingEnv}; use rustc_middle::ty::{self, Ty}; use rustc_span::{bug, span_bug}; diff --git a/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs b/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs index 650b21bf78a9c..ade4f8a4ee8d6 100644 --- a/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs +++ b/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs @@ -1,6 +1,5 @@ use rustc_abi::{Align, FieldIdx, WrappingRange}; use rustc_middle::mir::SourceInfo; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, Ty, TyCtxt}; use rustc_session::config::OptLevel; use rustc_span::{ErrorGuaranteed, bug, span_bug, sym}; diff --git a/compiler/rustc_codegen_ssa/src/mir/operand.rs b/compiler/rustc_codegen_ssa/src/mir/operand.rs index e017220c549b0..f0c6a24061d43 100644 --- a/compiler/rustc_codegen_ssa/src/mir/operand.rs +++ b/compiler/rustc_codegen_ssa/src/mir/operand.rs @@ -8,7 +8,6 @@ use rustc_abi::{ use rustc_attr_ir::lang_items::LangItem; use rustc_middle::mir::interpret::{Pointer, Scalar, alloc_range}; use rustc_middle::mir::{self, ConstValue}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{LayoutOf, TyAndLayout}; use rustc_middle::ty::{self, Ty}; use rustc_session::config::{AnnotateMoves, DebugInfo, OptLevel}; diff --git a/compiler/rustc_codegen_ssa/src/mir/rvalue.rs b/compiler/rustc_codegen_ssa/src/mir/rvalue.rs index 6391fcd58f4bb..622d205d68268 100644 --- a/compiler/rustc_codegen_ssa/src/mir/rvalue.rs +++ b/compiler/rustc_codegen_ssa/src/mir/rvalue.rs @@ -5,7 +5,6 @@ use rustc_abi::{self as abi, BackendRepr, FIRST_VARIANT}; use rustc_index::IndexVec; use rustc_middle::mir; use rustc_middle::ty::adjustment::PointerCoercion; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{HasTyCtxt, HasTypingEnv, LayoutOf, TyAndLayout}; use rustc_middle::ty::{self, Instance, Mutability, Ty, TyCtxt}; use rustc_session::config::OptLevel; diff --git a/compiler/rustc_const_eval/src/const_eval/machine.rs b/compiler/rustc_const_eval/src/const_eval/machine.rs index 1b99f54719fb4..112e74da4ed1c 100644 --- a/compiler/rustc_const_eval/src/const_eval/machine.rs +++ b/compiler/rustc_const_eval/src/const_eval/machine.rs @@ -13,7 +13,6 @@ use rustc_lint_defs::builtin::LONG_RUNNING_CONST_EVAL; use rustc_middle::mir::AssertMessage; use rustc_middle::mir::interpret::ReportedErrorInfo; use rustc_middle::query::TyCtxtAt; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{HasTyCtxt, HasTypingEnv, TyAndLayout, ValidityRequirement}; use rustc_middle::ty::{self, FieldInfo, ScalarInt, Ty, TyCtxt}; use rustc_middle::{mir, throw_machine_stop}; diff --git a/compiler/rustc_const_eval/src/const_eval/mod.rs b/compiler/rustc_const_eval/src/const_eval/mod.rs index 1a08c166770cf..58b8418707eff 100644 --- a/compiler/rustc_const_eval/src/const_eval/mod.rs +++ b/compiler/rustc_const_eval/src/const_eval/mod.rs @@ -2,7 +2,6 @@ use rustc_abi::{FieldIdx, VariantIdx}; use rustc_middle::mir; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, Ty, TyCtxt}; use rustc_span::{DUMMY_SP, bug}; use tracing::instrument; diff --git a/compiler/rustc_const_eval/src/const_eval/valtrees.rs b/compiler/rustc_const_eval/src/const_eval/valtrees.rs index 6cb327f1efca6..de8dd989c6a00 100644 --- a/compiler/rustc_const_eval/src/const_eval/valtrees.rs +++ b/compiler/rustc_const_eval/src/const_eval/valtrees.rs @@ -3,7 +3,6 @@ use rustc_data_structures::fx::{FxHashMap, FxHashSet}; use rustc_middle::mir; use rustc_middle::mir::interpret::{EvalToValTreeResult, GlobalId, ValTreeCreationError}; use rustc_middle::traits::ObligationCause; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{LayoutCx, TyAndLayout}; use rustc_middle::ty::{self, Ty, TyCtxt}; use rustc_span::{DUMMY_SP, bug}; diff --git a/compiler/rustc_const_eval/src/interpret/cast.rs b/compiler/rustc_const_eval/src/interpret/cast.rs index 1f16aab095843..79a3887d5123d 100644 --- a/compiler/rustc_const_eval/src/interpret/cast.rs +++ b/compiler/rustc_const_eval/src/interpret/cast.rs @@ -6,7 +6,6 @@ use rustc_apfloat::{Float, FloatConvert}; use rustc_middle::mir::CastKind; use rustc_middle::mir::interpret::{InterpResult, PointerArithmetic, Scalar}; use rustc_middle::ty::adjustment::PointerCoercion; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{IntegerExt, TyAndLayout}; use rustc_middle::ty::{self, FloatTy, Ty}; use rustc_span::{bug, span_bug}; diff --git a/compiler/rustc_const_eval/src/interpret/intrinsics/atomic.rs b/compiler/rustc_const_eval/src/interpret/intrinsics/atomic.rs index 6eee95eb2750d..30fbbcca8f6da 100644 --- a/compiler/rustc_const_eval/src/interpret/intrinsics/atomic.rs +++ b/compiler/rustc_const_eval/src/interpret/intrinsics/atomic.rs @@ -1,5 +1,4 @@ use rustc_middle::mir::BinOp; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::{mir, ty}; use rustc_span::{Symbol, span_bug, sym}; use tracing::trace; diff --git a/compiler/rustc_const_eval/src/interpret/intrinsics/simd.rs b/compiler/rustc_const_eval/src/interpret/intrinsics/simd.rs index ad191e9b4d763..476ba405f19ca 100644 --- a/compiler/rustc_const_eval/src/interpret/intrinsics/simd.rs +++ b/compiler/rustc_const_eval/src/interpret/intrinsics/simd.rs @@ -3,7 +3,6 @@ use rustc_abi::{BackendRepr, Endian}; use rustc_apfloat::ieee::{Double, Half, Quad, Single}; use rustc_apfloat::{Float, Round}; use rustc_middle::mir::interpret::{InterpErrorKind, Pointer, UndefinedBehaviorInfo}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{FloatTy, ScalarInt, SimdAlign}; use rustc_middle::{err_ub_format, mir, throw_unsup_format, ty}; use rustc_span::{Symbol, bug, span_bug, sym}; diff --git a/compiler/rustc_hir_analysis/src/check/check.rs b/compiler/rustc_hir_analysis/src/check/check.rs index 1e75902884fe1..4e8e71cf7c052 100644 --- a/compiler/rustc_hir_analysis/src/check/check.rs +++ b/compiler/rustc_hir_analysis/src/check/check.rs @@ -20,7 +20,6 @@ use rustc_macros::Diagnostic; use rustc_middle::hir::nested_filter; use rustc_middle::middle::resolve_bound_vars::ResolvedArg; use rustc_middle::middle::stability::EvalResult; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::error::TypeErrorToStringExt; use rustc_middle::ty::layout::LayoutError; use rustc_middle::ty::util::Discr; diff --git a/compiler/rustc_hir_analysis/src/check/intrinsic.rs b/compiler/rustc_hir_analysis/src/check/intrinsic.rs index 86e66f7658d65..9cf88e3953d5d 100644 --- a/compiler/rustc_hir_analysis/src/check/intrinsic.rs +++ b/compiler/rustc_hir_analysis/src/check/intrinsic.rs @@ -4,7 +4,6 @@ use rustc_attr_ir::lang_items::LangItem; use rustc_errors::DiagMessage; use rustc_hir as hir; use rustc_middle::traits::{ObligationCause, ObligationCauseCode}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, Const, Ty, TyCtxt}; use rustc_span::def_id::LocalDefId; use rustc_span::{Span, Symbol, sym}; diff --git a/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs b/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs index 4fa02926f15d8..246cb3ba3cdd0 100644 --- a/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs +++ b/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs @@ -42,7 +42,6 @@ use rustc_infer::traits::DynCompatibilityViolation; use rustc_lint_defs::builtin::AMBIGUOUS_ASSOCIATED_ITEMS; use rustc_macros::{TypeFoldable, TypeVisitable}; use rustc_middle::middle::stability::AllowUnstable; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{ self, Const, FnSigKind, GenericArgKind, GenericArgsRef, GenericParamDefKind, LitToConstInput, Ty, TyCtxt, TypeSuperFoldable, TypeVisitableExt, TypingMode, Unnormalized, Upcast, diff --git a/compiler/rustc_hir_typeck/src/expr.rs b/compiler/rustc_hir_typeck/src/expr.rs index 9f0d00d5274fa..7f6979ab6b60d 100644 --- a/compiler/rustc_hir_typeck/src/expr.rs +++ b/compiler/rustc_hir_typeck/src/expr.rs @@ -27,7 +27,6 @@ use rustc_hir_analysis::hir_ty_lowering::HirTyLowerer as _; use rustc_infer::infer::{self, DefineOpaqueTypes, InferOk, RegionVariableOrigin}; use rustc_infer::traits::query::NoSolution; use rustc_middle::ty::adjustment::{Adjust, Adjustment, AllowTwoPhase}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::error::{ExpectedFound, TypeError}; use rustc_middle::ty::{self, AdtKind, GenericArgsRef, Ty, TypeVisitableExt, Unnormalized}; use rustc_session::diagnostics::feature_err; diff --git a/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs b/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs index 116bbf6280642..a16bc8394b6c4 100644 --- a/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs +++ b/compiler/rustc_hir_typeck/src/fn_ctxt/suggestions.rs @@ -18,7 +18,6 @@ use rustc_hir::{ use rustc_hir_analysis::hir_ty_lowering::HirTyLowerer; use rustc_hir_analysis::suggest_impl_trait; use rustc_middle::middle::stability::EvalResult; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::print::{with_no_trimmed_paths, with_types_for_suggestion}; use rustc_middle::ty::{ self, Article, Binder, IsSuggestable, Ty, TyCtxt, TypeVisitableExt, Unnormalized, Upcast, diff --git a/compiler/rustc_hir_typeck/src/inline_asm.rs b/compiler/rustc_hir_typeck/src/inline_asm.rs index b3c7071199963..384d5302e39e7 100644 --- a/compiler/rustc_hir_typeck/src/inline_asm.rs +++ b/compiler/rustc_hir_typeck/src/inline_asm.rs @@ -6,7 +6,6 @@ use rustc_errors::{Diag, DiagCtxtHandle, Diagnostic, Level}; use rustc_hir as hir; use rustc_hir::def_id::DefId; use rustc_lint_defs::builtin::ASM_SUB_REGISTER; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{ self, Article, FloatTy, IntTy, Ty, TyCtxt, TypeVisitableExt, UintTy, Unnormalized, }; diff --git a/compiler/rustc_hir_typeck/src/pat.rs b/compiler/rustc_hir_typeck/src/pat.rs index 16c51ca625dcd..1c9cff2cc0607 100644 --- a/compiler/rustc_hir_typeck/src/pat.rs +++ b/compiler/rustc_hir_typeck/src/pat.rs @@ -21,7 +21,6 @@ use rustc_hir_analysis::autoderef::report_autoderef_recursion_limit_error; use rustc_infer::infer::RegionVariableOrigin; use rustc_lint_defs::builtin::NON_EXHAUSTIVE_OMITTED_PATTERNS; use rustc_middle::traits::PatternOriginExpr; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, Pinnedness, Ty, TypeVisitableExt, Unnormalized}; use rustc_session::diagnostics::feature_err; use rustc_span::edit_distance::find_best_match_for_name; diff --git a/compiler/rustc_lint/src/builtin.rs b/compiler/rustc_lint/src/builtin.rs index 2c8c6a3ce7f17..2b1e0a24294d2 100644 --- a/compiler/rustc_lint/src/builtin.rs +++ b/compiler/rustc_lint/src/builtin.rs @@ -33,7 +33,6 @@ use rustc_hir::{self as hir, Body, FnDecl, ImplItemImplKind, PatKind, PredicateO // Lints from rustc_lint_defs pub use rustc_lint_defs::builtin::*; use rustc_lint_defs::{declare_lint, declare_lint_pass, fcw, impl_lint_pass}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::LayoutOf; use rustc_middle::ty::print::with_no_trimmed_paths; use rustc_middle::ty::{ diff --git a/compiler/rustc_lint/src/types.rs b/compiler/rustc_lint/src/types.rs index 9897e9cbb4f07..87b79f12838ae 100644 --- a/compiler/rustc_lint/src/types.rs +++ b/compiler/rustc_lint/src/types.rs @@ -7,7 +7,6 @@ use rustc_attr_ir::lang_items::LangItem; use rustc_hir as hir; use rustc_hir::{Expr, ExprKind, HirId}; use rustc_lint_defs::{declare_lint, declare_lint_pass, impl_lint_pass}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{LayoutOf, SizeSkeleton}; use rustc_middle::ty::{self, Ty, TyCtxt, TypeVisitableExt, Unnormalized}; use rustc_span::{DUMMY_SP, Span, Symbol, bug, sym}; diff --git a/compiler/rustc_lint/src/unused/must_use.rs b/compiler/rustc_lint/src/unused/must_use.rs index 89e3981b965f2..649a174233eb0 100644 --- a/compiler/rustc_lint/src/unused/must_use.rs +++ b/compiler/rustc_lint/src/unused/must_use.rs @@ -8,7 +8,6 @@ use rustc_hir::def::{DefKind, Res}; use rustc_hir::def_id::DefId; use rustc_infer::traits::util::elaborate; use rustc_lint_defs::{declare_lint, declare_lint_pass}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, Ty, Unnormalized}; use rustc_span::{Span, Symbol, sym}; use tracing::instrument; diff --git a/compiler/rustc_middle/src/mir/consts.rs b/compiler/rustc_middle/src/mir/consts.rs index 0acfe437493c0..83f62ee65025c 100644 --- a/compiler/rustc_middle/src/mir/consts.rs +++ b/compiler/rustc_middle/src/mir/consts.rs @@ -10,7 +10,6 @@ use rustc_type_ir::TypeVisitableExt; use super::interpret::ReportedErrorInfo; use crate::mir::interpret::{AllocId, AllocRange, ErrorHandled, GlobalAlloc, Scalar, alloc_range}; use crate::mir::{Promoted, pretty_print_const_value}; -use crate::ty::consts::ConstExt; use crate::ty::print::{pretty_print_const, with_no_trimmed_paths}; use crate::ty::{self, ConstKind, GenericArgsRef, ScalarInt, Ty, TyCtxt}; diff --git a/compiler/rustc_middle/src/mir/pretty.rs b/compiler/rustc_middle/src/mir/pretty.rs index ae30093b1cda7..0d01dfc9f88c3 100644 --- a/compiler/rustc_middle/src/mir/pretty.rs +++ b/compiler/rustc_middle/src/mir/pretty.rs @@ -18,7 +18,6 @@ use crate::mir::interpret::{ use crate::mir::visit::Visitor; use crate::mir::*; use crate::ty::CoroutineArgsExt; -use crate::ty::consts::ConstExt; const INDENT: &str = " "; /// Alignment for lining up comments following MIR statements diff --git a/compiler/rustc_middle/src/mir/statement.rs b/compiler/rustc_middle/src/mir/statement.rs index b6542fb328aac..22366f70fbe4e 100644 --- a/compiler/rustc_middle/src/mir/statement.rs +++ b/compiler/rustc_middle/src/mir/statement.rs @@ -10,7 +10,6 @@ use tracing::instrument; use super::interpret::GlobalAlloc; use super::*; -use crate::ty::consts::ConstExt; use crate::ty::{CoroutineArgsExt, Unnormalized}; /////////////////////////////////////////////////////////////////////////// diff --git a/compiler/rustc_middle/src/ty/inhabitedness/inhabited_predicate.rs b/compiler/rustc_middle/src/ty/inhabitedness/inhabited_predicate.rs index 61e3a40e363d9..6b0234c971830 100644 --- a/compiler/rustc_middle/src/ty/inhabitedness/inhabited_predicate.rs +++ b/compiler/rustc_middle/src/ty/inhabitedness/inhabited_predicate.rs @@ -4,7 +4,6 @@ use rustc_span::def_id::{LocalModId, ModId}; use smallvec::SmallVec; use tracing::instrument; -use crate::ty::consts::ConstExt; use crate::ty::{self, OpaqueTypeKey, Ty, TyCtxt, TypingEnv, Unnormalized}; /// Represents whether some type is inhabited in a given context. diff --git a/compiler/rustc_middle/src/ty/inhabitedness/mod.rs b/compiler/rustc_middle/src/ty/inhabitedness/mod.rs index 03c5c21de02c9..5e36b1f1b6b26 100644 --- a/compiler/rustc_middle/src/ty/inhabitedness/mod.rs +++ b/compiler/rustc_middle/src/ty/inhabitedness/mod.rs @@ -50,7 +50,6 @@ use rustc_type_ir::TyKind::*; use tracing::instrument; use crate::query::Providers; -use crate::ty::consts::ConstExt; use crate::ty::{ self, AdtDef, DefId, Ty, TyCtxt, TypeVisitableExt, TypingEnv, VariantDef, Visibility, }; diff --git a/compiler/rustc_middle/src/ty/layout.rs b/compiler/rustc_middle/src/ty/layout.rs index 8806bf992fc0e..582657b44d15a 100644 --- a/compiler/rustc_middle/src/ty/layout.rs +++ b/compiler/rustc_middle/src/ty/layout.rs @@ -21,7 +21,6 @@ use tracing::debug; use crate::middle::codegen_fn_attrs::CodegenFnAttrFlags; use crate::query::TyCtxtAt; use crate::traits::ObligationCause; -use crate::ty::consts::ConstExt; use crate::ty::normalize_erasing_regions::NormalizationError; use crate::ty::{self, CoroutineArgsExt, Ty, TyCtxt, TypeVisitableExt, Unnormalized}; diff --git a/compiler/rustc_middle/src/ty/pattern.rs b/compiler/rustc_middle/src/ty/pattern.rs index 71d3bf0853f04..2d73124265fc2 100644 --- a/compiler/rustc_middle/src/ty/pattern.rs +++ b/compiler/rustc_middle/src/ty/pattern.rs @@ -7,7 +7,6 @@ use rustc_type_ir::{self as ir, FlagComputation, Flags}; use super::TyCtxt; use crate::ty; -use crate::ty::consts::ConstExt; pub type PatternKind<'tcx> = ir::PatternKind>; diff --git a/compiler/rustc_middle/src/ty/print/pretty.rs b/compiler/rustc_middle/src/ty/print/pretty.rs index cafe93c591090..61ba4a70b5f17 100644 --- a/compiler/rustc_middle/src/ty/print/pretty.rs +++ b/compiler/rustc_middle/src/ty/print/pretty.rs @@ -24,7 +24,6 @@ use smallvec::SmallVec; use super::*; use crate::mir::interpret::{AllocRange, GlobalAlloc, Pointer, Provenance, Scalar}; use crate::query::{IntoQueryKey, Providers}; -use crate::ty::consts::ConstExt; use crate::ty::{ ConstInt, Expr, GenericArgKind, ParamConst, ScalarInt, Term, TermKind, TraitClause, TypeFoldable, TypeSuperFoldable, TypeSuperVisitable, TypeVisitable, TypeVisitableExt, diff --git a/compiler/rustc_middle/src/ty/sty.rs b/compiler/rustc_middle/src/ty/sty.rs index 925915c88cdb4..b18e7b77da5e5 100644 --- a/compiler/rustc_middle/src/ty/sty.rs +++ b/compiler/rustc_middle/src/ty/sty.rs @@ -27,7 +27,6 @@ use super::{AdtFlags, GenericParamDefKind}; use crate::infer::canonical::Canonical; use crate::traits::ObligationCause; use crate::ty::InferTy::*; -use crate::ty::consts::ConstExt; use crate::ty::{ self, AdtDef, Const, Discr, GenericArg, GenericArgs, GenericArgsRef, List, ParamEnv, Region, Ty, TyCtxt, TypeSuperVisitable, TypeVisitable, TypeVisitor, UintTy, ValTree, diff --git a/compiler/rustc_middle/src/ty/typetree.rs b/compiler/rustc_middle/src/ty/typetree.rs index 54cbc591c5fb3..c2479e0c62bca 100644 --- a/compiler/rustc_middle/src/ty/typetree.rs +++ b/compiler/rustc_middle/src/ty/typetree.rs @@ -2,7 +2,6 @@ use rustc_ast::expand::typetree::{FncTree, Kind, Type, TypeTree}; use rustc_span::bug; use tracing::trace; -use crate::ty::consts::ConstExt; use crate::ty::context::TyCtxt; use crate::ty::{self, Ty}; diff --git a/compiler/rustc_middle/src/ty/util.rs b/compiler/rustc_middle/src/ty/util.rs index 0974e0a332ecd..83589adb1691b 100644 --- a/compiler/rustc_middle/src/ty/util.rs +++ b/compiler/rustc_middle/src/ty/util.rs @@ -26,7 +26,6 @@ use crate::middle::codegen_fn_attrs::CodegenFnAttrFlags; use crate::mir; use crate::query::Providers; use crate::traits::ObligationCause; -use crate::ty::consts::ConstExt; use crate::ty::layout::{FloatExt, IntegerExt}; use crate::ty::{ self, Asyncness, FallibleTypeFolder, GenericArgKind, GenericArgsRef, Ty, TyCtxt, TypeFoldable, diff --git a/compiler/rustc_mir_build/src/builder/expr/as_rvalue.rs b/compiler/rustc_mir_build/src/builder/expr/as_rvalue.rs index 09c76d6beb4a1..695684452fc56 100644 --- a/compiler/rustc_mir_build/src/builder/expr/as_rvalue.rs +++ b/compiler/rustc_mir_build/src/builder/expr/as_rvalue.rs @@ -8,7 +8,6 @@ use rustc_middle::mir::*; use rustc_middle::thir::*; use rustc_middle::ty::adjustment::PointerCoercion; use rustc_middle::ty::cast::{CastTy, mir_cast_kind}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::util::IntTypeExt; use rustc_middle::ty::{self, Ty, UpvarArgs}; use rustc_span::{DUMMY_SP, Span, Spanned, bug}; diff --git a/compiler/rustc_mir_build/src/builder/matches/match_pair.rs b/compiler/rustc_mir_build/src/builder/matches/match_pair.rs index 57ffee758b325..392712619a3f2 100644 --- a/compiler/rustc_mir_build/src/builder/matches/match_pair.rs +++ b/compiler/rustc_mir_build/src/builder/matches/match_pair.rs @@ -3,7 +3,6 @@ use std::sync::Arc; use rustc_abi::FieldIdx; use rustc_middle::mir::{Pinnedness, Place, PlaceElem, ProjectionElem}; use rustc_middle::thir::{Ascription, DerefPatBorrowMode, FieldPat, Pat, PatKind}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, Ty, TypeVisitableExt}; use rustc_span::{Span, span_bug}; diff --git a/compiler/rustc_mir_build/src/builder/matches/mod.rs b/compiler/rustc_mir_build/src/builder/matches/mod.rs index 1e65ddf3372a9..64a1fea013ace 100644 --- a/compiler/rustc_mir_build/src/builder/matches/mod.rs +++ b/compiler/rustc_mir_build/src/builder/matches/mod.rs @@ -17,7 +17,6 @@ use rustc_hir::{BindingMode, ByRef, LetStmt, LocalSource, Node}; use rustc_middle::middle::region::{self, TempLifetime}; use rustc_middle::mir::*; use rustc_middle::thir::{self, *}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, CanonicalUserTypeAnnotation, Ty, ValTree, ValTreeKind}; use rustc_pattern_analysis::constructor::RangeEnd; use rustc_pattern_analysis::rustc::{DeconstructedPat, RustcPatCtxt}; diff --git a/compiler/rustc_mir_build/src/builder/scope.rs b/compiler/rustc_mir_build/src/builder/scope.rs index 4b3c224a84357..872ffec45f30a 100644 --- a/compiler/rustc_mir_build/src/builder/scope.rs +++ b/compiler/rustc_mir_build/src/builder/scope.rs @@ -91,7 +91,6 @@ use rustc_lint_defs::Level; use rustc_middle::middle::region; use rustc_middle::mir::{self, *}; use rustc_middle::thir::{AdtExpr, AdtExprBase, ArmId, ExprId, ExprKind}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, Ty, TyCtxt, TypeVisitableExt, ValTree}; use rustc_pattern_analysis::rustc::RustcPatCtxt; use rustc_span::{DUMMY_SP, Span, Spanned, bug, span_bug}; diff --git a/compiler/rustc_mir_build/src/thir/constant.rs b/compiler/rustc_mir_build/src/thir/constant.rs index a669e09475232..6a78135f22dcf 100644 --- a/compiler/rustc_mir_build/src/thir/constant.rs +++ b/compiler/rustc_mir_build/src/thir/constant.rs @@ -1,7 +1,6 @@ use rustc_abi::Size; use rustc_ast::{self as ast, UintTy}; use rustc_attr_ir::lang_items::LangItem; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, LitToConstInput, ScalarInt, Ty, TyCtxt, TypeVisitableExt as _}; use rustc_span::bug; use tracing::trace; diff --git a/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs b/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs index 53c723bb02a0d..f9a91878a47c2 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs @@ -12,7 +12,6 @@ use rustc_infer::infer::TyCtxtInferExt; use rustc_infer::traits::Obligation; use rustc_middle::mir::interpret::ErrorHandled; use rustc_middle::thir::{FieldPat, Pat, PatKind}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{ self, Ty, TyCtxt, TypeSuperVisitable, TypeVisitableExt, TypeVisitor, Unnormalized, }; diff --git a/compiler/rustc_mir_build/src/thir/pattern/mod.rs b/compiler/rustc_mir_build/src/thir/pattern/mod.rs index f5e44d768faa1..5b7a4d626aae3 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/mod.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/mod.rs @@ -19,7 +19,6 @@ use rustc_middle::thir::{ Ascription, FieldPat, LocalVarId, Pat, PatKind, PatRange, PatRangeBoundary, }; use rustc_middle::ty::adjustment::{PatAdjust, PatAdjustment}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::IntegerExt; use rustc_middle::ty::{ self, CanonicalUserTypeAnnotation, LitToConstInput, Ty, TyCtxt, const_lit_matches_ty, diff --git a/compiler/rustc_mir_dataflow/src/move_paths/builder.rs b/compiler/rustc_mir_dataflow/src/move_paths/builder.rs index 3c1c631285f96..f22ce4079e58c 100644 --- a/compiler/rustc_mir_dataflow/src/move_paths/builder.rs +++ b/compiler/rustc_mir_dataflow/src/move_paths/builder.rs @@ -2,7 +2,6 @@ use std::mem; use rustc_index::IndexVec; use rustc_middle::mir::*; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, Ty, TyCtxt, TypeVisitableExt}; use rustc_span::{bug, span_bug}; use smallvec::{SmallVec, smallvec}; diff --git a/compiler/rustc_mir_transform/src/coroutine/layout.rs b/compiler/rustc_mir_transform/src/coroutine/layout.rs index ab500d12b8aa3..8742529d7015b 100644 --- a/compiler/rustc_mir_transform/src/coroutine/layout.rs +++ b/compiler/rustc_mir_transform/src/coroutine/layout.rs @@ -34,7 +34,6 @@ use rustc_index::{Idx, IndexVec}; use rustc_infer::traits::TraitErrors; use rustc_lint_defs::builtin::MUST_NOT_SUSPEND; use rustc_middle::mir::*; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, CoroutineArgs, CoroutineArgsExt, Ty, TyCtxt, TypingMode}; use rustc_mir_dataflow::impls::{ MaybeBorrowedLocals, MaybeLiveLocals, MaybeRequiresStorage, MaybeStorageLive, diff --git a/compiler/rustc_mir_transform/src/elaborate_drop.rs b/compiler/rustc_mir_transform/src/elaborate_drop.rs index 9b81f55ab1145..e296693eda1d0 100644 --- a/compiler/rustc_mir_transform/src/elaborate_drop.rs +++ b/compiler/rustc_mir_transform/src/elaborate_drop.rs @@ -8,7 +8,6 @@ use rustc_hir::{CoroutineDesugaring, CoroutineKind}; use rustc_index::Idx; use rustc_middle::mir::*; use rustc_middle::ty::adjustment::PointerCoercion; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::util::{Discr, IntTypeExt}; use rustc_middle::ty::{self, GenericArgsRef, Ty, TyCtxt}; use rustc_mir_dataflow::DropFlagState; diff --git a/compiler/rustc_mir_transform/src/gvn.rs b/compiler/rustc_mir_transform/src/gvn.rs index b5fa022a527e5..df3b80fa93b2f 100644 --- a/compiler/rustc_mir_transform/src/gvn.rs +++ b/compiler/rustc_mir_transform/src/gvn.rs @@ -114,7 +114,6 @@ use rustc_index::{IndexVec, newtype_index}; use rustc_middle::mir::interpret::{AllocRange, GlobalAlloc}; use rustc_middle::mir::visit::*; use rustc_middle::mir::*; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::HasTypingEnv; use rustc_middle::ty::{self, Ty, TyCtxt, TypeVisitableExt, Unnormalized}; use rustc_mir_dataflow::{Analysis, ResultsCursor}; diff --git a/compiler/rustc_mir_transform/src/instsimplify.rs b/compiler/rustc_mir_transform/src/instsimplify.rs index e02e29a2e23e0..7d6cd6240b578 100644 --- a/compiler/rustc_mir_transform/src/instsimplify.rs +++ b/compiler/rustc_mir_transform/src/instsimplify.rs @@ -6,7 +6,6 @@ use rustc_attr_ir::lang_items::LangItem; use rustc_index::IndexVec; use rustc_middle::mir::visit::MutVisitor; use rustc_middle::mir::*; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{IntegerExt, ValidityRequirement}; use rustc_middle::ty::{self, GenericArgsRef, Ty, TyCtxt, layout}; use rustc_span::{Symbol, bug, sym}; diff --git a/compiler/rustc_mir_transform/src/known_panics_lint.rs b/compiler/rustc_mir_transform/src/known_panics_lint.rs index e25ed11d7a265..f448371977068 100644 --- a/compiler/rustc_mir_transform/src/known_panics_lint.rs +++ b/compiler/rustc_mir_transform/src/known_panics_lint.rs @@ -16,7 +16,6 @@ use rustc_index::bit_set::DenseBitSet; use rustc_lint_defs::builtin::UNCONDITIONAL_PANIC; use rustc_middle::mir::visit::{MutatingUseContext, NonMutatingUseContext, PlaceContext, Visitor}; use rustc_middle::mir::*; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{LayoutError, LayoutOf, LayoutOfHelpers, TyAndLayout}; use rustc_middle::ty::{ self, ConstInt, GenericArgKind, GenericParamDefKind, ScalarInt, Ty, TyCtxt, TypeVisitableExt, diff --git a/compiler/rustc_mir_transform/src/promote_consts.rs b/compiler/rustc_mir_transform/src/promote_consts.rs index 92c2f9a1c20e1..77303782a7b8a 100644 --- a/compiler/rustc_mir_transform/src/promote_consts.rs +++ b/compiler/rustc_mir_transform/src/promote_consts.rs @@ -23,7 +23,6 @@ use rustc_index::{IndexSlice, IndexVec}; use rustc_middle::mir; use rustc_middle::mir::visit::{MutVisitor, MutatingUseContext, PlaceContext, Visitor}; use rustc_middle::mir::*; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, GenericArgs, List, Ty, TyCtxt, TypeVisitableExt}; use rustc_span::{Span, Spanned, bug, span_bug}; use tracing::{debug, instrument}; diff --git a/compiler/rustc_mir_transform/src/remove_zsts.rs b/compiler/rustc_mir_transform/src/remove_zsts.rs index 98f4009c15665..09379fc252072 100644 --- a/compiler/rustc_mir_transform/src/remove_zsts.rs +++ b/compiler/rustc_mir_transform/src/remove_zsts.rs @@ -2,7 +2,6 @@ use rustc_middle::mir::visit::*; use rustc_middle::mir::*; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, Ty, TyCtxt}; use crate::PassPolicy; diff --git a/compiler/rustc_pattern_analysis/src/rustc.rs b/compiler/rustc_pattern_analysis/src/rustc.rs index 581f1061bb80c..5e6b682626210 100644 --- a/compiler/rustc_pattern_analysis/src/rustc.rs +++ b/compiler/rustc_pattern_analysis/src/rustc.rs @@ -9,7 +9,6 @@ use rustc_index::{Idx, IndexVec}; use rustc_lint_defs::builtin::{NON_CONTIGUOUS_RANGE_ENDPOINTS, OVERLAPPING_RANGE_ENDPOINTS}; use rustc_middle::middle::stability::EvalResult; use rustc_middle::thir::{self, Pat, PatKind, PatRange, PatRangeBoundary}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::IntegerExt; use rustc_middle::ty::{ self, FieldDef, OpaqueTypeKey, ScalarInt, Ty, TyCtxt, TypeVisitableExt, VariantDef, diff --git a/compiler/rustc_public_bridge/src/context/impls.rs b/compiler/rustc_public_bridge/src/context/impls.rs index f8ab16a54b451..d97d1f8064969 100644 --- a/compiler/rustc_public_bridge/src/context/impls.rs +++ b/compiler/rustc_public_bridge/src/context/impls.rs @@ -11,7 +11,6 @@ use rustc_crate_store::ForeignModule; use rustc_hir::def::DefKind; use rustc_middle::mir::interpret::{AllocId, ConstAllocation, ErrorHandled, GlobalAlloc, Scalar}; use rustc_middle::mir::{BinOp, Body, Const as MirConst, ConstValue, UnOp}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::{FnAbiOf, LayoutOf}; use rustc_middle::ty::print::{ with_forced_trimmed_paths, with_no_trimmed_paths, with_resolve_crate_name, diff --git a/compiler/rustc_sanitizers/src/cfi/typeid/itanium_cxx_abi/encode.rs b/compiler/rustc_sanitizers/src/cfi/typeid/itanium_cxx_abi/encode.rs index ec21973d21e93..439f1d014f4db 100644 --- a/compiler/rustc_sanitizers/src/cfi/typeid/itanium_cxx_abi/encode.rs +++ b/compiler/rustc_sanitizers/src/cfi/typeid/itanium_cxx_abi/encode.rs @@ -12,7 +12,6 @@ use rustc_attr_ir::find_attr; use rustc_data_structures::base_n::{ALPHANUMERIC_ONLY, CASE_INSENSITIVE, ToBaseN}; use rustc_data_structures::fx::FxHashMap; use rustc_hir as hir; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::IntegerExt; use rustc_middle::ty::{ self, Const, ExistentialPredicate, FloatTy, FnSig, GenericArg, GenericArgKind, GenericArgsRef, diff --git a/compiler/rustc_symbol_mangling/src/legacy.rs b/compiler/rustc_symbol_mangling/src/legacy.rs index bebfd746e1f6b..e2be87e6b271f 100644 --- a/compiler/rustc_symbol_mangling/src/legacy.rs +++ b/compiler/rustc_symbol_mangling/src/legacy.rs @@ -5,7 +5,6 @@ use rustc_data_structures::stable_hash::{StableHash, StableHasher}; use rustc_hashes::Hash64; use rustc_hir::def_id::{CrateNum, DefId}; use rustc_hir::definitions::{DefPathData, DisambiguatedDefPathData}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::print::{PrettyPrinter, Print, PrintError, Printer}; use rustc_middle::ty::{ self, GenericArg, GenericArgKind, Instance, ReifyReason, Ty, TyCtxt, TypeVisitableExt, diff --git a/compiler/rustc_symbol_mangling/src/v0.rs b/compiler/rustc_symbol_mangling/src/v0.rs index fb9f242f60085..e0d9d6976bd14 100644 --- a/compiler/rustc_symbol_mangling/src/v0.rs +++ b/compiler/rustc_symbol_mangling/src/v0.rs @@ -14,7 +14,6 @@ use rustc_hir as hir; use rustc_hir::def::CtorKind; use rustc_hir::def_id::{CrateNum, DefId}; use rustc_hir::definitions::{DefPathData, DisambiguatedDefPathData}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::layout::IntegerExt; use rustc_middle::ty::print::{Print, PrintError, Printer}; use rustc_middle::ty::{ diff --git a/compiler/rustc_trait_selection/src/error_reporting/infer/mod.rs b/compiler/rustc_trait_selection/src/error_reporting/infer/mod.rs index b2b57e018a7cf..eada6d2457e75 100644 --- a/compiler/rustc_trait_selection/src/error_reporting/infer/mod.rs +++ b/compiler/rustc_trait_selection/src/error_reporting/infer/mod.rs @@ -61,7 +61,6 @@ use rustc_hir::intravisit::Visitor; use rustc_infer::infer::DefineOpaqueTypes; use rustc_macros::extension; use rustc_middle::traits::PatternOriginExpr; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::error::{ExpectedFound, TypeError, TypeErrorToStringExt}; use rustc_middle::ty::print::{PrintTraitRefExt as _, WrapBinderMode, with_forced_trimmed_paths}; use rustc_middle::ty::{ diff --git a/compiler/rustc_trait_selection/src/error_reporting/traits/ambiguity.rs b/compiler/rustc_trait_selection/src/error_reporting/traits/ambiguity.rs index 2a3ddaa54aadd..a024cf78c8be1 100644 --- a/compiler/rustc_trait_selection/src/error_reporting/traits/ambiguity.rs +++ b/compiler/rustc_trait_selection/src/error_reporting/traits/ambiguity.rs @@ -11,7 +11,6 @@ use rustc_infer::traits::util::elaborate; use rustc_infer::traits::{ Obligation, ObligationCause, ObligationCauseCode, PolyTraitObligation, PredicateObligation, }; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::print::PrintPolyTraitClauseExt; use rustc_middle::ty::{self, Ty, TyCtxt, TypeVisitable as _, TypeVisitableExt as _, Unnormalized}; use rustc_session::diagnostics::feature_err_unstable_feature_bound; diff --git a/compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs b/compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs index 3b21c5e5f19ba..cb2bd1b76c0cb 100644 --- a/compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs +++ b/compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs @@ -25,7 +25,6 @@ use rustc_infer::traits::{ImplSource, TraitErrors}; use rustc_middle::traits::SignatureMismatchData; use rustc_middle::traits::select::OverflowError; use rustc_middle::ty::abstract_const::NotConstEvaluatable; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::error::{ExpectedFound, TypeError}; use rustc_middle::ty::print::{ PrintPolyTraitClauseExt, PrintPolyTraitRefExt as _, PrintTraitClauseExt as _, diff --git a/compiler/rustc_trait_selection/src/error_reporting/traits/on_unimplemented.rs b/compiler/rustc_trait_selection/src/error_reporting/traits/on_unimplemented.rs index cc5375cb334c1..f30719ffce924 100644 --- a/compiler/rustc_trait_selection/src/error_reporting/traits/on_unimplemented.rs +++ b/compiler/rustc_trait_selection/src/error_reporting/traits/on_unimplemented.rs @@ -4,7 +4,6 @@ use rustc_attr_ir::diagnostic::{CustomDiagnostic, FilterOptions, FormatArgs}; use rustc_attr_ir::find_attr; use rustc_hir as hir; use rustc_hir::def_id::LocalDefId; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::print::PrintTraitRefExt; use rustc_middle::ty::{self, GenericParamDef, GenericParamDefKind}; use rustc_span::Symbol; diff --git a/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs b/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs index 76755eb481db7..cf031c4cbae4a 100644 --- a/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs +++ b/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs @@ -24,7 +24,6 @@ use rustc_infer::traits::ImplSource; use rustc_middle::middle::privacy::Level; use rustc_middle::traits::IsConstable; use rustc_middle::ty::adjustment::{Adjust, DerefAdjustKind}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::error::TypeError; use rustc_middle::ty::print::{ PrintPolyTraitClauseExt as _, PrintPolyTraitRefExt, PrintTraitClauseExt as _, diff --git a/compiler/rustc_trait_selection/src/traits/fulfill.rs b/compiler/rustc_trait_selection/src/traits/fulfill.rs index 83f1fcd756981..ba480654bd84a 100644 --- a/compiler/rustc_trait_selection/src/traits/fulfill.rs +++ b/compiler/rustc_trait_selection/src/traits/fulfill.rs @@ -11,7 +11,6 @@ use rustc_infer::traits::{ TraitEngine, TraitErrors, }; use rustc_middle::ty::abstract_const::NotConstEvaluatable; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::error::{ExpectedFound, TypeError}; use rustc_middle::ty::{ self, Binder, Const, DelayedSet, GenericArgsRef, Ty, TyCtxt, TypeSuperVisitable, TypeVisitable, diff --git a/compiler/rustc_trait_selection/src/traits/mod.rs b/compiler/rustc_trait_selection/src/traits/mod.rs index 8ad7fd4ac3a69..aa676dab91bbc 100644 --- a/compiler/rustc_trait_selection/src/traits/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/mod.rs @@ -30,7 +30,6 @@ use rustc_errors::ErrorGuaranteed; pub use rustc_infer::traits::*; use rustc_macros::TypeVisitable; use rustc_middle::query::Providers; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::error::{ExpectedFound, TypeError}; use rustc_middle::ty::{ self, BottomUpFolder, Clause, GenericArgs, GenericArgsRef, Ty, TyCtxt, TypeFoldable, diff --git a/compiler/rustc_trait_selection/src/traits/query/dropck_outlives.rs b/compiler/rustc_trait_selection/src/traits/query/dropck_outlives.rs index 31d2e8620af90..e9e1cea48ba20 100644 --- a/compiler/rustc_trait_selection/src/traits/query/dropck_outlives.rs +++ b/compiler/rustc_trait_selection/src/traits/query/dropck_outlives.rs @@ -2,7 +2,6 @@ use rustc_data_structures::fx::FxHashSet; use rustc_infer::traits::TraitErrors; use rustc_infer::traits::query::type_op::DropckOutlives; use rustc_middle::traits::query::{DropckConstraint, DropckOutlivesResult}; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, EarlyBinder, ParamEnvAnd, Ty, TyCtxt, Unnormalized}; use rustc_span::Span; use thin_vec::ThinVec; diff --git a/compiler/rustc_transmute/src/lib.rs b/compiler/rustc_transmute/src/lib.rs index a7b07529f0bd1..f478941be509f 100644 --- a/compiler/rustc_transmute/src/lib.rs +++ b/compiler/rustc_transmute/src/lib.rs @@ -103,7 +103,6 @@ pub enum Reason { #[cfg(feature = "rustc")] mod rustc { use rustc_attr_ir::lang_items::LangItem; - use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{Const, Region, Ty, TyCtxt}; use super::*; diff --git a/compiler/rustc_ty_utils/src/consts.rs b/compiler/rustc_ty_utils/src/consts.rs index 79369e5715d21..0507265ded631 100644 --- a/compiler/rustc_ty_utils/src/consts.rs +++ b/compiler/rustc_ty_utils/src/consts.rs @@ -5,7 +5,6 @@ use rustc_middle::query::Providers; use rustc_middle::thir::visit; use rustc_middle::thir::visit::Visitor; use rustc_middle::ty::abstract_const::CastKind; -use rustc_middle::ty::consts::ConstExt; use rustc_middle::ty::{self, Expr, LitToConstInput, TyCtxt, TypeVisitableExt}; use rustc_middle::{mir, thir}; use rustc_span::{Span, bug}; From a2ed71943353d5504fb6f04f4209b0322850e85b Mon Sep 17 00:00:00 2001 From: James Barford-Evans Date: Thu, 24 Sep 2026 13:37:29 +0100 Subject: [PATCH 3/8] Remove `ConstExt` from `./src` --- src/tools/clippy/clippy_lints/src/indexing_slicing.rs | 1 - src/tools/clippy/clippy_lints/src/loops/needless_range_loop.rs | 1 - 2 files changed, 2 deletions(-) diff --git a/src/tools/clippy/clippy_lints/src/indexing_slicing.rs b/src/tools/clippy/clippy_lints/src/indexing_slicing.rs index 4b5b80ed3036c..107ab36741b2b 100644 --- a/src/tools/clippy/clippy_lints/src/indexing_slicing.rs +++ b/src/tools/clippy/clippy_lints/src/indexing_slicing.rs @@ -6,7 +6,6 @@ use clippy_utils::{higher, is_from_proc_macro, is_in_test, sym}; use rustc_ast::ast::RangeLimits; use rustc_hir::{Expr, ExprKind}; use rustc_lint::{LateContext, LateLintPass, impl_lint_pass}; -use rustc_middle::ty::consts::ConstExt as _; use rustc_middle::ty::{self, Ty}; declare_clippy_lint! { diff --git a/src/tools/clippy/clippy_lints/src/loops/needless_range_loop.rs b/src/tools/clippy/clippy_lints/src/loops/needless_range_loop.rs index fb648050439b9..e72842d72f5cb 100644 --- a/src/tools/clippy/clippy_lints/src/loops/needless_range_loop.rs +++ b/src/tools/clippy/clippy_lints/src/loops/needless_range_loop.rs @@ -15,7 +15,6 @@ use rustc_hir::intravisit::{Visitor, walk_expr}; use rustc_hir::{BinOpKind, BorrowKind, Closure, Expr, ExprKind, HirId, Mutability, Pat, PatKind, QPath}; use rustc_lint::LateContext; use rustc_middle::middle::region; -use rustc_middle::ty::consts::ConstExt as _; use rustc_middle::ty::{self, Ty}; use rustc_span::symbol::{Symbol, sym}; use rustc_span::{Span, SyntaxContext}; From d8e79de8589ca53a53a248cc90da9dbe71e098d6 Mon Sep 17 00:00:00 2001 From: James Barford-Evans Date: Tue, 29 Sep 2026 08:47:52 +0100 Subject: [PATCH 4/8] handle nits --- compiler/rustc_middle/src/ty/consts.rs | 23 ++++++++++++++++++- .../rustc_middle/src/ty/consts/valtree.rs | 8 +++++-- .../src/ty/context/impl_interner.rs | 8 ------- compiler/rustc_type_ir/src/inherent.rs | 3 ++- compiler/rustc_type_ir/src/interner.rs | 2 -- compiler/rustc_type_ir/src/sty/consts.rs | 2 +- 6 files changed, 31 insertions(+), 15 deletions(-) diff --git a/compiler/rustc_middle/src/ty/consts.rs b/compiler/rustc_middle/src/ty/consts.rs index bf65f1b361f5c..c6b216e857071 100644 --- a/compiler/rustc_middle/src/ty/consts.rs +++ b/compiler/rustc_middle/src/ty/consts.rs @@ -1,6 +1,7 @@ +use rustc_macros::extension; use rustc_type_ir::{self as ir}; -use crate::ty::TyCtxt; +use crate::ty::{self, Ty, TyCtxt}; mod int; mod kind; @@ -19,3 +20,23 @@ pub type Const<'tcx> = ir::Const>; #[cfg(target_pointer_width = "64")] rustc_data_structures::static_assert_size!(ConstKind<'_>, 32); + +#[extension(pub trait ConstExt<'tcx>)] +impl<'tcx> Const<'tcx> { + /// Creates a constant with the given integer value and interns it. + #[inline] + fn from_bits( + tcx: TyCtxt<'tcx>, + bits: u128, + typing_env: ty::TypingEnv<'tcx>, + ty: Ty<'tcx>, + ) -> Self { + let size = tcx + .layout_of(typing_env.as_query_input(ty)) + .unwrap_or_else(|e| panic!("could not compute layout for {ty:?}: {e:?}")) + .size; + let valtree = + ty::ValTree::from_scalar_int(tcx, ScalarInt::try_from_uint(bits, size).unwrap()); + Self::new_value(tcx, valtree, ty) + } +} diff --git a/compiler/rustc_middle/src/ty/consts/valtree.rs b/compiler/rustc_middle/src/ty/consts/valtree.rs index 4d73d5d782521..2ccb05094a71b 100644 --- a/compiler/rustc_middle/src/ty/consts/valtree.rs +++ b/compiler/rustc_middle/src/ty/consts/valtree.rs @@ -227,6 +227,10 @@ impl<'tcx> Value<'tcx> { } impl<'tcx> rustc_type_ir::inherent::ValueConst> for Value<'tcx> { + fn new(ty: Ty<'tcx>, valtree: ValTree<'tcx>) -> Self { + Self { ty, valtree } + } + fn ty(self) -> Ty<'tcx> { self.ty } @@ -235,8 +239,8 @@ impl<'tcx> rustc_type_ir::inherent::ValueConst> for Value<'tcx> { self.valtree } - fn new(ty: Ty<'tcx>, valtree: ValTree<'tcx>) -> Self { - Self { ty, valtree } + fn try_to_target_usize(self, tcx: TyCtxt<'tcx>) -> Option { + self.try_to_target_usize(tcx) } } diff --git a/compiler/rustc_middle/src/ty/context/impl_interner.rs b/compiler/rustc_middle/src/ty/context/impl_interner.rs index f358a9bd89663..7affbd85881e1 100644 --- a/compiler/rustc_middle/src/ty/context/impl_interner.rs +++ b/compiler/rustc_middle/src/ty/context/impl_interner.rs @@ -757,14 +757,6 @@ impl<'tcx> Interner for TyCtxt<'tcx> { .unwrap_or_else(|e| panic!("could not compute layout for {ty:?}: {e:?}")) .size } - - fn try_const_value_to_target_usize(self, const_v: ty::Value<'tcx>) -> Option { - if !const_v.ty.is_usize() { - None - } else { - const_v.try_to_leaf().map(|s| s.to_target_usize(self)) - } - } } impl<'tcx, T: Clone + Copy> rustc_type_ir::intern::Interned> for Interned<'tcx, T> { diff --git a/compiler/rustc_type_ir/src/inherent.rs b/compiler/rustc_type_ir/src/inherent.rs index 6b8240797194b..c816a4f44d660 100644 --- a/compiler/rustc_type_ir/src/inherent.rs +++ b/compiler/rustc_type_ir/src/inherent.rs @@ -232,9 +232,10 @@ pub trait Safety>: Copy + Debug + Hash + Eq { #[rust_analyzer::prefer_underscore_import] pub trait ValueConst>: Copy + Debug + Hash + Eq { + fn new(ty: I::Ty, valtree: I::ValTree) -> Self; fn ty(self) -> I::Ty; fn valtree(self) -> I::ValTree; - fn new(ty: I::Ty, valtree: I::ValTree) -> Self; + fn try_to_target_usize(self, interner: I) -> Option; } #[rust_analyzer::prefer_underscore_import] diff --git a/compiler/rustc_type_ir/src/interner.rs b/compiler/rustc_type_ir/src/interner.rs index 8ac5e96a7dc5b..9467e982ac976 100644 --- a/compiler/rustc_type_ir/src/interner.rs +++ b/compiler/rustc_type_ir/src/interner.rs @@ -569,8 +569,6 @@ pub trait Interner: fn const_zst(self) -> Self::ValTree; fn layout_of_typing_env_size(self, typing_env: Self::TypingEnv, ty: Self::Ty) -> Size; - - fn try_const_value_to_target_usize(self, const_v: Self::ValueConst) -> Option; } macro_rules! declare_lift_into { diff --git a/compiler/rustc_type_ir/src/sty/consts.rs b/compiler/rustc_type_ir/src/sty/consts.rs index 2728aea6310a9..44dc7d51a87f2 100644 --- a/compiler/rustc_type_ir/src/sty/consts.rs +++ b/compiler/rustc_type_ir/src/sty/consts.rs @@ -245,7 +245,7 @@ impl Const { /// Note that this does not evaluate the constant. #[inline] pub fn try_to_target_usize(self, interner: I) -> Option { - interner.try_const_value_to_target_usize(self.try_to_value()?) + self.try_to_value()?.try_to_target_usize(interner) } /// Iterator that walks `self` and any types reachable from From 225519167427eaba6bd8911d104a28216cfe82c2 Mon Sep 17 00:00:00 2001 From: James Barford-Evans Date: Tue, 29 Sep 2026 08:58:51 +0100 Subject: [PATCH 5/8] create a `const_from_bits(...)` method --- compiler/rustc_middle/src/ty/consts.rs | 25 ++----------------- .../src/ty/context/impl_interner.rs | 16 +++++++++--- compiler/rustc_type_ir/src/interner.rs | 3 +-- compiler/rustc_type_ir/src/sty/consts.rs | 6 +---- 4 files changed, 16 insertions(+), 34 deletions(-) diff --git a/compiler/rustc_middle/src/ty/consts.rs b/compiler/rustc_middle/src/ty/consts.rs index c6b216e857071..543185020adfc 100644 --- a/compiler/rustc_middle/src/ty/consts.rs +++ b/compiler/rustc_middle/src/ty/consts.rs @@ -1,8 +1,5 @@ -use rustc_macros::extension; use rustc_type_ir::{self as ir}; -use crate::ty::{self, Ty, TyCtxt}; - mod int; mod kind; mod lit; @@ -13,6 +10,8 @@ pub use kind::*; pub use lit::*; pub use valtree::*; +use crate::ty::TyCtxt; + pub type ConstKind<'tcx> = ir::ConstKind>; pub type AliasConst<'tcx> = ir::AliasConst>; pub type AliasConstKind<'tcx> = ir::AliasConstKind>; @@ -20,23 +19,3 @@ pub type Const<'tcx> = ir::Const>; #[cfg(target_pointer_width = "64")] rustc_data_structures::static_assert_size!(ConstKind<'_>, 32); - -#[extension(pub trait ConstExt<'tcx>)] -impl<'tcx> Const<'tcx> { - /// Creates a constant with the given integer value and interns it. - #[inline] - fn from_bits( - tcx: TyCtxt<'tcx>, - bits: u128, - typing_env: ty::TypingEnv<'tcx>, - ty: Ty<'tcx>, - ) -> Self { - let size = tcx - .layout_of(typing_env.as_query_input(ty)) - .unwrap_or_else(|e| panic!("could not compute layout for {ty:?}: {e:?}")) - .size; - let valtree = - ty::ValTree::from_scalar_int(tcx, ScalarInt::try_from_uint(bits, size).unwrap()); - Self::new_value(tcx, valtree, ty) - } -} diff --git a/compiler/rustc_middle/src/ty/context/impl_interner.rs b/compiler/rustc_middle/src/ty/context/impl_interner.rs index 7affbd85881e1..cb9a24aa67bbb 100644 --- a/compiler/rustc_middle/src/ty/context/impl_interner.rs +++ b/compiler/rustc_middle/src/ty/context/impl_interner.rs @@ -2,7 +2,6 @@ use std::{debug_assert_matches, fmt}; -use rustc_abi::Size; use rustc_attr_ir::lang_items::LangItem; use rustc_data_structures::intern::Interned; use rustc_errors::ErrorGuaranteed; @@ -752,10 +751,19 @@ impl<'tcx> Interner for TyCtxt<'tcx> { self.consts.valtree_zst } - fn layout_of_typing_env_size(self, typing_env: ty::TypingEnv<'tcx>, ty: Ty<'tcx>) -> Size { - self.layout_of(typing_env.as_query_input(ty)) + fn const_from_bits( + self, + bits: u128, + typing_env: ty::TypingEnv<'tcx>, + ty: Ty<'tcx>, + ) -> ty::Const<'tcx> { + let size = self + .layout_of(typing_env.as_query_input(ty)) .unwrap_or_else(|e| panic!("could not compute layout for {ty:?}: {e:?}")) - .size + .size; + let scalar_int = ty::ScalarInt::try_from_uint(bits, size).unwrap(); + let valtree = self.intern_valtree(ty::ValTreeKind::Leaf(scalar_int)); + ty::Const::new_value(self, valtree, ty) } } diff --git a/compiler/rustc_type_ir/src/interner.rs b/compiler/rustc_type_ir/src/interner.rs index 9467e982ac976..84a0581d73332 100644 --- a/compiler/rustc_type_ir/src/interner.rs +++ b/compiler/rustc_type_ir/src/interner.rs @@ -3,7 +3,6 @@ use std::fmt::{Debug, Display}; use std::hash::Hash; use std::ops::Deref; -use rustc_abi::Size; use rustc_ast_ir::Movability; use rustc_ast_ir::visit::VisitorResult; #[cfg(feature = "nightly")] @@ -568,7 +567,7 @@ pub trait Interner: fn const_zst(self) -> Self::ValTree; - fn layout_of_typing_env_size(self, typing_env: Self::TypingEnv, ty: Self::Ty) -> Size; + fn const_from_bits(self, bits: u128, typing_env: Self::TypingEnv, ty: Self::Ty) -> Const; } macro_rules! declare_lift_into { diff --git a/compiler/rustc_type_ir/src/sty/consts.rs b/compiler/rustc_type_ir/src/sty/consts.rs index 44dc7d51a87f2..0dc1f08e5d171 100644 --- a/compiler/rustc_type_ir/src/sty/consts.rs +++ b/compiler/rustc_type_ir/src/sty/consts.rs @@ -15,7 +15,6 @@ use crate::{ AliasConst, BoundConst, BoundVar, BoundVarIndexKind, ConstKind, ConstVid, DebruijnIndex, FallibleTypeFolder, Flags, InferConst, Interner, IsRigid, PlaceholderConst, TypeFlags, TypeFoldable, TypeFolder, TypeSuperFoldable, TypeSuperVisitable, TypeVisitable, TypeVisitor, - ValTreeKind, }; #[derive_where(Clone, Copy, PartialEq, Eq, Hash; I: Interner)] @@ -219,10 +218,7 @@ impl Const { /// Creates a constant with the given integer value and interns it. #[inline] pub fn from_bits(interner: I, bits: u128, typing_env: I::TypingEnv, ty: I::Ty) -> Self { - let size = interner.layout_of_typing_env_size(typing_env, ty); - let scalar_int = I::ScalarInt::try_from_uint(bits, size).unwrap(); - let valtree = interner.intern_valtree(ValTreeKind::Leaf(scalar_int)); - Self::new_value(interner, valtree, ty) + interner.const_from_bits(bits, typing_env, ty) } #[inline] From 7c053f6dbc4dccb87c550a807db24f06124d5ca5 Mon Sep 17 00:00:00 2001 From: Jamesbarford Date: Tue, 6 Oct 2026 08:25:30 +0000 Subject: [PATCH 6/8] Remove ConstExt from clippy --- src/tools/clippy/clippy_lints/src/large_const_arrays.rs | 1 - src/tools/clippy/clippy_lints/src/large_stack_arrays.rs | 1 - src/tools/clippy/clippy_lints/src/loops/explicit_iter_loop.rs | 1 - src/tools/clippy/clippy_lints/src/loops/manual_memcpy.rs | 1 - src/tools/clippy/clippy_lints/src/matches/single_match.rs | 1 - src/tools/clippy/clippy_lints/src/methods/iter_out_of_bounds.rs | 1 - src/tools/clippy/clippy_lints/src/methods/utils.rs | 1 - src/tools/clippy/clippy_lints/src/trailing_empty_array.rs | 1 - src/tools/clippy/clippy_lints/src/tuple_array_conversions.rs | 1 - src/tools/clippy/clippy_utils/src/consts.rs | 1 - src/tools/clippy/clippy_utils/src/ty/mod.rs | 1 - 11 files changed, 11 deletions(-) diff --git a/src/tools/clippy/clippy_lints/src/large_const_arrays.rs b/src/tools/clippy/clippy_lints/src/large_const_arrays.rs index e39fe76715e3a..4d8ef09d17da3 100644 --- a/src/tools/clippy/clippy_lints/src/large_const_arrays.rs +++ b/src/tools/clippy/clippy_lints/src/large_const_arrays.rs @@ -3,7 +3,6 @@ use clippy_utils::diagnostics::span_lint_and_then; use rustc_errors::Applicability; use rustc_hir::{Item, ItemKind}; use rustc_lint::{LateContext, LateLintPass, impl_lint_pass}; -use rustc_middle::ty::consts::ConstExt as _; use rustc_middle::ty::layout::LayoutOf as _; use rustc_middle::ty::{self, Ty, Unnormalized}; use rustc_span::{BytePos, Pos as _, Span}; diff --git a/src/tools/clippy/clippy_lints/src/large_stack_arrays.rs b/src/tools/clippy/clippy_lints/src/large_stack_arrays.rs index 3c58425e2621b..49d4fe478cdf4 100644 --- a/src/tools/clippy/clippy_lints/src/large_stack_arrays.rs +++ b/src/tools/clippy/clippy_lints/src/large_stack_arrays.rs @@ -8,7 +8,6 @@ use clippy_utils::{is_from_proc_macro, sym}; use rustc_hir::{Expr, ExprKind, Item, ItemKind, Node}; use rustc_lint::{LateContext, LateLintPass, impl_lint_pass}; use rustc_middle::ty; -use rustc_middle::ty::consts::ConstExt as _; use rustc_middle::ty::layout::LayoutOf as _; use rustc_span::Span; diff --git a/src/tools/clippy/clippy_lints/src/loops/explicit_iter_loop.rs b/src/tools/clippy/clippy_lints/src/loops/explicit_iter_loop.rs index ae56293a77b05..ba2a418104a47 100644 --- a/src/tools/clippy/clippy_lints/src/loops/explicit_iter_loop.rs +++ b/src/tools/clippy/clippy_lints/src/loops/explicit_iter_loop.rs @@ -13,7 +13,6 @@ use rustc_errors::Applicability; use rustc_hir::{Expr, Mutability}; use rustc_lint::LateContext; use rustc_middle::ty::adjustment::{Adjust, Adjustment, AutoBorrow, AutoBorrowMutability}; -use rustc_middle::ty::consts::ConstExt as _; use rustc_middle::ty::{self, EarlyBinder, Ty}; pub(super) fn check( diff --git a/src/tools/clippy/clippy_lints/src/loops/manual_memcpy.rs b/src/tools/clippy/clippy_lints/src/loops/manual_memcpy.rs index 19085c5ffa687..ec0c4fb23390b 100644 --- a/src/tools/clippy/clippy_lints/src/loops/manual_memcpy.rs +++ b/src/tools/clippy/clippy_lints/src/loops/manual_memcpy.rs @@ -11,7 +11,6 @@ use rustc_errors::Applicability; use rustc_hir::intravisit::walk_block; use rustc_hir::{BinOpKind, Block, Expr, ExprKind, HirId, Pat, PatKind, StmtKind}; use rustc_lint::LateContext; -use rustc_middle::ty::consts::ConstExt as _; use rustc_middle::ty::{self, Ty}; use rustc_span::symbol::sym; use std::fmt::Display; diff --git a/src/tools/clippy/clippy_lints/src/matches/single_match.rs b/src/tools/clippy/clippy_lints/src/matches/single_match.rs index 6343c13a20eb8..3d9a634f2008f 100644 --- a/src/tools/clippy/clippy_lints/src/matches/single_match.rs +++ b/src/tools/clippy/clippy_lints/src/matches/single_match.rs @@ -11,7 +11,6 @@ use rustc_hir::def::{DefKind, Res}; use rustc_hir::intravisit::{Visitor, walk_pat}; use rustc_hir::{Arm, Expr, ExprKind, HirId, Node, Pat, PatExpr, PatExprKind, PatKind, QPath, StmtKind}; use rustc_lint::LateContext; -use rustc_middle::ty::consts::ConstExt as _; use rustc_middle::ty::{self, AdtDef, TyCtxt, TypeckResults, VariantDef}; use rustc_span::Span; diff --git a/src/tools/clippy/clippy_lints/src/methods/iter_out_of_bounds.rs b/src/tools/clippy/clippy_lints/src/methods/iter_out_of_bounds.rs index 88fb32752ef04..7ec9021af11d8 100644 --- a/src/tools/clippy/clippy_lints/src/methods/iter_out_of_bounds.rs +++ b/src/tools/clippy/clippy_lints/src/methods/iter_out_of_bounds.rs @@ -6,7 +6,6 @@ use rustc_ast::LitKind; use rustc_hir::{Expr, ExprKind}; use rustc_lint::LateContext; use rustc_middle::ty; -use rustc_middle::ty::consts::ConstExt as _; use super::ITER_OUT_OF_BOUNDS; diff --git a/src/tools/clippy/clippy_lints/src/methods/utils.rs b/src/tools/clippy/clippy_lints/src/methods/utils.rs index 28d9baa80fe5f..9e7764fa19c80 100644 --- a/src/tools/clippy/clippy_lints/src/methods/utils.rs +++ b/src/tools/clippy/clippy_lints/src/methods/utils.rs @@ -4,7 +4,6 @@ use rustc_hir::intravisit::{Visitor, walk_expr}; use rustc_hir::{BorrowKind, Expr, ExprKind, HirId, Mutability, Pat, QPath, Stmt, StmtKind}; use rustc_lint::LateContext; use rustc_middle::hir::nested_filter; -use rustc_middle::ty::consts::ConstExt as _; use rustc_middle::ty::{self, Ty}; use rustc_span::Span; use rustc_span::symbol::sym; diff --git a/src/tools/clippy/clippy_lints/src/trailing_empty_array.rs b/src/tools/clippy/clippy_lints/src/trailing_empty_array.rs index 94ea802085ccb..9fa66fc86c305 100644 --- a/src/tools/clippy/clippy_lints/src/trailing_empty_array.rs +++ b/src/tools/clippy/clippy_lints/src/trailing_empty_array.rs @@ -3,7 +3,6 @@ use clippy_utils::{has_repr_attr, is_in_test}; use rustc_hir::{Item, ItemKind}; use rustc_lint::{LateContext, LateLintPass, declare_lint_pass}; use rustc_middle::ty; -use rustc_middle::ty::consts::ConstExt as _; declare_clippy_lint! { /// ### What it does diff --git a/src/tools/clippy/clippy_lints/src/tuple_array_conversions.rs b/src/tools/clippy/clippy_lints/src/tuple_array_conversions.rs index 94fcfef353db3..c339affc3e8ba 100644 --- a/src/tools/clippy/clippy_lints/src/tuple_array_conversions.rs +++ b/src/tools/clippy/clippy_lints/src/tuple_array_conversions.rs @@ -13,7 +13,6 @@ use rustc_data_structures::packed::Pu128; use rustc_hir::intravisit::Visitor; use rustc_hir::{Arm, Expr, ExprKind, HirId, ImplItemKind, ItemKind, Node, PatKind, Stmt, TraitFn, TraitItemKind}; use rustc_lint::{LateContext, LateLintPass, impl_lint_pass}; -use rustc_middle::ty::consts::ConstExt as _; use rustc_middle::ty::{self, TyCtxt}; use rustc_span::sym; diff --git a/src/tools/clippy/clippy_utils/src/consts.rs b/src/tools/clippy/clippy_utils/src/consts.rs index 0c7a9b36d97c5..ca7129a87f739 100644 --- a/src/tools/clippy/clippy_utils/src/consts.rs +++ b/src/tools/clippy/clippy_utils/src/consts.rs @@ -21,7 +21,6 @@ use rustc_lexer::{FrontmatterAllowed, tokenize}; use rustc_lint::LateContext; use rustc_middle::mir::interpret::{Scalar, alloc_range}; use rustc_middle::mir::{self, ConstValue}; -use rustc_middle::ty::consts::ConstExt as _; use rustc_middle::ty::{self, FloatTy, IntTy, ScalarInt, Ty, TyCtxt, TypeckResults, UintTy}; use rustc_span::{Symbol, SyntaxContext, bug, span_bug}; use std::cell::Cell; diff --git a/src/tools/clippy/clippy_utils/src/ty/mod.rs b/src/tools/clippy/clippy_utils/src/ty/mod.rs index 0613d8d7453af..450c991dcd9e9 100644 --- a/src/tools/clippy/clippy_utils/src/ty/mod.rs +++ b/src/tools/clippy/clippy_utils/src/ty/mod.rs @@ -21,7 +21,6 @@ use rustc_middle::mir::ConstValue; use rustc_middle::mir::interpret::Scalar; use rustc_middle::traits::EvaluationResult; use rustc_middle::ty::adjustment::{Adjust, Adjustment, DerefAdjustKind}; -use rustc_middle::ty::consts::ConstExt as _; use rustc_middle::ty::layout::{LayoutError, LayoutOf as _, TyAndLayout}; use rustc_middle::ty::{ self, AdtDef, AliasTy, AssocItem, AssocTag, Binder, BoundRegion, BoundVarIndexKind, FnSig, GenericArg, From 5bdab32f49d4769b175c26b0cb0837fcd035caeb Mon Sep 17 00:00:00 2001 From: Jamesbarford Date: Tue, 6 Oct 2026 09:17:25 +0000 Subject: [PATCH 7/8] use `panic!` over `bug!` --- compiler/rustc_type_ir/src/sty/consts.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/compiler/rustc_type_ir/src/sty/consts.rs b/compiler/rustc_type_ir/src/sty/consts.rs index 0dc1f08e5d171..a09e5673ad931 100644 --- a/compiler/rustc_type_ir/src/sty/consts.rs +++ b/compiler/rustc_type_ir/src/sty/consts.rs @@ -4,7 +4,6 @@ use derive_where::derive_where; use rustc_ast_ir::visit::VisitorResult; #[cfg(feature = "nightly")] use rustc_macros::StableHash_NoContext; -use rustc_span::bug; use rustc_type_ir_macros::{GenericTypeVisitable, Lift_Generic}; use crate::inherent::*; @@ -163,7 +162,7 @@ impl Const { pub fn to_value(self) -> I::ValueConst { match self.kind() { ConstKind::Value(cv) => cv, - _ => bug!("expected ConstKind::Value, got {:?}", self.kind()), + _ => panic!("expected ConstKind::Value, got {:?}", self.kind()), } } From 0bf6c480296fca925fde87b4b2194cc2ab6671d7 Mon Sep 17 00:00:00 2001 From: James Barford-Evans Date: Thu, 8 Oct 2026 08:34:18 +0100 Subject: [PATCH 8/8] Remove `const_from_bits` off interner and create `layout_size` on `inherent::TypingEnv` --- .../rustc_middle/src/ty/context/impl_interner.rs | 15 --------------- compiler/rustc_middle/src/ty/mod.rs | 8 +++++++- compiler/rustc_type_ir/src/inherent.rs | 1 + compiler/rustc_type_ir/src/interner.rs | 2 -- compiler/rustc_type_ir/src/sty/consts.rs | 6 +++++- 5 files changed, 13 insertions(+), 19 deletions(-) diff --git a/compiler/rustc_middle/src/ty/context/impl_interner.rs b/compiler/rustc_middle/src/ty/context/impl_interner.rs index cb9a24aa67bbb..c9858d7ef9cb2 100644 --- a/compiler/rustc_middle/src/ty/context/impl_interner.rs +++ b/compiler/rustc_middle/src/ty/context/impl_interner.rs @@ -750,21 +750,6 @@ impl<'tcx> Interner for TyCtxt<'tcx> { fn const_zst(self) -> ty::ValTree<'tcx> { self.consts.valtree_zst } - - fn const_from_bits( - self, - bits: u128, - typing_env: ty::TypingEnv<'tcx>, - ty: Ty<'tcx>, - ) -> ty::Const<'tcx> { - let size = self - .layout_of(typing_env.as_query_input(ty)) - .unwrap_or_else(|e| panic!("could not compute layout for {ty:?}: {e:?}")) - .size; - let scalar_int = ty::ScalarInt::try_from_uint(bits, size).unwrap(); - let valtree = self.intern_valtree(ty::ValTreeKind::Leaf(scalar_int)); - ty::Const::new_value(self, valtree, ty) - } } impl<'tcx, T: Clone + Copy> rustc_type_ir::intern::Interned> for Interned<'tcx, T> { diff --git a/compiler/rustc_middle/src/ty/mod.rs b/compiler/rustc_middle/src/ty/mod.rs index b4acedb582c83..149c5f6e91592 100644 --- a/compiler/rustc_middle/src/ty/mod.rs +++ b/compiler/rustc_middle/src/ty/mod.rs @@ -26,7 +26,7 @@ pub use generic_args::{GenericArgKind, TermKind, *}; pub use generics::*; pub use intrinsic::IntrinsicDef; use rustc_abi::{ - Align, FieldIdx, Integer, IntegerType, ReprFlags, ReprOptions, ScalableElt, VariantIdx, + Align, FieldIdx, Integer, IntegerType, ReprFlags, ReprOptions, ScalableElt, Size, VariantIdx, }; use rustc_ast::{self as ast}; pub use rustc_ast_ir::{Movability, Mutability, try_visit}; @@ -1113,6 +1113,12 @@ impl<'tcx> rustc_type_ir::inherent::TypingEnv> for TypingEnv<'tcx> fn fully_monomorphized() -> Self { Self::fully_monomorphized() } + + fn layout_size(self, tcx: TyCtxt<'tcx>, ty: Ty<'tcx>) -> Size { + tcx.layout_of(self.as_query_input(ty)) + .unwrap_or_else(|e| panic!("could not compute layout for {ty:?}: {e:?}")) + .size + } } impl<'tcx> TypingEnv<'tcx> { diff --git a/compiler/rustc_type_ir/src/inherent.rs b/compiler/rustc_type_ir/src/inherent.rs index c816a4f44d660..4fd92194c5d81 100644 --- a/compiler/rustc_type_ir/src/inherent.rs +++ b/compiler/rustc_type_ir/src/inherent.rs @@ -758,4 +758,5 @@ pub trait ScalarInt: Copy + Debug + Hash + Eq { pub trait TypingEnv: Copy + Clone + Debug + PartialEq + Eq + Hash { fn fully_monomorphized() -> Self; + fn layout_size(self, interner: I, ty: I::Ty) -> Size; } diff --git a/compiler/rustc_type_ir/src/interner.rs b/compiler/rustc_type_ir/src/interner.rs index 84a0581d73332..11cf127481b6a 100644 --- a/compiler/rustc_type_ir/src/interner.rs +++ b/compiler/rustc_type_ir/src/interner.rs @@ -566,8 +566,6 @@ pub trait Interner: fn mk_canonical_input(self, data: CanonicalInputData) -> Self::CanonicalInput; fn const_zst(self) -> Self::ValTree; - - fn const_from_bits(self, bits: u128, typing_env: Self::TypingEnv, ty: Self::Ty) -> Const; } macro_rules! declare_lift_into { diff --git a/compiler/rustc_type_ir/src/sty/consts.rs b/compiler/rustc_type_ir/src/sty/consts.rs index a09e5673ad931..65cce0aa20481 100644 --- a/compiler/rustc_type_ir/src/sty/consts.rs +++ b/compiler/rustc_type_ir/src/sty/consts.rs @@ -14,6 +14,7 @@ use crate::{ AliasConst, BoundConst, BoundVar, BoundVarIndexKind, ConstKind, ConstVid, DebruijnIndex, FallibleTypeFolder, Flags, InferConst, Interner, IsRigid, PlaceholderConst, TypeFlags, TypeFoldable, TypeFolder, TypeSuperFoldable, TypeSuperVisitable, TypeVisitable, TypeVisitor, + ValTreeKind, }; #[derive_where(Clone, Copy, PartialEq, Eq, Hash; I: Interner)] @@ -217,7 +218,10 @@ impl Const { /// Creates a constant with the given integer value and interns it. #[inline] pub fn from_bits(interner: I, bits: u128, typing_env: I::TypingEnv, ty: I::Ty) -> Self { - interner.const_from_bits(bits, typing_env, ty) + let size = typing_env.layout_size(interner, ty); + let scalar_int = I::ScalarInt::try_from_uint(bits, size).unwrap(); + let valtree = interner.intern_valtree(ValTreeKind::Leaf(scalar_int)); + Self::new_value(interner, valtree, ty) } #[inline]