s/generator/coroutine/
This commit is contained in:
parent
60956837cf
commit
e96ce20b34
468 changed files with 2201 additions and 2197 deletions
|
@ -83,9 +83,9 @@ pub enum MirPhase {
|
|||
/// don't document this here. Runtime MIR has most retags explicit (though implicit retags
|
||||
/// can still occur at `Rvalue::{Ref,AddrOf}`).
|
||||
/// - Coroutine bodies: In analysis MIR, locals may actually be behind a pointer that user code has
|
||||
/// access to. This occurs in generator bodies. Such locals do not behave like other locals,
|
||||
/// access to. This occurs in coroutine bodies. Such locals do not behave like other locals,
|
||||
/// because they eg may be aliased in surprising ways. Runtime MIR has no such special locals -
|
||||
/// all generator bodies are lowered and so all places that look like locals really are locals.
|
||||
/// all coroutine bodies are lowered and so all places that look like locals really are locals.
|
||||
///
|
||||
/// Also note that the lint pass which reports eg `200_u8 + 200_u8` as an error is run as a part
|
||||
/// of analysis to runtime MIR lowering. To ensure lints are reported reliably, this means that
|
||||
|
@ -292,7 +292,7 @@ pub enum StatementKind<'tcx> {
|
|||
|
||||
/// Write the discriminant for a variant to the enum Place.
|
||||
///
|
||||
/// This is permitted for both generators and ADTs. This does not necessarily write to the
|
||||
/// This is permitted for both coroutines and ADTs. This does not necessarily write to the
|
||||
/// entire place; instead, it writes to the minimum set of bytes as required by the layout for
|
||||
/// the type.
|
||||
SetDiscriminant { place: Box<Place<'tcx>>, variant_index: VariantIdx },
|
||||
|
@ -626,7 +626,7 @@ pub enum TerminatorKind<'tcx> {
|
|||
/// `dest = move _0`. It might additionally do other things, like have side-effects in the
|
||||
/// aliasing model.
|
||||
///
|
||||
/// If the body is a generator body, this has slightly different semantics; it instead causes a
|
||||
/// If the body is a coroutine body, this has slightly different semantics; it instead causes a
|
||||
/// `CoroutineState::Returned(_0)` to be created (as if by an `Aggregate` rvalue) and assigned
|
||||
/// to the return place.
|
||||
Return,
|
||||
|
@ -709,14 +709,14 @@ pub enum TerminatorKind<'tcx> {
|
|||
|
||||
/// Marks a suspend point.
|
||||
///
|
||||
/// Like `Return` terminators in generator bodies, this computes `value` and then a
|
||||
/// Like `Return` terminators in coroutine bodies, this computes `value` and then a
|
||||
/// `CoroutineState::Yielded(value)` as if by `Aggregate` rvalue. That value is then assigned to
|
||||
/// the return place of the function calling this one, and execution continues in the calling
|
||||
/// function. When next invoked with the same first argument, execution of this function
|
||||
/// continues at the `resume` basic block, with the second argument written to the `resume_arg`
|
||||
/// place. If the generator is dropped before then, the `drop` basic block is invoked.
|
||||
/// place. If the coroutine is dropped before then, the `drop` basic block is invoked.
|
||||
///
|
||||
/// Not permitted in bodies that are not generator bodies, or after generator lowering.
|
||||
/// Not permitted in bodies that are not coroutine bodies, or after coroutine lowering.
|
||||
///
|
||||
/// **Needs clarification**: What about the evaluation order of the `resume_arg` and `value`?
|
||||
Yield {
|
||||
|
@ -726,16 +726,16 @@ pub enum TerminatorKind<'tcx> {
|
|||
resume: BasicBlock,
|
||||
/// The place to store the resume argument in.
|
||||
resume_arg: Place<'tcx>,
|
||||
/// Cleanup to be done if the generator is dropped at this suspend point.
|
||||
/// Cleanup to be done if the coroutine is dropped at this suspend point.
|
||||
drop: Option<BasicBlock>,
|
||||
},
|
||||
|
||||
/// Indicates the end of dropping a generator.
|
||||
/// Indicates the end of dropping a coroutine.
|
||||
///
|
||||
/// Semantically just a `return` (from the generators drop glue). Only permitted in the same situations
|
||||
/// Semantically just a `return` (from the coroutines drop glue). Only permitted in the same situations
|
||||
/// as `yield`.
|
||||
///
|
||||
/// **Needs clarification**: Is that even correct? The generator drop code is always confusing
|
||||
/// **Needs clarification**: Is that even correct? The coroutine drop code is always confusing
|
||||
/// to me, because it's not even really in the current body.
|
||||
///
|
||||
/// **Needs clarification**: Are there type system constraints on these terminators? Should
|
||||
|
@ -961,8 +961,8 @@ pub type AssertMessage<'tcx> = AssertKind<Operand<'tcx>>;
|
|||
/// was unsized and so had metadata associated with it, then the metadata is retained if the
|
||||
/// field is unsized and thrown out if it is sized.
|
||||
///
|
||||
/// These projections are only legal for tuples, ADTs, closures, and generators. If the ADT or
|
||||
/// generator has more than one variant, the parent place's variant index must be set, indicating
|
||||
/// These projections are only legal for tuples, ADTs, closures, and coroutines. If the ADT or
|
||||
/// coroutine 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
|
||||
|
@ -1068,7 +1068,7 @@ pub enum ProjectionElem<V, T> {
|
|||
from_end: bool,
|
||||
},
|
||||
|
||||
/// "Downcast" to a variant of an enum or a generator.
|
||||
/// "Downcast" to a variant of an enum or a coroutine.
|
||||
///
|
||||
/// The included Symbol is the name of the variant, used for printing MIR.
|
||||
Downcast(Option<Symbol>, VariantIdx),
|
||||
|
@ -1279,7 +1279,7 @@ pub enum Rvalue<'tcx> {
|
|||
/// has a destructor.
|
||||
///
|
||||
/// Disallowed after deaggregation for all aggregate kinds except `Array` and `Coroutine`. After
|
||||
/// generator lowering, `Coroutine` aggregate kinds are disallowed too.
|
||||
/// coroutine lowering, `Coroutine` aggregate kinds are disallowed too.
|
||||
Aggregate(Box<AggregateKind<'tcx>>, IndexVec<FieldIdx, Operand<'tcx>>),
|
||||
|
||||
/// Transmutes a `*mut u8` into shallow-initialized `Box<T>`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue