]>
Commit | Line | Data |
---|---|---|
3dfed10e | 1 | use rustc_ast::{self as ast, MetaItem}; |
ba9703b0 | 2 | use rustc_middle::ty; |
3dfed10e | 3 | use rustc_session::Session; |
dfeec247 | 4 | use rustc_span::symbol::{sym, Symbol}; |
041b39d2 | 5 | |
dfeec247 | 6 | pub(crate) use self::drop_flag_effects::*; |
ba9703b0 | 7 | pub use self::framework::{ |
1b1a35ee XL |
8 | fmt, lattice, visit_results, Analysis, AnalysisDomain, Backward, BorrowckFlowState, |
9 | BorrowckResults, Engine, Forward, GenKill, GenKillAnalysis, JoinSemiLattice, Results, | |
136023e0 | 10 | ResultsCursor, ResultsRefCursor, ResultsVisitor, SwitchIntEdgeEffects, |
ba9703b0 | 11 | }; |
041b39d2 | 12 | |
3b2f2976 XL |
13 | use self::move_paths::MoveData; |
14 | ||
b7449926 | 15 | pub mod drop_flag_effects; |
ba9703b0 | 16 | mod framework; |
f9f354fc | 17 | pub mod impls; |
041b39d2 XL |
18 | pub mod move_paths; |
19 | ||
48663c56 XL |
20 | pub(crate) mod indexes { |
21 | pub(crate) use super::{ | |
48663c56 | 22 | impls::borrows::BorrowIndex, |
dfeec247 | 23 | move_paths::{InitIndex, MoveOutIndex, MovePathIndex}, |
48663c56 XL |
24 | }; |
25 | } | |
041b39d2 | 26 | |
ba9703b0 XL |
27 | pub struct MoveDataParamEnv<'tcx> { |
28 | pub(crate) move_data: MoveData<'tcx>, | |
29 | pub(crate) param_env: ty::ParamEnv<'tcx>, | |
3b2f2976 XL |
30 | } |
31 | ||
3dfed10e XL |
32 | pub(crate) fn has_rustc_mir_with( |
33 | sess: &Session, | |
34 | attrs: &[ast::Attribute], | |
35 | name: Symbol, | |
36 | ) -> Option<MetaItem> { | |
3b2f2976 | 37 | for attr in attrs { |
3dfed10e | 38 | if sess.check_name(attr, sym::rustc_mir) { |
3b2f2976 XL |
39 | let items = attr.meta_item_list(); |
40 | for item in items.iter().flat_map(|l| l.iter()) { | |
41 | match item.meta_item() { | |
3dfed10e | 42 | Some(mi) if mi.has_name(name) => return Some(mi.clone()), |
dfeec247 | 43 | _ => continue, |
3b2f2976 XL |
44 | } |
45 | } | |
46 | } | |
47 | } | |
ba9703b0 | 48 | None |
3157f602 | 49 | } |