improve naming
This commit is contained in:
parent
805c44d5d3
commit
a909eb6b65
44 changed files with 184 additions and 160 deletions
|
@ -1536,7 +1536,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
|
|||
pub fn const_eval_resolve(
|
||||
&self,
|
||||
param_env: ty::ParamEnv<'tcx>,
|
||||
def: ty::WithOptParam<DefId>,
|
||||
def: ty::WithOptConstParam<DefId>,
|
||||
substs: SubstsRef<'tcx>,
|
||||
promoted: Option<mir::Promoted>,
|
||||
span: Option<Span>,
|
||||
|
|
|
@ -892,7 +892,7 @@ fn analysis(tcx: TyCtxt<'_>, cnum: CrateNum) -> Result<()> {
|
|||
|
||||
if tcx.hir().body_const_context(def_id).is_some() {
|
||||
tcx.ensure()
|
||||
.mir_drops_elaborated_and_const_checked(ty::WithOptParam::dummy(def_id));
|
||||
.mir_drops_elaborated_and_const_checked(ty::WithOptConstParam::dummy(def_id));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -34,7 +34,7 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||
pub fn const_eval_resolve(
|
||||
self,
|
||||
param_env: ty::ParamEnv<'tcx>,
|
||||
def: ty::WithOptParam<DefId>,
|
||||
def: ty::WithOptConstParam<DefId>,
|
||||
substs: SubstsRef<'tcx>,
|
||||
promoted: Option<mir::Promoted>,
|
||||
span: Option<Span>,
|
||||
|
|
|
@ -328,17 +328,20 @@ pub struct CoverageInfo {
|
|||
impl<'tcx> TyCtxt<'tcx> {
|
||||
pub fn mir_borrowck_opt_const_arg(
|
||||
self,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
) -> &'tcx BorrowCheckResult<'tcx> {
|
||||
if let Some(param_did) = def.param_did {
|
||||
if let Some(param_did) = def.const_param_did {
|
||||
self.mir_borrowck_const_arg((def.did, param_did))
|
||||
} else {
|
||||
self.mir_borrowck(def.did)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn mir_const_qualif_opt_const_arg(self, def: ty::WithOptParam<LocalDefId>) -> ConstQualifs {
|
||||
if let Some(param_did) = def.param_did {
|
||||
pub fn mir_const_qualif_opt_const_arg(
|
||||
self,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
) -> ConstQualifs {
|
||||
if let Some(param_did) = def.const_param_did {
|
||||
self.mir_const_qualif_const_arg((def.did, param_did))
|
||||
} else {
|
||||
self.mir_const_qualif(def.did)
|
||||
|
@ -347,7 +350,7 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||
|
||||
pub fn promoted_mir_of_opt_const_arg(
|
||||
self,
|
||||
def: ty::WithOptParam<DefId>,
|
||||
def: ty::WithOptConstParam<DefId>,
|
||||
) -> &'tcx IndexVec<Promoted, Body<'tcx>> {
|
||||
if let Some((did, param_did)) = def.as_const_arg() {
|
||||
self.promoted_mir_of_const_arg((did, param_did))
|
||||
|
|
|
@ -105,7 +105,7 @@ rustc_queries! {
|
|||
/// ```
|
||||
query opt_const_param_of(key: LocalDefId) -> Option<DefId> {
|
||||
desc { |tcx| "computing the optional const parameter of `{}`", tcx.def_path_str(key.to_def_id()) }
|
||||
// FIXME: consider storing this query on disk.
|
||||
// FIXME(#74113): consider storing this query on disk.
|
||||
}
|
||||
|
||||
/// Records the type of every item.
|
||||
|
@ -219,7 +219,7 @@ rustc_queries! {
|
|||
|
||||
/// Fetch the MIR for a given `DefId` right after it's built - this includes
|
||||
/// unreachable code.
|
||||
query mir_built(key: ty::WithOptParam<LocalDefId>) -> &'tcx Steal<mir::Body<'tcx>> {
|
||||
query mir_built(key: ty::WithOptConstParam<LocalDefId>) -> &'tcx Steal<mir::Body<'tcx>> {
|
||||
desc { |tcx| "building MIR for `{}`", tcx.def_path_str(key.did.to_def_id()) }
|
||||
}
|
||||
|
||||
|
@ -227,23 +227,23 @@ rustc_queries! {
|
|||
/// ready for const qualification.
|
||||
///
|
||||
/// See the README for the `mir` module for details.
|
||||
query mir_const(key: ty::WithOptParam<LocalDefId>) -> &'tcx Steal<mir::Body<'tcx>> {
|
||||
query mir_const(key: ty::WithOptConstParam<LocalDefId>) -> &'tcx Steal<mir::Body<'tcx>> {
|
||||
desc {
|
||||
|tcx| "processing MIR for {}`{}`",
|
||||
if key.param_did.is_some() { "the const argument " } else { "" },
|
||||
if key.const_param_did.is_some() { "the const argument " } else { "" },
|
||||
tcx.def_path_str(key.did.to_def_id()),
|
||||
}
|
||||
no_hash
|
||||
}
|
||||
|
||||
query mir_drops_elaborated_and_const_checked(
|
||||
key: ty::WithOptParam<LocalDefId>
|
||||
key: ty::WithOptConstParam<LocalDefId>
|
||||
) -> &'tcx Steal<mir::Body<'tcx>> {
|
||||
no_hash
|
||||
desc { |tcx| "elaborating drops for `{}`", tcx.def_path_str(key.did.to_def_id()) }
|
||||
}
|
||||
|
||||
query mir_validated(key: ty::WithOptParam<LocalDefId>) ->
|
||||
query mir_validated(key: ty::WithOptConstParam<LocalDefId>) ->
|
||||
(
|
||||
&'tcx Steal<mir::Body<'tcx>>,
|
||||
&'tcx Steal<IndexVec<mir::Promoted, mir::Body<'tcx>>>
|
||||
|
@ -251,7 +251,7 @@ rustc_queries! {
|
|||
no_hash
|
||||
desc {
|
||||
|tcx| "processing {}`{}`",
|
||||
if key.param_did.is_some() { "the const argument " } else { "" },
|
||||
if key.const_param_did.is_some() { "the const argument " } else { "" },
|
||||
tcx.def_path_str(key.did.to_def_id()),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -982,9 +982,9 @@ pub struct GlobalCtxt<'tcx> {
|
|||
impl<'tcx> TyCtxt<'tcx> {
|
||||
pub fn typeck_tables_of_opt_const_arg(
|
||||
self,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
) -> &'tcx TypeckTables<'tcx> {
|
||||
if let Some(param_did) = def.param_did {
|
||||
if let Some(param_did) = def.const_param_did {
|
||||
self.typeck_tables_of_const_arg((def.did, param_did))
|
||||
} else {
|
||||
self.typeck_tables_of(def.did)
|
||||
|
|
|
@ -29,7 +29,7 @@ pub enum InstanceDef<'tcx> {
|
|||
/// - `fn` items
|
||||
/// - closures
|
||||
/// - generators
|
||||
Item(ty::WithOptParam<DefId>),
|
||||
Item(ty::WithOptConstParam<DefId>),
|
||||
|
||||
/// An intrinsic `fn` item (with `"rust-intrinsic"` or `"platform-intrinsic"` ABI).
|
||||
///
|
||||
|
@ -186,7 +186,7 @@ impl<'tcx> InstanceDef<'tcx> {
|
|||
}
|
||||
|
||||
#[inline]
|
||||
pub fn with_opt_param(self) -> ty::WithOptParam<DefId> {
|
||||
pub fn with_opt_param(self) -> ty::WithOptConstParam<DefId> {
|
||||
match self {
|
||||
InstanceDef::Item(def) => def,
|
||||
InstanceDef::VtableShim(def_id)
|
||||
|
@ -196,7 +196,7 @@ impl<'tcx> InstanceDef<'tcx> {
|
|||
| InstanceDef::Intrinsic(def_id)
|
||||
| InstanceDef::ClosureOnceShim { call_once: def_id }
|
||||
| InstanceDef::DropGlue(def_id, _)
|
||||
| InstanceDef::CloneShim(def_id, _) => ty::WithOptParam::dummy(def_id),
|
||||
| InstanceDef::CloneShim(def_id, _) => ty::WithOptConstParam::dummy(def_id),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -298,7 +298,7 @@ impl<'tcx> Instance<'tcx> {
|
|||
def_id,
|
||||
substs
|
||||
);
|
||||
Instance { def: InstanceDef::Item(ty::WithOptParam::dummy(def_id)), substs }
|
||||
Instance { def: InstanceDef::Item(ty::WithOptConstParam::dummy(def_id)), substs }
|
||||
}
|
||||
|
||||
pub fn mono(tcx: TyCtxt<'tcx>, def_id: DefId) -> Instance<'tcx> {
|
||||
|
@ -355,7 +355,7 @@ impl<'tcx> Instance<'tcx> {
|
|||
pub fn resolve_const_arg(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
param_env: ty::ParamEnv<'tcx>,
|
||||
def: ty::WithOptParam<DefId>,
|
||||
def: ty::WithOptConstParam<DefId>,
|
||||
substs: SubstsRef<'tcx>,
|
||||
) -> Result<Option<Instance<'tcx>>, ErrorReported> {
|
||||
let substs = tcx.erase_regions(&substs);
|
||||
|
|
|
@ -1099,7 +1099,7 @@ pub enum PredicateKind<'tcx> {
|
|||
Subtype(PolySubtypePredicate<'tcx>),
|
||||
|
||||
/// Constant initializer must evaluate successfully.
|
||||
ConstEvaluatable(ty::WithOptParam<DefId>, SubstsRef<'tcx>),
|
||||
ConstEvaluatable(ty::WithOptConstParam<DefId>, SubstsRef<'tcx>),
|
||||
|
||||
/// Constants must be equal. The first component is the const that is expected.
|
||||
ConstEquate(&'tcx Const<'tcx>, &'tcx Const<'tcx>),
|
||||
|
@ -1601,40 +1601,42 @@ pub type PlaceholderConst = Placeholder<BoundVar>;
|
|||
#[derive(Copy, Clone, Debug, TypeFoldable, Lift, RustcEncodable, RustcDecodable)]
|
||||
#[derive(PartialEq, Eq, PartialOrd, Ord)]
|
||||
#[derive(Hash, HashStable)]
|
||||
pub struct WithOptParam<T> {
|
||||
pub struct WithOptConstParam<T> {
|
||||
pub did: T,
|
||||
/// The `DefId` of the corresponding generic paramter in case `did` is
|
||||
/// a const argument.
|
||||
///
|
||||
/// Note that even if `did` is a const argument, this may still be `None`.
|
||||
/// All queries taking `WithOptParam` start by calling `tcx.opt_const_param_of(def.did)`
|
||||
/// All queries taking `WithOptConstParam` start by calling `tcx.opt_const_param_of(def.did)`
|
||||
/// to potentially update `param_did` in case it `None`.
|
||||
pub param_did: Option<DefId>,
|
||||
pub const_param_did: Option<DefId>,
|
||||
}
|
||||
|
||||
impl<T> WithOptParam<T> {
|
||||
pub fn dummy(did: T) -> WithOptParam<T> {
|
||||
WithOptParam { did, param_did: None }
|
||||
impl<T> WithOptConstParam<T> {
|
||||
pub fn dummy(did: T) -> WithOptConstParam<T> {
|
||||
WithOptConstParam { did, const_param_did: None }
|
||||
}
|
||||
}
|
||||
|
||||
impl WithOptParam<LocalDefId> {
|
||||
pub fn to_global(self) -> WithOptParam<DefId> {
|
||||
WithOptParam { did: self.did.to_def_id(), param_did: self.param_did }
|
||||
impl WithOptConstParam<LocalDefId> {
|
||||
pub fn to_global(self) -> WithOptConstParam<DefId> {
|
||||
WithOptConstParam { did: self.did.to_def_id(), const_param_did: self.const_param_did }
|
||||
}
|
||||
|
||||
pub fn ty_def_id(self) -> DefId {
|
||||
if let Some(did) = self.param_did { did } else { self.did.to_def_id() }
|
||||
if let Some(did) = self.const_param_did { did } else { self.did.to_def_id() }
|
||||
}
|
||||
}
|
||||
|
||||
impl WithOptParam<DefId> {
|
||||
pub fn as_local(self) -> Option<WithOptParam<LocalDefId>> {
|
||||
self.did.as_local().map(|did| WithOptParam { did, param_did: self.param_did })
|
||||
impl WithOptConstParam<DefId> {
|
||||
pub fn as_local(self) -> Option<WithOptConstParam<LocalDefId>> {
|
||||
self.did
|
||||
.as_local()
|
||||
.map(|did| WithOptConstParam { did, const_param_did: self.const_param_did })
|
||||
}
|
||||
|
||||
pub fn as_const_arg(self) -> Option<(LocalDefId, DefId)> {
|
||||
if let Some(param_did) = self.param_did {
|
||||
if let Some(param_did) = self.const_param_did {
|
||||
if let Some(did) = self.did.as_local() {
|
||||
return Some((did, param_did));
|
||||
}
|
||||
|
@ -1643,7 +1645,7 @@ impl WithOptParam<DefId> {
|
|||
None
|
||||
}
|
||||
|
||||
pub fn expect_local(self) -> WithOptParam<LocalDefId> {
|
||||
pub fn expect_local(self) -> WithOptConstParam<LocalDefId> {
|
||||
self.as_local().unwrap()
|
||||
}
|
||||
|
||||
|
@ -1652,7 +1654,7 @@ impl WithOptParam<DefId> {
|
|||
}
|
||||
|
||||
pub fn ty_def_id(self) -> DefId {
|
||||
self.param_did.unwrap_or(self.did)
|
||||
self.const_param_did.unwrap_or(self.did)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ impl Key for DefId {
|
|||
}
|
||||
}
|
||||
|
||||
impl Key for ty::WithOptParam<LocalDefId> {
|
||||
impl Key for ty::WithOptConstParam<LocalDefId> {
|
||||
type CacheSelector = DefaultCacheSelector;
|
||||
|
||||
fn query_crate(&self) -> CrateNum {
|
||||
|
|
|
@ -2210,12 +2210,12 @@ impl<'tcx> Const<'tcx> {
|
|||
/// Literals and const generic parameters are eagerly converted to a constant, everything else
|
||||
/// becomes `Unevaluated`.
|
||||
pub fn from_anon_const(tcx: TyCtxt<'tcx>, def_id: LocalDefId) -> &'tcx Self {
|
||||
Self::const_arg_from_anon_const(tcx, ty::WithOptParam::dummy(def_id))
|
||||
Self::from_opt_const_arg_anon_const(tcx, ty::WithOptConstParam::dummy(def_id))
|
||||
}
|
||||
|
||||
pub fn const_arg_from_anon_const(
|
||||
pub fn from_opt_const_arg_anon_const(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
) -> &'tcx Self {
|
||||
debug!("Const::from_anon_const(def={:?})", def);
|
||||
|
||||
|
@ -2433,7 +2433,7 @@ pub enum ConstKind<'tcx> {
|
|||
|
||||
/// Used in the HIR by using `Unevaluated` everywhere and later normalizing to one of the other
|
||||
/// variants when the code is monomorphic enough for that.
|
||||
Unevaluated(ty::WithOptParam<DefId>, SubstsRef<'tcx>, Option<Promoted>),
|
||||
Unevaluated(ty::WithOptConstParam<DefId>, SubstsRef<'tcx>, Option<Promoted>),
|
||||
|
||||
/// Used to hold computed value.
|
||||
Value(ConstValue<'tcx>),
|
||||
|
|
|
@ -88,9 +88,9 @@ const DEREF_PROJECTION: &[PlaceElem<'_>; 1] = &[ProjectionElem::Deref];
|
|||
|
||||
pub fn provide(providers: &mut Providers) {
|
||||
*providers = Providers {
|
||||
mir_borrowck: |tcx, did| mir_borrowck(tcx, ty::WithOptParam::dummy(did)),
|
||||
mir_borrowck: |tcx, did| mir_borrowck(tcx, ty::WithOptConstParam::dummy(did)),
|
||||
mir_borrowck_const_arg: |tcx, (did, param_did)| {
|
||||
mir_borrowck(tcx, ty::WithOptParam { did, param_did: Some(param_did) })
|
||||
mir_borrowck(tcx, ty::WithOptConstParam { did, const_param_did: Some(param_did) })
|
||||
},
|
||||
..*providers
|
||||
};
|
||||
|
@ -98,9 +98,9 @@ pub fn provide(providers: &mut Providers) {
|
|||
|
||||
fn mir_borrowck<'tcx>(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
) -> &'tcx BorrowCheckResult<'tcx> {
|
||||
if def.param_did.is_none() {
|
||||
if def.const_param_did.is_none() {
|
||||
if let Some(param_did) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx.mir_borrowck_const_arg((def.did, param_did));
|
||||
}
|
||||
|
@ -123,7 +123,7 @@ fn do_mir_borrowck<'a, 'tcx>(
|
|||
infcx: &InferCtxt<'a, 'tcx>,
|
||||
input_body: &Body<'tcx>,
|
||||
input_promoted: &IndexVec<Promoted, Body<'tcx>>,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
) -> BorrowCheckResult<'tcx> {
|
||||
debug!("do_mir_borrowck(def = {:?})", def);
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ crate struct NllOutput<'tcx> {
|
|||
/// `compute_regions`.
|
||||
pub(in crate::borrow_check) fn replace_regions_in_mir<'cx, 'tcx>(
|
||||
infcx: &InferCtxt<'cx, 'tcx>,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
param_env: ty::ParamEnv<'tcx>,
|
||||
body: &mut Body<'tcx>,
|
||||
promoted: &mut IndexVec<Promoted, Body<'tcx>>,
|
||||
|
|
|
@ -227,7 +227,7 @@ impl<'tcx> UniversalRegions<'tcx> {
|
|||
/// known between those regions.
|
||||
pub fn new(
|
||||
infcx: &InferCtxt<'_, 'tcx>,
|
||||
mir_def: ty::WithOptParam<LocalDefId>,
|
||||
mir_def: ty::WithOptConstParam<LocalDefId>,
|
||||
param_env: ty::ParamEnv<'tcx>,
|
||||
) -> Self {
|
||||
let tcx = infcx.tcx;
|
||||
|
@ -388,7 +388,7 @@ impl<'tcx> UniversalRegions<'tcx> {
|
|||
|
||||
struct UniversalRegionsBuilder<'cx, 'tcx> {
|
||||
infcx: &'cx InferCtxt<'cx, 'tcx>,
|
||||
mir_def: ty::WithOptParam<LocalDefId>,
|
||||
mir_def: ty::WithOptConstParam<LocalDefId>,
|
||||
mir_hir_id: HirId,
|
||||
param_env: ty::ParamEnv<'tcx>,
|
||||
}
|
||||
|
|
|
@ -491,10 +491,13 @@ impl<'a, 'tcx> UnsafetyChecker<'a, 'tcx> {
|
|||
pub(crate) fn provide(providers: &mut Providers) {
|
||||
*providers = Providers {
|
||||
unsafety_check_result: |tcx, def_id| {
|
||||
unsafety_check_result(tcx, ty::WithOptParam::dummy(def_id))
|
||||
unsafety_check_result(tcx, ty::WithOptConstParam::dummy(def_id))
|
||||
},
|
||||
unsafety_check_result_const_arg: |tcx, (did, param_did)| {
|
||||
unsafety_check_result(tcx, ty::WithOptParam { did, param_did: Some(param_did) })
|
||||
unsafety_check_result(
|
||||
tcx,
|
||||
ty::WithOptConstParam { did, const_param_did: Some(param_did) },
|
||||
)
|
||||
},
|
||||
unsafe_derive_on_repr_packed,
|
||||
..*providers
|
||||
|
@ -546,9 +549,9 @@ fn check_unused_unsafe(
|
|||
|
||||
fn unsafety_check_result<'tcx>(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
) -> &'tcx UnsafetyCheckResult {
|
||||
if def.param_did.is_none() {
|
||||
if def.const_param_did.is_none() {
|
||||
if let Some(param_did) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx.unsafety_check_result_const_arg((def.did, param_did));
|
||||
}
|
||||
|
|
|
@ -49,10 +49,10 @@ pub(crate) fn provide(providers: &mut Providers) {
|
|||
mir_keys,
|
||||
mir_const,
|
||||
mir_const_qualif: |tcx, did| {
|
||||
mir_const_qualif(tcx, ty::WithOptParam::dummy(did.expect_local()))
|
||||
mir_const_qualif(tcx, ty::WithOptConstParam::dummy(did.expect_local()))
|
||||
},
|
||||
mir_const_qualif_const_arg: |tcx, (did, param_did)| {
|
||||
mir_const_qualif(tcx, ty::WithOptParam { did, param_did: Some(param_did) })
|
||||
mir_const_qualif(tcx, ty::WithOptConstParam { did, const_param_did: Some(param_did) })
|
||||
},
|
||||
mir_validated,
|
||||
mir_drops_elaborated_and_const_checked,
|
||||
|
@ -60,10 +60,10 @@ pub(crate) fn provide(providers: &mut Providers) {
|
|||
optimized_mir_of_const_arg,
|
||||
is_mir_available,
|
||||
promoted_mir: |tcx, def_id| {
|
||||
promoted_mir(tcx, ty::WithOptParam::dummy(def_id.expect_local()))
|
||||
promoted_mir(tcx, ty::WithOptConstParam::dummy(def_id.expect_local()))
|
||||
},
|
||||
promoted_mir_of_const_arg: |tcx, (did, param_did)| {
|
||||
promoted_mir(tcx, ty::WithOptParam { did, param_did: Some(param_did) })
|
||||
promoted_mir(tcx, ty::WithOptConstParam { did, const_param_did: Some(param_did) })
|
||||
},
|
||||
..*providers
|
||||
};
|
||||
|
@ -127,10 +127,13 @@ pub struct MirSource<'tcx> {
|
|||
|
||||
impl<'tcx> MirSource<'tcx> {
|
||||
pub fn item(def_id: DefId) -> Self {
|
||||
MirSource { instance: InstanceDef::Item(ty::WithOptParam::dummy(def_id)), promoted: None }
|
||||
MirSource {
|
||||
instance: InstanceDef::Item(ty::WithOptConstParam::dummy(def_id)),
|
||||
promoted: None,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn with_opt_param(self) -> ty::WithOptParam<DefId> {
|
||||
pub fn with_opt_param(self) -> ty::WithOptConstParam<DefId> {
|
||||
self.instance.with_opt_param()
|
||||
}
|
||||
|
||||
|
@ -217,8 +220,8 @@ pub fn run_passes(
|
|||
}
|
||||
}
|
||||
|
||||
fn mir_const_qualif(tcx: TyCtxt<'_>, def: ty::WithOptParam<LocalDefId>) -> ConstQualifs {
|
||||
if def.param_did.is_none() {
|
||||
fn mir_const_qualif(tcx: TyCtxt<'_>, def: ty::WithOptConstParam<LocalDefId>) -> ConstQualifs {
|
||||
if def.const_param_did.is_none() {
|
||||
if let Some(param_did) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx.mir_const_qualif_const_arg((def.did, param_did));
|
||||
}
|
||||
|
@ -261,16 +264,16 @@ fn mir_const_qualif(tcx: TyCtxt<'_>, def: ty::WithOptParam<LocalDefId>) -> Const
|
|||
/// Make MIR ready for const evaluation. This is run on all MIR, not just on consts!
|
||||
fn mir_const<'tcx>(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
) -> &'tcx Steal<Body<'tcx>> {
|
||||
if def.param_did.is_none() {
|
||||
if let param_did @ Some(_) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx.mir_const(ty::WithOptParam { param_did, ..def });
|
||||
if def.const_param_did.is_none() {
|
||||
if let const_param_did @ Some(_) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx.mir_const(ty::WithOptConstParam { const_param_did, ..def });
|
||||
}
|
||||
}
|
||||
|
||||
// Unsafety check uses the raw mir, so make sure it is run.
|
||||
if let Some(param_did) = def.param_did {
|
||||
if let Some(param_did) = def.const_param_did {
|
||||
tcx.ensure().unsafety_check_result_const_arg((def.did, param_did));
|
||||
} else {
|
||||
tcx.ensure().unsafety_check_result(def.did);
|
||||
|
@ -307,11 +310,11 @@ fn mir_const<'tcx>(
|
|||
|
||||
fn mir_validated(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
) -> (&'tcx Steal<Body<'tcx>>, &'tcx Steal<IndexVec<Promoted, Body<'tcx>>>) {
|
||||
if def.param_did.is_none() {
|
||||
if let param_did @ Some(_) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx.mir_validated(ty::WithOptParam { param_did, ..def });
|
||||
if def.const_param_did.is_none() {
|
||||
if let const_param_did @ Some(_) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx.mir_validated(ty::WithOptConstParam { const_param_did, ..def });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -352,18 +355,20 @@ fn mir_validated(
|
|||
|
||||
fn mir_drops_elaborated_and_const_checked<'tcx>(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
) -> &'tcx Steal<Body<'tcx>> {
|
||||
if def.param_did.is_none() {
|
||||
if let param_did @ Some(_) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx
|
||||
.mir_drops_elaborated_and_const_checked(ty::WithOptParam { param_did, ..def });
|
||||
if def.const_param_did.is_none() {
|
||||
if let const_param_did @ Some(_) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx.mir_drops_elaborated_and_const_checked(ty::WithOptConstParam {
|
||||
const_param_did,
|
||||
..def
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// (Mir-)Borrowck uses `mir_validated`, so we have to force it to
|
||||
// execute before we can steal.
|
||||
if let Some(param_did) = def.param_did {
|
||||
if let Some(param_did) = def.const_param_did {
|
||||
tcx.ensure().mir_borrowck_const_arg((def.did, param_did));
|
||||
} else {
|
||||
tcx.ensure().mir_borrowck(def.did);
|
||||
|
@ -409,7 +414,7 @@ fn run_post_borrowck_cleanup_passes<'tcx>(
|
|||
run_passes(
|
||||
tcx,
|
||||
body,
|
||||
InstanceDef::Item(ty::WithOptParam::dummy(def_id.to_def_id())),
|
||||
InstanceDef::Item(ty::WithOptConstParam::dummy(def_id.to_def_id())),
|
||||
promoted,
|
||||
MirPhase::DropElab,
|
||||
&[post_borrowck_cleanup],
|
||||
|
@ -473,7 +478,7 @@ fn run_optimization_passes<'tcx>(
|
|||
run_passes(
|
||||
tcx,
|
||||
body,
|
||||
InstanceDef::Item(ty::WithOptParam::dummy(def_id.to_def_id())),
|
||||
InstanceDef::Item(ty::WithOptConstParam::dummy(def_id.to_def_id())),
|
||||
promoted,
|
||||
MirPhase::Optimized,
|
||||
&[
|
||||
|
@ -488,7 +493,7 @@ fn optimized_mir<'tcx>(tcx: TyCtxt<'tcx>, did: DefId) -> &'tcx Body<'tcx> {
|
|||
if let Some(param_did) = tcx.opt_const_param_of(did) {
|
||||
tcx.optimized_mir_of_const_arg((did, param_did))
|
||||
} else {
|
||||
tcx.arena.alloc(inner_optimized_mir(tcx, ty::WithOptParam::dummy(did)))
|
||||
tcx.arena.alloc(inner_optimized_mir(tcx, ty::WithOptConstParam::dummy(did)))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -496,10 +501,13 @@ fn optimized_mir_of_const_arg<'tcx>(
|
|||
tcx: TyCtxt<'tcx>,
|
||||
(did, param_did): (LocalDefId, DefId),
|
||||
) -> &'tcx Body<'tcx> {
|
||||
tcx.arena.alloc(inner_optimized_mir(tcx, ty::WithOptParam { did, param_did: Some(param_did) }))
|
||||
tcx.arena.alloc(inner_optimized_mir(
|
||||
tcx,
|
||||
ty::WithOptConstParam { did, const_param_did: Some(param_did) },
|
||||
))
|
||||
}
|
||||
|
||||
fn inner_optimized_mir(tcx: TyCtxt<'_>, def: ty::WithOptParam<LocalDefId>) -> Body<'_> {
|
||||
fn inner_optimized_mir(tcx: TyCtxt<'_>, def: ty::WithOptConstParam<LocalDefId>) -> Body<'_> {
|
||||
if tcx.is_constructor(def.did.to_def_id()) {
|
||||
// There's no reason to run all of the MIR passes on constructors when
|
||||
// we can just output the MIR we want directly. This also saves const
|
||||
|
@ -518,9 +526,9 @@ fn inner_optimized_mir(tcx: TyCtxt<'_>, def: ty::WithOptParam<LocalDefId>) -> Bo
|
|||
|
||||
fn promoted_mir<'tcx>(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
) -> &'tcx IndexVec<Promoted, Body<'tcx>> {
|
||||
if def.param_did.is_none() {
|
||||
if def.const_param_did.is_none() {
|
||||
if let Some(param_did) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx.promoted_mir_of_const_arg((def.did, param_did));
|
||||
}
|
||||
|
@ -530,7 +538,7 @@ fn promoted_mir<'tcx>(
|
|||
return tcx.arena.alloc(IndexVec::new());
|
||||
}
|
||||
|
||||
if let Some(param_did) = def.param_did {
|
||||
if let Some(param_did) = def.const_param_did {
|
||||
tcx.ensure().mir_borrowck_const_arg((def.did, param_did));
|
||||
} else {
|
||||
tcx.ensure().mir_borrowck(def.did);
|
||||
|
|
|
@ -936,7 +936,7 @@ impl<'a, 'tcx> Promoter<'a, 'tcx> {
|
|||
|
||||
fn promote_candidate(
|
||||
mut self,
|
||||
def: ty::WithOptParam<DefId>,
|
||||
def: ty::WithOptConstParam<DefId>,
|
||||
candidate: Candidate,
|
||||
next_promoted_id: usize,
|
||||
) -> Option<Body<'tcx>> {
|
||||
|
@ -1099,7 +1099,7 @@ impl<'a, 'tcx> MutVisitor<'tcx> for Promoter<'a, 'tcx> {
|
|||
}
|
||||
|
||||
pub fn promote_candidates<'tcx>(
|
||||
def: ty::WithOptParam<DefId>,
|
||||
def: ty::WithOptConstParam<DefId>,
|
||||
body: &mut Body<'tcx>,
|
||||
tcx: TyCtxt<'tcx>,
|
||||
mut temps: IndexVec<Local, TempState>,
|
||||
|
|
|
@ -249,7 +249,7 @@ pub fn write_mir_pretty<'tcx>(
|
|||
for (i, body) in tcx.promoted_mir(def_id).iter_enumerated() {
|
||||
writeln!(w)?;
|
||||
let src = MirSource {
|
||||
instance: ty::InstanceDef::Item(ty::WithOptParam::dummy(def_id)),
|
||||
instance: ty::InstanceDef::Item(ty::WithOptConstParam::dummy(def_id)),
|
||||
promoted: Some(i),
|
||||
};
|
||||
write_mir_fn(tcx, src, body, &mut |_, _| Ok(()), w)?;
|
||||
|
|
|
@ -21,10 +21,10 @@ use rustc_target::spec::PanicStrategy;
|
|||
|
||||
use super::lints;
|
||||
|
||||
crate fn mir_built<'tcx>(tcx: TyCtxt<'tcx>, def: ty::WithOptParam<LocalDefId>) -> &'tcx ty::steal::Steal<Body<'tcx>> {
|
||||
if def.param_did.is_none() {
|
||||
if let param_did @ Some(_) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx.mir_built(ty::WithOptParam { param_did, ..def });
|
||||
crate fn mir_built<'tcx>(tcx: TyCtxt<'tcx>, def: ty::WithOptConstParam<LocalDefId>) -> &'tcx ty::steal::Steal<Body<'tcx>> {
|
||||
if def.const_param_did.is_none() {
|
||||
if let const_param_did @ Some(_) = tcx.opt_const_param_of(def.did) {
|
||||
return tcx.mir_built(ty::WithOptConstParam { const_param_did, ..def });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ crate fn mir_built<'tcx>(tcx: TyCtxt<'tcx>, def: ty::WithOptParam<LocalDefId>) -
|
|||
}
|
||||
|
||||
/// Construct the MIR for a given `DefId`.
|
||||
fn mir_build(tcx: TyCtxt<'_>, def: ty::WithOptParam<LocalDefId>) -> Body<'_> {
|
||||
fn mir_build(tcx: TyCtxt<'_>, def: ty::WithOptConstParam<LocalDefId>) -> Body<'_> {
|
||||
let id = tcx.hir().as_local_hir_id(def.did);
|
||||
|
||||
// Figure out what primary body this item has.
|
||||
|
|
|
@ -601,7 +601,7 @@ fn make_mirror_unadjusted<'a, 'tcx>(
|
|||
let substs = InternalSubsts::identity_for_item(cx.tcx(), did);
|
||||
let lhs = mk_const(cx.tcx().mk_const(ty::Const {
|
||||
val: ty::ConstKind::Unevaluated(
|
||||
ty::WithOptParam::dummy(did),
|
||||
ty::WithOptConstParam::dummy(did),
|
||||
substs,
|
||||
None,
|
||||
),
|
||||
|
@ -800,7 +800,11 @@ fn convert_path_expr<'a, 'tcx>(
|
|||
debug!("convert_path_expr: (const) user_ty={:?}", user_ty);
|
||||
ExprKind::Literal {
|
||||
literal: cx.tcx.mk_const(ty::Const {
|
||||
val: ty::ConstKind::Unevaluated(ty::WithOptParam::dummy(def_id), substs, None),
|
||||
val: ty::ConstKind::Unevaluated(
|
||||
ty::WithOptConstParam::dummy(def_id),
|
||||
substs,
|
||||
None,
|
||||
),
|
||||
ty: cx.tables().node_type(expr.hir_id),
|
||||
}),
|
||||
user_ty,
|
||||
|
|
|
@ -52,7 +52,7 @@ crate struct Cx<'a, 'tcx> {
|
|||
impl<'a, 'tcx> Cx<'a, 'tcx> {
|
||||
crate fn new(
|
||||
infcx: &'a InferCtxt<'a, 'tcx>,
|
||||
def: ty::WithOptParam<LocalDefId>,
|
||||
def: ty::WithOptConstParam<LocalDefId>,
|
||||
src_id: hir::HirId,
|
||||
) -> Cx<'a, 'tcx> {
|
||||
let tcx = infcx.tcx;
|
||||
|
|
|
@ -21,24 +21,26 @@ fn resolve_instance<'tcx>(
|
|||
}
|
||||
}
|
||||
|
||||
inner_resolve_instance(tcx, param_env.and((ty::WithOptParam::dummy(did), substs)))
|
||||
inner_resolve_instance(tcx, param_env.and((ty::WithOptConstParam::dummy(did), substs)))
|
||||
}
|
||||
|
||||
fn resolve_instance_of_const_arg<'tcx>(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
key: ty::ParamEnvAnd<'tcx, (LocalDefId, DefId, SubstsRef<'tcx>)>,
|
||||
) -> Result<Option<Instance<'tcx>>, ErrorReported> {
|
||||
let (param_env, (did, param_did, substs)) = key.into_parts();
|
||||
let (param_env, (did, const_param_did, substs)) = key.into_parts();
|
||||
inner_resolve_instance(
|
||||
tcx,
|
||||
param_env
|
||||
.and((ty::WithOptParam { did: did.to_def_id(), param_did: Some(param_did) }, substs)),
|
||||
param_env.and((
|
||||
ty::WithOptConstParam { did: did.to_def_id(), const_param_did: Some(const_param_did) },
|
||||
substs,
|
||||
)),
|
||||
)
|
||||
}
|
||||
|
||||
fn inner_resolve_instance<'tcx>(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
key: ty::ParamEnvAnd<'tcx, (ty::WithOptParam<DefId>, SubstsRef<'tcx>)>,
|
||||
key: ty::ParamEnvAnd<'tcx, (ty::WithOptConstParam<DefId>, SubstsRef<'tcx>)>,
|
||||
) -> Result<Option<Instance<'tcx>>, ErrorReported> {
|
||||
let (param_env, (def, substs)) = key.into_parts();
|
||||
|
||||
|
@ -208,7 +210,9 @@ fn resolve_associated_item<'tcx>(
|
|||
Some(ty::Instance::new(leaf_def.item.def_id, substs))
|
||||
}
|
||||
traits::ImplSourceGenerator(generator_data) => Some(Instance {
|
||||
def: ty::InstanceDef::Item(ty::WithOptParam::dummy(generator_data.generator_def_id)),
|
||||
def: ty::InstanceDef::Item(ty::WithOptConstParam::dummy(
|
||||
generator_data.generator_def_id,
|
||||
)),
|
||||
substs: generator_data.substs,
|
||||
}),
|
||||
traits::ImplSourceClosure(closure_data) => {
|
||||
|
|
|
@ -886,11 +886,11 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
|||
}
|
||||
}
|
||||
(GenericParamDefKind::Const, GenericArg::Const(ct)) => {
|
||||
ty::Const::const_arg_from_anon_const(
|
||||
ty::Const::from_opt_const_arg_anon_const(
|
||||
tcx,
|
||||
ty::WithOptParam {
|
||||
ty::WithOptConstParam {
|
||||
did: tcx.hir().local_def_id(ct.value.hir_id),
|
||||
param_did: Some(param.def_id),
|
||||
const_param_did: Some(param.def_id),
|
||||
},
|
||||
)
|
||||
.into()
|
||||
|
|
|
@ -3560,11 +3560,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
ast_c: &hir::AnonConst,
|
||||
param_def_id: DefId,
|
||||
) -> &'tcx ty::Const<'tcx> {
|
||||
let const_def = ty::WithOptParam {
|
||||
let const_def = ty::WithOptConstParam {
|
||||
did: self.tcx.hir().local_def_id(ast_c.hir_id),
|
||||
param_did: Some(param_def_id),
|
||||
const_param_did: Some(param_def_id),
|
||||
};
|
||||
let c = ty::Const::const_arg_from_anon_const(self.tcx, const_def);
|
||||
let c = ty::Const::from_opt_const_arg_anon_const(self.tcx, const_def);
|
||||
self.register_wf_obligation(
|
||||
c.into(),
|
||||
self.tcx.hir().span(ast_c.hir_id),
|
||||
|
|
|
@ -424,7 +424,7 @@ fn check_type_defn<'tcx, F>(
|
|||
cause,
|
||||
fcx.param_env,
|
||||
ty::PredicateKind::ConstEvaluatable(
|
||||
ty::WithOptParam::dummy(discr_def_id.to_def_id()),
|
||||
ty::WithOptConstParam::dummy(discr_def_id.to_def_id()),
|
||||
discr_substs,
|
||||
)
|
||||
.to_predicate(fcx.tcx),
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
- // + ty: &i32
|
||||
- // + val: Value(Scalar(alloc0))
|
||||
+ // + ty: &[&i32; 1]
|
||||
+ // + val: Unevaluated(WithOptParam { did: DefId(0:6 ~ const_promotion_extern_static[317d]::BAR[0]), param_did: None }, [], Some(promoted[0]))
|
||||
+ // + val: Unevaluated(WithOptConstParam { did: DefId(0:6 ~ const_promotion_extern_static[317d]::BAR[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
- // + span: $DIR/const-promotion-extern-static.rs:9:33: 9:34
|
||||
- // + literal: Const { ty: &i32, val: Value(Scalar(alloc0)) }
|
||||
|
@ -30,7 +30,7 @@
|
|||
- _3 = [move _4]; // scope 0 at $DIR/const-promotion-extern-static.rs:9:31: 9:35
|
||||
- _2 = &_3; // scope 0 at $DIR/const-promotion-extern-static.rs:9:31: 9:35
|
||||
+ // + span: $DIR/const-promotion-extern-static.rs:9:31: 9:35
|
||||
+ // + literal: Const { ty: &[&i32; 1], val: Unevaluated(WithOptParam { did: DefId(0:6 ~ const_promotion_extern_static[317d]::BAR[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
+ // + literal: Const { ty: &[&i32; 1], val: Unevaluated(WithOptConstParam { did: DefId(0:6 ~ const_promotion_extern_static[317d]::BAR[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
+ _2 = &(*_6); // scope 0 at $DIR/const-promotion-extern-static.rs:9:31: 9:35
|
||||
_1 = move _2 as &[&i32] (Pointer(Unsize)); // scope 0 at $DIR/const-promotion-extern-static.rs:9:31: 9:35
|
||||
_0 = const core::slice::<impl [&i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1]; // scope 0 at $DIR/const-promotion-extern-static.rs:9:31: 9:44
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
- // + ty: &i32
|
||||
- // + val: Value(Scalar(alloc2))
|
||||
+ // + ty: &[&i32; 1]
|
||||
+ // + val: Unevaluated(WithOptParam { did: DefId(0:7 ~ const_promotion_extern_static[317d]::FOO[0]), param_did: None }, [], Some(promoted[0]))
|
||||
+ // + val: Unevaluated(WithOptConstParam { did: DefId(0:7 ~ const_promotion_extern_static[317d]::FOO[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
- // + span: $DIR/const-promotion-extern-static.rs:13:42: 13:43
|
||||
- // + literal: Const { ty: &i32, val: Value(Scalar(alloc2)) }
|
||||
|
@ -32,7 +32,7 @@
|
|||
- _3 = [move _4]; // scope 0 at $DIR/const-promotion-extern-static.rs:13:31: 13:46
|
||||
- _2 = &_3; // scope 0 at $DIR/const-promotion-extern-static.rs:13:31: 13:46
|
||||
+ // + span: $DIR/const-promotion-extern-static.rs:13:31: 13:46
|
||||
+ // + literal: Const { ty: &[&i32; 1], val: Unevaluated(WithOptParam { did: DefId(0:7 ~ const_promotion_extern_static[317d]::FOO[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
+ // + literal: Const { ty: &[&i32; 1], val: Unevaluated(WithOptConstParam { did: DefId(0:7 ~ const_promotion_extern_static[317d]::FOO[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
+ _2 = &(*_6); // scope 0 at $DIR/const-promotion-extern-static.rs:13:31: 13:46
|
||||
_1 = move _2 as &[&i32] (Pointer(Unsize)); // scope 0 at $DIR/const-promotion-extern-static.rs:13:31: 13:46
|
||||
_0 = const core::slice::<impl [&i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1]; // scope 0 at $DIR/const-promotion-extern-static.rs:13:31: 13:55
|
||||
|
|
|
@ -28,10 +28,10 @@
|
|||
_9 = const main::promoted[0]; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:5:25: 5:35
|
||||
// ty::Const
|
||||
// + ty: &[i32; 3]
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ bad_op_unsafe_oob_for_slices[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ bad_op_unsafe_oob_for_slices[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $DIR/bad_op_unsafe_oob_for_slices.rs:5:25: 5:35
|
||||
// + literal: Const { ty: &[i32; 3], val: Unevaluated(WithOptParam { did: DefId(0:3 ~ bad_op_unsafe_oob_for_slices[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &[i32; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ bad_op_unsafe_oob_for_slices[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
_3 = _9; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:5:25: 5:35
|
||||
_2 = &raw const (*_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:5:25: 5:35
|
||||
_1 = move _2 as *const [i32] (Pointer(Unsize)); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:5:25: 5:35
|
||||
|
|
|
@ -28,10 +28,10 @@
|
|||
_9 = const main::promoted[0]; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:5:25: 5:35
|
||||
// ty::Const
|
||||
// + ty: &[i32; 3]
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ bad_op_unsafe_oob_for_slices[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ bad_op_unsafe_oob_for_slices[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $DIR/bad_op_unsafe_oob_for_slices.rs:5:25: 5:35
|
||||
// + literal: Const { ty: &[i32; 3], val: Unevaluated(WithOptParam { did: DefId(0:3 ~ bad_op_unsafe_oob_for_slices[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &[i32; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ bad_op_unsafe_oob_for_slices[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
_3 = _9; // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:5:25: 5:35
|
||||
_2 = &raw const (*_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:5:25: 5:35
|
||||
_1 = move _2 as *const [i32] (Pointer(Unsize)); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:5:25: 5:35
|
||||
|
|
|
@ -19,10 +19,10 @@
|
|||
_3 = const main::FOO; // scope 0 at $DIR/const_prop_fails_gracefully.rs:7:13: 7:16
|
||||
// ty::Const
|
||||
// + ty: &i32
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:5 ~ const_prop_fails_gracefully[317d]::main[0]::FOO[0]), param_did: None }, [], None)
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:5 ~ const_prop_fails_gracefully[317d]::main[0]::FOO[0]), const_param_did: None }, [], None)
|
||||
// mir::Constant
|
||||
// + span: $DIR/const_prop_fails_gracefully.rs:7:13: 7:16
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptParam { did: DefId(0:5 ~ const_prop_fails_gracefully[317d]::main[0]::FOO[0]), param_did: None }, [], None) }
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:5 ~ const_prop_fails_gracefully[317d]::main[0]::FOO[0]), const_param_did: None }, [], None) }
|
||||
_2 = &raw const (*_3); // scope 0 at $DIR/const_prop_fails_gracefully.rs:7:13: 7:16
|
||||
_1 = move _2 as usize (Misc); // scope 0 at $DIR/const_prop_fails_gracefully.rs:7:13: 7:39
|
||||
StorageDead(_2); // scope 0 at $DIR/const_prop_fails_gracefully.rs:7:38: 7:39
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
+ _1 = const false; // scope 0 at $DIR/control-flow-simplification.rs:12:8: 12:21
|
||||
// ty::Const
|
||||
// + ty: bool
|
||||
- // + val: Unevaluated(WithOptParam { did: DefId(0:4 ~ control_flow_simplification[317d]::NeedsDrop[0]::NEEDS[0]), param_did: None }, [bool], None)
|
||||
- // + val: Unevaluated(WithOptConstParam { did: DefId(0:4 ~ control_flow_simplification[317d]::NeedsDrop[0]::NEEDS[0]), const_param_did: None }, [bool], None)
|
||||
+ // + val: Value(Scalar(0x00))
|
||||
// mir::Constant
|
||||
// + span: $DIR/control-flow-simplification.rs:12:8: 12:21
|
||||
- // + literal: Const { ty: bool, val: Unevaluated(WithOptParam { did: DefId(0:4 ~ control_flow_simplification[317d]::NeedsDrop[0]::NEEDS[0]), param_did: None }, [bool], None) }
|
||||
- // + literal: Const { ty: bool, val: Unevaluated(WithOptConstParam { did: DefId(0:4 ~ control_flow_simplification[317d]::NeedsDrop[0]::NEEDS[0]), const_param_did: None }, [bool], None) }
|
||||
- switchInt(_1) -> [false: bb1, otherwise: bb2]; // scope 0 at $DIR/control-flow-simplification.rs:12:5: 14:6
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ switchInt(const false) -> [false: bb1, otherwise: bb2]; // scope 0 at $DIR/control-flow-simplification.rs:12:5: 14:6
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
_4 = const main::promoted[0]; // scope 0 at $DIR/ref_deref.rs:5:6: 5:10
|
||||
// ty::Const
|
||||
// + ty: &i32
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ ref_deref[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ ref_deref[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $DIR/ref_deref.rs:5:6: 5:10
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptParam { did: DefId(0:3 ~ ref_deref[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ ref_deref[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
_2 = _4; // scope 0 at $DIR/ref_deref.rs:5:6: 5:10
|
||||
- _1 = (*_2); // scope 0 at $DIR/ref_deref.rs:5:5: 5:10
|
||||
+ _1 = const 4_i32; // scope 0 at $DIR/ref_deref.rs:5:5: 5:10
|
||||
|
|
|
@ -18,13 +18,13 @@
|
|||
- // + ty: i32
|
||||
- // + val: Value(Scalar(0x00000004))
|
||||
+ // + ty: &i32
|
||||
+ // + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ ref_deref[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
+ // + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ ref_deref[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
- // + span: $DIR/ref_deref.rs:5:8: 5:9
|
||||
- // + literal: Const { ty: i32, val: Value(Scalar(0x00000004)) }
|
||||
- _2 = &_3; // scope 0 at $DIR/ref_deref.rs:5:6: 5:10
|
||||
+ // + span: $DIR/ref_deref.rs:5:6: 5:10
|
||||
+ // + literal: Const { ty: &i32, val: Unevaluated(WithOptParam { did: DefId(0:3 ~ ref_deref[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
+ // + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ ref_deref[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
+ _2 = &(*_4); // scope 0 at $DIR/ref_deref.rs:5:6: 5:10
|
||||
_1 = (*_2); // scope 0 at $DIR/ref_deref.rs:5:5: 5:10
|
||||
- StorageDead(_3); // scope 0 at $DIR/ref_deref.rs:5:10: 5:11
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
_4 = const main::promoted[0]; // scope 0 at $DIR/ref_deref_project.rs:5:6: 5:17
|
||||
// ty::Const
|
||||
// + ty: &(i32, i32)
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ ref_deref_project[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ ref_deref_project[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $DIR/ref_deref_project.rs:5:6: 5:17
|
||||
// + literal: Const { ty: &(i32, i32), val: Unevaluated(WithOptParam { did: DefId(0:3 ~ ref_deref_project[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &(i32, i32), val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ ref_deref_project[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
_2 = &((*_4).1: i32); // scope 0 at $DIR/ref_deref_project.rs:5:6: 5:17
|
||||
_1 = (*_2); // scope 0 at $DIR/ref_deref_project.rs:5:5: 5:17
|
||||
StorageDead(_2); // scope 0 at $DIR/ref_deref_project.rs:5:17: 5:18
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
- // + ty: i32
|
||||
- // + val: Value(Scalar(0x00000004))
|
||||
+ // + ty: &(i32, i32)
|
||||
+ // + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ ref_deref_project[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
+ // + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ ref_deref_project[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
- // + span: $DIR/ref_deref_project.rs:5:9: 5:10
|
||||
- // + literal: Const { ty: i32, val: Value(Scalar(0x00000004)) }
|
||||
|
@ -30,7 +30,7 @@
|
|||
- // + literal: Const { ty: i32, val: Value(Scalar(0x00000005)) }
|
||||
- _2 = &(_3.1: i32); // scope 0 at $DIR/ref_deref_project.rs:5:6: 5:17
|
||||
+ // + span: $DIR/ref_deref_project.rs:5:6: 5:17
|
||||
+ // + literal: Const { ty: &(i32, i32), val: Unevaluated(WithOptParam { did: DefId(0:3 ~ ref_deref_project[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
+ // + literal: Const { ty: &(i32, i32), val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ ref_deref_project[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
+ _2 = &((*_4).1: i32); // scope 0 at $DIR/ref_deref_project.rs:5:6: 5:17
|
||||
_1 = (*_2); // scope 0 at $DIR/ref_deref_project.rs:5:5: 5:17
|
||||
- StorageDead(_3); // scope 0 at $DIR/ref_deref_project.rs:5:17: 5:18
|
||||
|
|
|
@ -21,10 +21,10 @@
|
|||
_9 = const main::promoted[0]; // scope 0 at $DIR/slice_len.rs:5:6: 5:19
|
||||
// ty::Const
|
||||
// + ty: &[u32; 3]
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ slice_len[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ slice_len[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $DIR/slice_len.rs:5:6: 5:19
|
||||
// + literal: Const { ty: &[u32; 3], val: Unevaluated(WithOptParam { did: DefId(0:3 ~ slice_len[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &[u32; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ slice_len[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
_4 = _9; // scope 0 at $DIR/slice_len.rs:5:6: 5:19
|
||||
_3 = _4; // scope 0 at $DIR/slice_len.rs:5:6: 5:19
|
||||
_2 = move _3 as &[u32] (Pointer(Unsize)); // scope 0 at $DIR/slice_len.rs:5:6: 5:19
|
||||
|
|
|
@ -21,10 +21,10 @@
|
|||
_9 = const main::promoted[0]; // scope 0 at $DIR/slice_len.rs:5:6: 5:19
|
||||
// ty::Const
|
||||
// + ty: &[u32; 3]
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ slice_len[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ slice_len[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $DIR/slice_len.rs:5:6: 5:19
|
||||
// + literal: Const { ty: &[u32; 3], val: Unevaluated(WithOptParam { did: DefId(0:3 ~ slice_len[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &[u32; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ slice_len[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
_4 = _9; // scope 0 at $DIR/slice_len.rs:5:6: 5:19
|
||||
_3 = _4; // scope 0 at $DIR/slice_len.rs:5:6: 5:19
|
||||
_2 = move _3 as &[u32] (Pointer(Unsize)); // scope 0 at $DIR/slice_len.rs:5:6: 5:19
|
||||
|
|
|
@ -38,10 +38,10 @@ fn bar() -> bool {
|
|||
_10 = const bar::promoted[1]; // scope 1 at $DIR/inline-retag.rs:12:7: 12:9
|
||||
// ty::Const
|
||||
// + ty: &i32
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:4 ~ inline_retag[317d]::bar[0]), param_did: None }, [], Some(promoted[1]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:4 ~ inline_retag[317d]::bar[0]), const_param_did: None }, [], Some(promoted[1]))
|
||||
// mir::Constant
|
||||
// + span: $DIR/inline-retag.rs:12:7: 12:9
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptParam { did: DefId(0:4 ~ inline_retag[317d]::bar[0]), param_did: None }, [], Some(promoted[1])) }
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:4 ~ inline_retag[317d]::bar[0]), const_param_did: None }, [], Some(promoted[1])) }
|
||||
Retag(_10); // scope 1 at $DIR/inline-retag.rs:12:7: 12:9
|
||||
_4 = &(*_10); // scope 1 at $DIR/inline-retag.rs:12:7: 12:9
|
||||
Retag(_4); // scope 1 at $DIR/inline-retag.rs:12:7: 12:9
|
||||
|
@ -52,10 +52,10 @@ fn bar() -> bool {
|
|||
_9 = const bar::promoted[0]; // scope 1 at $DIR/inline-retag.rs:12:11: 12:14
|
||||
// ty::Const
|
||||
// + ty: &i32
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:4 ~ inline_retag[317d]::bar[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:4 ~ inline_retag[317d]::bar[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $DIR/inline-retag.rs:12:11: 12:14
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptParam { did: DefId(0:4 ~ inline_retag[317d]::bar[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:4 ~ inline_retag[317d]::bar[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
Retag(_9); // scope 1 at $DIR/inline-retag.rs:12:11: 12:14
|
||||
_7 = &(*_9); // scope 1 at $DIR/inline-retag.rs:12:11: 12:14
|
||||
Retag(_7); // scope 1 at $DIR/inline-retag.rs:12:11: 12:14
|
||||
|
|
|
@ -96,10 +96,10 @@
|
|||
(_5.1: &i32) = const main::promoted[1]; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// ty::Const
|
||||
// + ty: &i32
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[1]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[1]))
|
||||
// mir::Constant
|
||||
// + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[1])) }
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[1])) }
|
||||
StorageDead(_6); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
StorageLive(_7); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
_7 = (_5.0: &i32); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
|
@ -140,10 +140,10 @@
|
|||
_15 = const main::promoted[0] as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// ty::Const
|
||||
// + ty: &[&str; 3]
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
StorageLive(_18); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL
|
||||
StorageLive(_19); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL
|
||||
StorageLive(_20); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
|
|
|
@ -153,10 +153,10 @@
|
|||
_51 = const main::promoted[1]; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// ty::Const
|
||||
// + ty: &i32
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[1]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[1]))
|
||||
// mir::Constant
|
||||
// + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[1])) }
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[1])) }
|
||||
_11 = _51; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
(_9.0: &i32) = move _10; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
(_9.1: &i32) = move _11; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
|
@ -220,10 +220,10 @@
|
|||
_50 = const main::promoted[0]; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// ty::Const
|
||||
// + ty: &[&str; 3]
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
_25 = _50; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
_24 = _25; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
_23 = move _24 as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
|
|
|
@ -96,10 +96,10 @@
|
|||
(_5.1: &i32) = const main::promoted[1]; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// ty::Const
|
||||
// + ty: &i32
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[1]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[1]))
|
||||
// mir::Constant
|
||||
// + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[1])) }
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[1])) }
|
||||
StorageDead(_6); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
StorageLive(_7); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
_7 = (_5.0: &i32); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
|
@ -140,10 +140,10 @@
|
|||
_15 = const main::promoted[0] as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// ty::Const
|
||||
// + ty: &[&str; 3]
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
StorageLive(_18); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL
|
||||
StorageLive(_19); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL
|
||||
StorageLive(_20); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
|
|
|
@ -153,10 +153,10 @@
|
|||
_51 = const main::promoted[1]; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// ty::Const
|
||||
// + ty: &i32
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[1]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[1]))
|
||||
// mir::Constant
|
||||
// + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[1])) }
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[1])) }
|
||||
_11 = _51; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
(_9.0: &i32) = move _10; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
(_9.1: &i32) = move _11; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
|
@ -220,10 +220,10 @@
|
|||
_50 = const main::promoted[0]; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// ty::Const
|
||||
// + ty: &[&str; 3]
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
_25 = _50; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
_24 = _25; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
_23 = move _24 as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL
|
||||
|
|
|
@ -76,10 +76,10 @@ fn full_tested_match() -> () {
|
|||
_11 = const full_tested_match::promoted[0]; // scope 0 at $DIR/match_false_edges.rs:16:14: 16:15
|
||||
// ty::Const
|
||||
// + ty: &std::option::Option<i32>
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:5 ~ match_false_edges[317d]::full_tested_match[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:5 ~ match_false_edges[317d]::full_tested_match[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $DIR/match_false_edges.rs:16:14: 16:15
|
||||
// + literal: Const { ty: &std::option::Option<i32>, val: Unevaluated(WithOptParam { did: DefId(0:5 ~ match_false_edges[317d]::full_tested_match[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &std::option::Option<i32>, val: Unevaluated(WithOptConstParam { did: DefId(0:5 ~ match_false_edges[317d]::full_tested_match[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
_6 = &(((*_11) as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:16:14: 16:15
|
||||
_4 = &shallow _2; // scope 0 at $DIR/match_false_edges.rs:15:19: 15:27
|
||||
StorageLive(_7); // scope 0 at $DIR/match_false_edges.rs:16:20: 16:27
|
||||
|
|
|
@ -184,10 +184,10 @@ fn main() -> () {
|
|||
_27 = const main::promoted[0]; // scope 7 at $DIR/retag.rs:47:21: 47:23
|
||||
// ty::Const
|
||||
// + ty: &i32
|
||||
// + val: Unevaluated(WithOptParam { did: DefId(0:13 ~ retag[317d]::main[0]), param_did: None }, [], Some(promoted[0]))
|
||||
// + val: Unevaluated(WithOptConstParam { did: DefId(0:13 ~ retag[317d]::main[0]), const_param_did: None }, [], Some(promoted[0]))
|
||||
// mir::Constant
|
||||
// + span: $DIR/retag.rs:47:21: 47:23
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptParam { did: DefId(0:13 ~ retag[317d]::main[0]), param_did: None }, [], Some(promoted[0])) }
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:13 ~ retag[317d]::main[0]), const_param_did: None }, [], Some(promoted[0])) }
|
||||
Retag(_27); // scope 7 at $DIR/retag.rs:47:21: 47:23
|
||||
_23 = &(*_27); // scope 7 at $DIR/retag.rs:47:21: 47:23
|
||||
Retag(_23); // scope 7 at $DIR/retag.rs:47:21: 47:23
|
||||
|
|
|
@ -332,7 +332,7 @@ impl<'a, 'tcx> ConstEvalLateContext<'a, 'tcx> {
|
|||
let result = self
|
||||
.lcx
|
||||
.tcx
|
||||
.const_eval_resolve(self.param_env, ty::WithOptParam::dummy(def_id), substs, None, None)
|
||||
.const_eval_resolve(self.param_env, ty::WithOptConstParam::dummy(def_id), substs, None, None)
|
||||
.ok()
|
||||
.map(|val| rustc_middle::ty::Const::from_value(self.lcx.tcx, val, ty))?;
|
||||
let result = miri_to_const(&result);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue