Revert "Revert "Rollup merge of #98582 - oli-obk:unconstrained_opaque_type, r=estebank""
This reverts commit 4a742a691e
.
This commit is contained in:
parent
5d664f7a8f
commit
40e2de8c41
30 changed files with 250 additions and 37 deletions
|
@ -829,6 +829,9 @@ pub type AssertMessage<'tcx> = AssertKind<Operand<'tcx>>;
|
|||
/// generator has more than one variant, the parent place's variant index must be set, indicating
|
||||
/// which variant is being used. If it has just one variant, the variant index may or may not be
|
||||
/// included - the single possible variant is inferred if it is not included.
|
||||
/// - [`OpaqueCast`](ProjectionElem::OpaqueCast): This projection changes the place's type to the
|
||||
/// given one, and makes no other changes. A `OpaqueCast` projection on any type other than an
|
||||
/// opaque type from the current crate is not well-formed.
|
||||
/// - [`ConstantIndex`](ProjectionElem::ConstantIndex): Computes an offset in units of `T` into the
|
||||
/// place as described in the documentation for the `ProjectionElem`. The resulting address is
|
||||
/// the parent's address plus that offset, and the type is `T`. This is only legal if the parent
|
||||
|
@ -928,6 +931,10 @@ pub enum ProjectionElem<V, T> {
|
|||
///
|
||||
/// The included Symbol is the name of the variant, used for printing MIR.
|
||||
Downcast(Option<Symbol>, VariantIdx),
|
||||
|
||||
/// Like an explicit cast from an opaque type to a concrete type, but without
|
||||
/// requiring an intermediate variable.
|
||||
OpaqueCast(T),
|
||||
}
|
||||
|
||||
/// Alias for projections as they appear in places, where the base is a place
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue