diff options
| author | Marcus Klaas de Vries <mail@marcusklaas.nl> | 2015-09-26 18:25:05 +0200 |
|---|---|---|
| committer | Marcus Klaas de Vries <mail@marcusklaas.nl> | 2015-09-26 18:25:05 +0200 |
| commit | fd057ab59559449e9112925540e09fd6b75d676f (patch) | |
| tree | 973e27e463e1f86e58f065796c1cfaec21fa4ba2 /src | |
| parent | 9a5688f7c238c3c62d193972a93d7006cccfe8e4 (diff) | |
| parent | b2e7da0aa00297ff346fa15685995ee07e3b4c01 (diff) | |
Merge pull request #367 from nrc/self-alias
Format imports with aliases.
Diffstat (limited to 'src')
| -rw-r--r-- | src/imports.rs | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/src/imports.rs b/src/imports.rs index f5f81015efb..64633d2d4ff 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -48,14 +48,16 @@ impl Rewrite for ast::ViewPath { } } -fn rewrite_single_use_list(path_str: String, vpi: ast::PathListItem) -> String { - if let ast::PathListItem_::PathListIdent{ name, .. } = vpi.node { +fn rewrite_single_use_list(path_str: String, vpi: &ast::PathListItem) -> String { + let path_item_str = if let ast::PathListItem_::PathListIdent{ name, .. } = vpi.node { + // A name. if path_str.is_empty() { name.to_string() } else { format!("{}::{}", path_str, name) } } else { + // `self`. if !path_str.is_empty() { path_str } else { @@ -63,6 +65,31 @@ fn rewrite_single_use_list(path_str: String, vpi: ast::PathListItem) -> String { // leave it alone. "{self}".to_owned() } + }; + + append_alias(path_item_str, vpi) +} + +fn rewrite_path_item(vpi: &&ast::PathListItem) -> String { + let path_item_str = match vpi.node { + ast::PathListItem_::PathListIdent{ name, .. } => { + name.to_string() + } + ast::PathListItem_::PathListMod{ .. } => { + "self".to_owned() + } + }; + + append_alias(path_item_str, vpi) +} + +fn append_alias(path_item_str: String, vpi: &ast::PathListItem) -> String { + match vpi.node { + ast::PathListItem_::PathListIdent{ rename: Some(rename), .. } | + ast::PathListItem_::PathListMod{ rename: Some(rename), .. } => { + format!("{} as {}", path_item_str, rename) + } + _ => path_item_str, } } @@ -80,7 +107,7 @@ pub fn rewrite_use_list(width: usize, match path_list.len() { 0 => unreachable!(), - 1 => return Some(rewrite_single_use_list(path_str, path_list[0])), + 1 => return Some(rewrite_single_use_list(path_str, &path_list[0])), _ => (), } @@ -117,16 +144,7 @@ pub fn rewrite_use_list(width: usize, "}", |vpi| vpi.span.lo, |vpi| vpi.span.hi, - |vpi| { - match vpi.node { - ast::PathListItem_::PathListIdent{ name, .. } => { - name.to_string() - } - ast::PathListItem_::PathListMod{ .. } => { - "self".to_owned() - } - } - }, + rewrite_path_item, span_after(span, "{", context.codemap), span.hi); items.extend(iter); |
