Re-exportsยง
use std::cell::RefCell;๐use std::collections::hash_map;๐use std::rc::Rc;๐use itertools::Itertools as _;๐use rustc_data_structures::fx::FxHashMap;๐use rustc_data_structures::fx::FxHashSet;๐use rustc_data_structures::fx::FxIndexMap;๐use rustc_data_structures::unord::UnordMap;๐use rustc_data_structures::unord::UnordSet;๐use rustc_errors::formatting::DiagMessageAddArg;๐use rustc_errors::Subdiagnostic;๐use rustc_errors::msg;๐use rustc_hir::CRATE_HIR_ID;๐use rustc_hir::def_id::LocalDefId;๐use rustc_index::bit_set::MixedBitSet;๐use rustc_index::IndexSlice;๐use rustc_index::IndexVec;๐use rustc_lint_defs::LintId;๐use rustc_lint_defs::builtin::TAIL_EXPR_DROP_ORDER;๐use rustc_macros::Diagnostic;๐use rustc_macros::Subdiagnostic;๐use rustc_middle::mir;๐use rustc_middle::mir::BasicBlock;๐use rustc_middle::mir::Body;๐use rustc_middle::mir::ClearCrossCrate;๐use rustc_middle::mir::Local;๐use rustc_middle::mir::Location;๐use rustc_middle::mir::MirDumper;๐use rustc_middle::mir::Place;๐use rustc_middle::mir::StatementKind;๐use rustc_middle::mir::TerminatorKind;๐use rustc_middle::ty::significant_drop_order::extract_component_with_significant_dtor;๐use rustc_middle::ty::significant_drop_order::ty_dtor_span;๐use rustc_middle::ty;๐use rustc_middle::ty::TyCtxt;๐use rustc_mir_dataflow::impls::MaybeInitializedPlaces;๐use rustc_mir_dataflow::move_paths::LookupResult;๐use rustc_mir_dataflow::move_paths::MoveData;๐use rustc_mir_dataflow::move_paths::MovePathIndex;๐use rustc_mir_dataflow::Analysis;๐use rustc_mir_dataflow::MaybeReachable;๐use rustc_mir_dataflow::ResultsCursor;๐use rustc_span::DUMMY_SP;๐use rustc_span::Span;๐use rustc_span::Symbol;๐use rustc_span::bug;๐use tracing::debug;๐
Structsยง
- Destructor
Label ๐ - Drops
Reachable ๐ - Local
Label ๐ - Tail
Expr ๐Drop Order Lint
Enumsยง
- Move
Path ๐Index AtBlock - Cache entry of
dropat aBasicBlock
Functionsยง
- assign_
observables_ ๐names - Assign names for anonymous or temporary values for diagnosis
- collect_
user_ ๐names - Extract binding names if available for diagnosis
- place_
descendent_ ๐of_ bids - Check if a moved place at
idxis a part of a BID. The use of this check is that we will consider drops on these as a drop of the overall BID and, thus, we can exclude it from the diagnosis. - place_
has_ ๐common_ prefix - run_
lint ๐ - The core of the lint
tail-expr-drop-order