Function rustc_mir_dataflow::elaborate_drops::elaborate_drop

source ·
pub fn elaborate_drop<'b, 'tcx, D>(
    elaborator: &mut D,
    source_info: SourceInfo,
    place: Place<'tcx>,
    path: D::Path,
    succ: BasicBlock,
    unwind: Unwind,
    bb: BasicBlock
)
where D: DropElaborator<'b, 'tcx>, 'tcx: 'b,
Expand description

“Elaborates” a drop of place/path and patches bb’s terminator to execute it.

The passed elaborator is used to determine what should happen at the drop terminator. It decides whether the drop can be statically determined or whether it needs a dynamic drop flag, and whether the drop is “open”, ie. should be expanded to drop all subfields of the dropped value.

When this returns, the MIR patch in the elaborator contains the necessary changes.