diff options
| author | Maximilian Roos <m@maxroos.com> | 2018-08-31 00:19:12 -0400 |
|---|---|---|
| committer | Maximilian Roos <m@maxroos.com> | 2018-08-31 00:19:12 -0400 |
| commit | b1da2a53b489f86c17771a2b77acabdd236a115d (patch) | |
| tree | e0d1948a92e105718ce0c07f5c9a9840d02af017 /src | |
| parent | af7b341a50ae9fd94d2e6aec0fa75486a45f1691 (diff) | |
| parent | d88139893f71801ee7262db999832e6bbab02cc2 (diff) | |
Merge branch 'master' into clippy2
Diffstat (limited to 'src')
| -rw-r--r-- | src/imports.rs | 15 | ||||
| -rw-r--r-- | src/items.rs | 6 |
2 files changed, 16 insertions, 5 deletions
diff --git a/src/imports.rs b/src/imports.rs index b3408bf7bf2..db00c45b9d9 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -15,7 +15,7 @@ use syntax::ast::{self, UseTreeKind}; use syntax::source_map::{self, BytePos, Span, DUMMY_SP}; use comment::combine_strs_with_missing_comments; -use config::IndentStyle; +use config::{Edition, IndentStyle}; use lists::{definitive_tactic, itemize_list, write_list, ListFormatting, ListItem, Separator}; use rewrite::{Rewrite, RewriteContext}; use shape::Shape; @@ -144,6 +144,7 @@ impl UseSegment { fn from_path_segment( context: &RewriteContext, path_seg: &ast::PathSegment, + modsep: bool, ) -> Option<UseSegment> { let name = rewrite_ident(context, path_seg.ident); if name.is_empty() || name == "{{root}}" { @@ -152,7 +153,10 @@ impl UseSegment { Some(match name { "self" => UseSegment::Slf(None), "super" => UseSegment::Super(None), - _ => UseSegment::Ident((*name).to_owned(), None), + _ => { + let mod_sep = if modsep { "::" } else { "" }; + UseSegment::Ident(format!("{}{}", mod_sep, name), None) + } }) } } @@ -313,8 +317,13 @@ impl UseTree { visibility, attrs, }; + + let leading_modsep = context.config.edition() == Edition::Edition2018 + && a.prefix.to_string().len() > 2 + && a.prefix.to_string().starts_with("::"); + for p in &a.prefix.segments { - if let Some(use_segment) = UseSegment::from_path_segment(context, p) { + if let Some(use_segment) = UseSegment::from_path_segment(context, p, leading_modsep) { result.path.push(use_segment); } } diff --git a/src/items.rs b/src/items.rs index ff635137e42..7f8980dd150 100644 --- a/src/items.rs +++ b/src/items.rs @@ -2232,8 +2232,10 @@ fn rewrite_args( ) -> Option<String> { let mut arg_item_strs = args .iter() - .map(|arg| arg.rewrite(context, Shape::legacy(multi_line_budget, arg_indent))) - .collect::<Option<Vec<_>>>()?; + .map(|arg| { + arg.rewrite(context, Shape::legacy(multi_line_budget, arg_indent)) + .unwrap_or_else(|| context.snippet(arg.span()).to_owned()) + }).collect::<Vec<_>>(); // Account for sugary self. // FIXME: the comment for the self argument is dropped. This is blocked |
