mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
Remove rustc_transmute's dependence on rustc_infer.
`TransmuteTypeEnv` only needs a `TyCtxt`, not an `InferCtxt`.
This commit is contained in:
@@ -4500,7 +4500,6 @@ dependencies = [
|
||||
"rustc_abi",
|
||||
"rustc_data_structures",
|
||||
"rustc_hir",
|
||||
"rustc_infer",
|
||||
"rustc_macros",
|
||||
"rustc_middle",
|
||||
"rustc_span",
|
||||
|
||||
@@ -2544,7 +2544,7 @@ fn get_safe_transmute_error_and_reason(
|
||||
let src = trait_pred.trait_ref.args.type_at(1);
|
||||
let err_msg = format!("`{src}` cannot be safely transmuted into `{dst}`");
|
||||
|
||||
match rustc_transmute::TransmuteTypeEnv::new(self.infcx).is_transmutable(
|
||||
match rustc_transmute::TransmuteTypeEnv::new(self.infcx.tcx).is_transmutable(
|
||||
obligation.cause,
|
||||
src_and_dst,
|
||||
assume,
|
||||
|
||||
@@ -236,7 +236,7 @@ fn is_transmutable(
|
||||
};
|
||||
|
||||
// FIXME(transmutability): This really should be returning nested goals for `Answer::If*`
|
||||
match rustc_transmute::TransmuteTypeEnv::new(&self.0).is_transmutable(
|
||||
match rustc_transmute::TransmuteTypeEnv::new(self.0.tcx).is_transmutable(
|
||||
ObligationCause::dummy(),
|
||||
rustc_transmute::Types { src, dst },
|
||||
assume,
|
||||
|
||||
@@ -424,7 +424,7 @@ fn flatten_answer_tree<'tcx>(
|
||||
let src = predicate.trait_ref.args.type_at(1);
|
||||
|
||||
debug!(?src, ?dst);
|
||||
let mut transmute_env = rustc_transmute::TransmuteTypeEnv::new(self.infcx);
|
||||
let mut transmute_env = rustc_transmute::TransmuteTypeEnv::new(self.infcx.tcx);
|
||||
let maybe_transmutable = transmute_env.is_transmutable(
|
||||
obligation.cause.clone(),
|
||||
rustc_transmute::Types { dst, src },
|
||||
|
||||
@@ -8,7 +8,6 @@ edition = "2024"
|
||||
rustc_abi = { path = "../rustc_abi", optional = true }
|
||||
rustc_data_structures = { path = "../rustc_data_structures" }
|
||||
rustc_hir = { path = "../rustc_hir", optional = true }
|
||||
rustc_infer = { path = "../rustc_infer", optional = true }
|
||||
rustc_macros = { path = "../rustc_macros", optional = true }
|
||||
rustc_middle = { path = "../rustc_middle", optional = true }
|
||||
rustc_span = { path = "../rustc_span", optional = true }
|
||||
@@ -19,7 +18,6 @@ tracing = "0.1"
|
||||
rustc = [
|
||||
"dep:rustc_abi",
|
||||
"dep:rustc_hir",
|
||||
"dep:rustc_infer",
|
||||
"dep:rustc_macros",
|
||||
"dep:rustc_middle",
|
||||
"dep:rustc_span",
|
||||
|
||||
@@ -81,7 +81,6 @@ pub enum Reason<T> {
|
||||
#[cfg(feature = "rustc")]
|
||||
mod rustc {
|
||||
use rustc_hir::lang_items::LangItem;
|
||||
use rustc_infer::infer::InferCtxt;
|
||||
use rustc_macros::TypeVisitable;
|
||||
use rustc_middle::traits::ObligationCause;
|
||||
use rustc_middle::ty::{Const, ParamEnv, Ty, TyCtxt};
|
||||
@@ -97,13 +96,13 @@ pub struct Types<'tcx> {
|
||||
pub dst: Ty<'tcx>,
|
||||
}
|
||||
|
||||
pub struct TransmuteTypeEnv<'cx, 'tcx> {
|
||||
infcx: &'cx InferCtxt<'tcx>,
|
||||
pub struct TransmuteTypeEnv<'tcx> {
|
||||
tcx: TyCtxt<'tcx>,
|
||||
}
|
||||
|
||||
impl<'cx, 'tcx> TransmuteTypeEnv<'cx, 'tcx> {
|
||||
pub fn new(infcx: &'cx InferCtxt<'tcx>) -> Self {
|
||||
Self { infcx }
|
||||
impl<'tcx> TransmuteTypeEnv<'tcx> {
|
||||
pub fn new(tcx: TyCtxt<'tcx>) -> Self {
|
||||
Self { tcx }
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
@@ -117,7 +116,7 @@ pub fn is_transmutable(
|
||||
types.src,
|
||||
types.dst,
|
||||
assume,
|
||||
self.infcx.tcx,
|
||||
self.tcx,
|
||||
)
|
||||
.answer()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user