]> git.lizzy.rs Git - rust.git/blob - src/librustc_mir/util/mod.rs
Auto merge of #61953 - Centril:shared-from-iter, r=RalfJung
[rust.git] / src / librustc_mir / util / mod.rs
1 use core::unicode::property::Pattern_White_Space;
2 use rustc::ty::TyCtxt;
3 use syntax_pos::Span;
4
5 pub mod aggregate;
6 pub mod borrowck_errors;
7 pub mod elaborate_drops;
8 pub mod def_use;
9 pub mod patch;
10
11 mod alignment;
12 mod graphviz;
13 pub(crate) mod pretty;
14 pub mod liveness;
15 pub mod collect_writes;
16
17 pub use self::aggregate::expand_aggregate;
18 pub use self::alignment::is_disaligned;
19 pub use self::pretty::{dump_enabled, dump_mir, write_mir_pretty, PassWhere};
20 pub use self::graphviz::{graphviz_safe_def_name, write_mir_graphviz};
21 pub use self::graphviz::write_node_label as write_graphviz_node_label;
22
23 /// If possible, suggest replacing `ref` with `ref mut`.
24 pub fn suggest_ref_mut(tcx: TyCtxt<'_>, binding_span: Span) -> Option<(String)> {
25     let hi_src = tcx.sess.source_map().span_to_snippet(binding_span).unwrap();
26     if hi_src.starts_with("ref")
27         && hi_src["ref".len()..].starts_with(Pattern_White_Space)
28     {
29         let replacement = format!("ref mut{}", &hi_src["ref".len()..]);
30         Some(replacement)
31     } else {
32         None
33     }
34 }