@@ -16,8 +16,6 @@ use syntax::ast;
16
16
use syntax:: parse:: token;
17
17
use syntax:: print:: pprust;
18
18
19
-
20
- // TODO remove empty lists (if they're even possible)
21
19
// TODO (some day) remove unused imports, expand globs, compress many single imports into a list import
22
20
23
21
fn rewrite_single_use_list ( path_str : String , vpi : ast:: PathListItem , vis : & str ) -> String {
@@ -41,18 +39,21 @@ fn rewrite_single_use_list(path_str: String, vpi: ast::PathListItem, vis: &str)
41
39
42
40
impl < ' a > FmtVisitor < ' a > {
43
41
// Basically just pretty prints a multi-item import.
42
+ // Returns None when the import can be removed.
44
43
pub fn rewrite_use_list ( & mut self ,
45
44
block_indent : usize ,
46
45
one_line_budget : usize , // excluding indentation
47
46
multi_line_budget : usize ,
48
47
path : & ast:: Path ,
49
48
path_list : & [ ast:: PathListItem ] ,
50
- visibility : ast:: Visibility ) -> String {
49
+ visibility : ast:: Visibility ) -> Option < String > {
51
50
let path_str = pprust:: path_to_string ( path) ;
52
51
let vis = format_visibility ( visibility) ;
53
52
54
- if path_list. len ( ) == 1 {
55
- return rewrite_single_use_list ( path_str, path_list[ 0 ] , vis) ;
53
+ match path_list. len ( ) {
54
+ 0 => return None ,
55
+ 1 => return Some ( rewrite_single_use_list ( path_str, path_list[ 0 ] , vis) ) ,
56
+ _ => ( )
56
57
}
57
58
58
59
// 2 = ::
@@ -107,10 +108,10 @@ impl<'a> FmtVisitor<'a> {
107
108
ast:: PathListItem_ :: PathListMod { .. } => None ,
108
109
}
109
110
} ) ) . collect ( ) ;
110
- if path_str. len ( ) == 0 {
111
+ Some ( if path_str. len ( ) == 0 {
111
112
format ! ( "{}use {{{}}};" , vis, write_list( & items, & fmt) )
112
113
} else {
113
114
format ! ( "{}use {}::{{{}}};" , vis, path_str, write_list( & items, & fmt) )
114
- }
115
+ } )
115
116
}
116
117
}
0 commit comments