• F
    Added DestructionScope variant to CodeExtent, representing the area · 81383bd8
    Felix S. Klock II 提交于
    immediately surrounding a node that is a terminating_scope
    (e.g. statements, looping forms) during which the destructors run (the
    destructors for temporaries from the execution of that node, that is).
    
    Introduced DestructionScopeData newtype wrapper around ast::NodeId, to
    preserve invariant that FreeRegion and ScopeChain::BlockScope carry
    destruction scopes (rather than arbitrary CodeExtents).
    
    Insert DestructionScope and block Remainder into enclosing CodeExtents
    hierarchy.
    
    Add more doc for DestructionScope, complete with ASCII art.
    
    Switch to constructing DestructionScope rather than Misc in a number
    of places, mostly related to `ty::ReFree` creation, and use
    destruction-scopes of node-ids at various calls to
    liberate_late_bound_regions.
    
    middle::resolve_lifetime: Map BlockScope to DestructionScope in `fn resolve_free_lifetime`.
    
    Add the InnermostDeclaringBlock and InnermostEnclosingExpr enums that
    are my attempt to clarify the region::Context structure, and that
    later commmts build upon.
    
    Improve the debug output for `CodeExtent` attached to `ty::Region::ReScope`.
    
    Loosened an assertion in `rustc_trans::trans::cleanup` to account for
    `DestructionScope`.  (Perhaps this should just be switched entirely
    over to `DestructionScope`, rather than allowing for either `Misc` or
    `DestructionScope`.)
    
    ----
    
    Even though the DestructionScope is new, this particular commit should
    not actually change the semantics of any current code.
    81383bd8
tydecode.rs 29.6 KB