diff --git a/src/imports.rs b/src/imports.rs index 140d8953abc..fb0a0eede9b 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -23,7 +23,7 @@ use crate::rewrite::{Rewrite, RewriteContext}; use crate::shape::Shape; use crate::source_map::SpanUtils; use crate::spanned::Spanned; -use crate::utils::{is_same_visibility, mk_sp, rewrite_ident}; +use crate::utils::{first_line_width, is_same_visibility, mk_sp, rewrite_ident}; use crate::visitor::FmtVisitor; /// Returns a name imported by a `use` declaration. @@ -36,6 +36,12 @@ impl<'a> FmtVisitor<'a> { pub(crate) fn format_import(&mut self, item: &ast::Item, tree: &ast::UseTree) { let span = item.span(); let shape = self.shape(); + // 4 = "use ", 1 = ";" + let nested_shape = shape + .offset_left(4) + .unwrap_or(shape) + .sub_width(1) + .unwrap_or(shape); let rw = UseTree::from_ast( &self.get_context(), tree, @@ -44,7 +50,7 @@ impl<'a> FmtVisitor<'a> { Some(item.span.lo()), Some(item.attrs.clone()), ) - .rewrite_top_level(&self.get_context(), shape); + .rewrite_top_level(&self.get_context(), nested_shape); match rw { Some(ref s) if s.is_empty() => { // Format up to last newline @@ -1030,22 +1036,7 @@ fn rewrite_nested_use_tree( .preserve_newline(true) .nested(has_nested_list); - let list_str = write_list(&list_items, &fmt)?; - - let result = if (list_str.contains('\n') || list_str.len() > remaining_width) - && context.config.imports_indent() == IndentStyle::Block - { - format!( - "{{\n{}{}\n{}}}", - nested_shape.indent.to_string(context.config), - list_str, - shape.indent.to_string(context.config) - ) - } else { - format!("{{{}}}", list_str) - }; - - Some(result) + Some(write_list(&list_items, &fmt)?) } impl Rewrite for UseSegment { @@ -1072,13 +1063,77 @@ impl Rewrite for UseSegment { } } +fn rewrite_use_segment_for_path( + segment: &UseSegment, + context: &RewriteContext<'_>, + shape: Shape, + newline_in_path: bool, +) -> Option { + let nested_shape = match context.config.imports_indent() { + IndentStyle::Block => shape + .block_indent(context.config.tab_spaces()) + .with_max_width(context.config) + .sub_width(1)?, + IndentStyle::Visual => shape.visual_indent(0), + }; + + let segment_str = segment.rewrite(context, shape)?; + let remaining_width = shape.width.saturating_sub(2); + let result = match segment.kind { + UseSegmentKind::List(_) => { + if (segment_str.contains('\n') + || newline_in_path + || segment_str.len() > remaining_width) + && context.config.imports_indent() == IndentStyle::Block + { + format!( + "{{\n{}{}\n{}}}", + nested_shape.indent.to_string(context.config), + segment_str, + shape.indent.to_string(context.config) + ) + } else { + format!("{{{}}}", segment_str) + } + } + _ => segment_str, + }; + + Some(result) +} + impl Rewrite for UseTree { // This does NOT format attributes and visibility or add a trailing `;`. fn rewrite(&self, context: &RewriteContext<'_>, mut shape: Shape) -> Option { let mut result = String::with_capacity(256); let mut iter = self.path.iter().peekable(); + let start_shape = shape; + let mut newline_in_path = false; + let tab_spaces = context.config.tab_spaces(); + while let Some(segment) = iter.next() { - let segment_str = segment.rewrite(context, shape)?; + let new_shape = if !newline_in_path { + shape + } else { + match context.config.imports_indent() { + IndentStyle::Block => { + start_shape.block_indent(tab_spaces).sub_width(tab_spaces)? + } + IndentStyle::Visual => start_shape.visual_indent(0), + } + }; + let segment_str = + rewrite_use_segment_for_path(segment, context, new_shape, newline_in_path)?; + let mut added_len = first_line_width(&segment_str); + if iter.peek().is_some() { + added_len += 2; // 2 == "::" + } + if added_len > shape.width { + result.push_str(&start_shape.to_string_with_newline(context.config)); + shape = start_shape; + newline_in_path = true; + } + result.push_str(&segment_str); if iter.peek().is_some() { result.push_str("::"); @@ -1086,6 +1141,7 @@ impl Rewrite for UseTree { shape = shape.offset_left(2 + segment_str.len())?; } } + Some(result) } } diff --git a/tests/source/issue-4746/crate_no_reorder.rs b/tests/source/issue-4746/crate_no_reorder.rs new file mode 100644 index 00000000000..edcb0ac9ae0 --- /dev/null +++ b/tests/source/issue-4746/crate_no_reorder.rs @@ -0,0 +1,66 @@ +// rustfmt-imports_granularity: Crate +// rustfmt-reorder_imports: false + +// Long imports with different sizes - based on original issue +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; +use a1; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::a; +use a2; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a3; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; +use a4; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456::z1234567; +use a5; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678901234567::z1234567; +use a6; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; +use a7; + +// Very long (two lines) imports +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a8; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{baz, foo}; +use a9; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{foo, baz}; +use a10; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +baz, foo +}; +use a11; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z123456::{ +baz, foo +}; +use a12; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::{ +baz, foo +}; +use a13; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +baz, foo +} +}; +use a14; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567, +baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567}; +use a16; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567, +baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567}; +use a17; diff --git a/tests/source/issue-4746/crate_reorder.rs b/tests/source/issue-4746/crate_reorder.rs new file mode 100644 index 00000000000..27ae9903c1d --- /dev/null +++ b/tests/source/issue-4746/crate_reorder.rs @@ -0,0 +1,96 @@ +// rustfmt-imports_granularity: Crate +// rustfmt-reorder_imports: true + +// Long imports with reordering - from original issue +use foo::bar; +use foo::{foo, baz}; +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfdsf::{ +asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, +}; + +use foo::bar; +use foo::{foo, baz}; +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfds::{ +asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, +}; + +// Long imports with different sizes - based on original issue +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; +use a1; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::a; +use a2; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a3; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; +use a4; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456::z1234567; +use a5; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678901234567::z1234567; +use a6; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; +use a7; + +// Very long (two lines) imports +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a8; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{baz, foo}; +use a9; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{foo, baz}; +use a10; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +baz, foo +}; +use a11; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z123456::{ +baz, foo +}; +use a12; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::{ +baz, foo +}; +use a13; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +baz, foo +} +}; +use a14; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz; +use a15; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567, +baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567}; +use a16; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567, +baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567}; +use a17; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo, +z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz}; +use a18; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a19; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz; +use a20; diff --git a/tests/source/issue-4746/preserve_no_reorder.rs b/tests/source/issue-4746/preserve_no_reorder.rs new file mode 100644 index 00000000000..ee81ed061bc --- /dev/null +++ b/tests/source/issue-4746/preserve_no_reorder.rs @@ -0,0 +1,96 @@ +// rustfmt-imports_granularity: Preserve +// rustfmt-reorder_imports: false + +// Long imports with reordering - from original issue +use foo::bar; +use foo::{foo, baz}; +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfdsf::{ +asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, +}; + +use foo::bar; +use foo::{foo, baz}; +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfds::{ +asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, +}; + +// Long imports with different sizes - based on original issue +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; +use a1; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::a; +use a2; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a3; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; +use a4; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456::z1234567; +use a5; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678901234567::z1234567; +use a6; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; +use a7; + +// Very long (two lines) imports +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a8; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{baz, foo}; +use a9; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{foo, baz}; +use a10; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +baz, foo +}; +use a11; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z123456::{ +baz, foo +}; +use a12; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::{ +baz, foo +}; +use a13; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +baz, foo +} +}; +use a14; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz; +use a15; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567, +baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567}; +use a16; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567, +baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567}; +use a17; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo, +z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz}; +use a18; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a19; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz; +use a20; diff --git a/tests/source/issue-4746/preserve_reorder.rs b/tests/source/issue-4746/preserve_reorder.rs new file mode 100644 index 00000000000..f7ed2889913 --- /dev/null +++ b/tests/source/issue-4746/preserve_reorder.rs @@ -0,0 +1,96 @@ +// rustfmt-imports_granularity: Preserve +// rustfmt-reorder_imports: true + +// Long imports with reordering - from original issue +use foo::bar; +use foo::{foo, baz}; +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfdsf::{ +asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, +}; + +use foo::bar; +use foo::{foo, baz}; +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfds::{ +asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, +}; + +// Long imports with different sizes - based on original issue +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; +use a1; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::a; +use a2; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a3; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; +use a4; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456::z1234567; +use a5; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678901234567::z1234567; +use a6; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; +use a7; + +// Very long (two lines) imports +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a8; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{baz, foo}; +use a9; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{foo, baz}; +use a10; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +baz, foo +}; +use a11; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z123456::{ +baz, foo +}; +use a12; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::{ +baz, foo +}; +use a13; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +baz, foo +} +}; +use a14; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz; +use a15; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567, +baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567}; +use a16; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567, +baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567}; +use a17; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ +z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo, +z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz}; +use a18; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a19; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::foo; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::baz; +use a20; diff --git a/tests/source/issue_3033.rs b/tests/source/issue_3033.rs new file mode 100644 index 00000000000..e12249a6da6 --- /dev/null +++ b/tests/source/issue_3033.rs @@ -0,0 +1,2 @@ +use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding::BluetoothRemoteGATTServerBinding:: + BluetoothRemoteGATTServerMethods; diff --git a/tests/target/issue-4746/crate_no_reorder.rs b/tests/target/issue-4746/crate_no_reorder.rs new file mode 100644 index 00000000000..464f3e11896 --- /dev/null +++ b/tests/target/issue-4746/crate_no_reorder.rs @@ -0,0 +1,96 @@ +// rustfmt-imports_granularity: Crate +// rustfmt-reorder_imports: false + +// Long imports with different sizes - based on original issue +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; +use a1; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::a; +use a2; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a3; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; +use a4; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456:: + z1234567; +use a5; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z12345678901234567::z1234567; +use a6; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; +use a7; + +// Very long (two lines) imports +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567; +use a8; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo, +}; +use a9; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + foo, baz + }; +use a10; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo + }; +use a11; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z123456::{ + baz, foo + }; +use a12; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::{ + baz, foo + }; +use a13; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo, + }, +}; +use a14; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + }; +use a16; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + }; +use a17; diff --git a/tests/target/issue-4746/crate_reorder.rs b/tests/target/issue-4746/crate_reorder.rs new file mode 100644 index 00000000000..0404708b6bf --- /dev/null +++ b/tests/target/issue-4746/crate_reorder.rs @@ -0,0 +1,139 @@ +// rustfmt-imports_granularity: Crate +// rustfmt-reorder_imports: true + +// Long imports with reordering - from original issue +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfdsf:: + asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf; +use foo::{bar, baz, foo}; + +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfds::asdfasdefasdasdfsdfdfasdf:: + asdfasdasedfafasdfasdf; +use foo::{bar, baz, foo}; + +// Long imports with different sizes - based on original issue +use a1; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; + +use a2; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::a; + +use a3; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; + +use a4; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; + +use a5; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456:: + z1234567; + +use a6; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z12345678901234567::z1234567; + +use a7; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; + +// Very long (two lines) imports +use a8; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567; + +use a9; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo, +}; + +use a10; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + baz, foo + }; + +use a11; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo + }; + +use a12; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z123456::{ + baz, foo + }; + +use a13; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::{ + baz, foo + }; + +use a14; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo + }; + +use a15; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + baz, foo + }; + +use a16; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + }; + +use a17; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + }; + +use a18; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::{ + baz, foo + }; + +use a19; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + }; + +use a20; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + baz, foo + }; diff --git a/tests/target/issue-4746/preserve_no_reorder.rs b/tests/target/issue-4746/preserve_no_reorder.rs new file mode 100644 index 00000000000..1d7a0bb8966 --- /dev/null +++ b/tests/target/issue-4746/preserve_no_reorder.rs @@ -0,0 +1,149 @@ +// rustfmt-imports_granularity: Preserve +// rustfmt-reorder_imports: false + +// Long imports with reordering - from original issue +use foo::bar; +use foo::{foo, baz}; +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfdsf::{ + asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, +}; + +use foo::bar; +use foo::{foo, baz}; +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfds::{ + asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, +}; + +// Long imports with different sizes - based on original issue +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; +use a1; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::a; +use a2; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a3; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; +use a4; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456:: + z1234567; +use a5; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z12345678901234567::z1234567; +use a6; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; +use a7; + +// Very long (two lines) imports +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567; +use a8; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo, +}; +use a9; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + foo, baz + }; +use a10; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo + }; +use a11; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z123456::{ + baz, foo + }; +use a12; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::{ + baz, foo + }; +use a13; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo, + }, +}; +use a14; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::foo; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::baz; +use a15; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + }; +use a16; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + }; +use a17; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::foo, + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::baz, + }; +use a18; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567; +use a19; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::foo; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::baz; +use a20; diff --git a/tests/target/issue-4746/preserve_reorder.rs b/tests/target/issue-4746/preserve_reorder.rs new file mode 100644 index 00000000000..8cd6bc88555 --- /dev/null +++ b/tests/target/issue-4746/preserve_reorder.rs @@ -0,0 +1,146 @@ +// rustfmt-imports_granularity: Preserve +// rustfmt-reorder_imports: true + +// Long imports with reordering - from original issue +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfdsf:: + asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf; +use foo::bar; +use foo::{baz, foo}; + +use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfds::asdfasdefasdasdfsdfdfasdf:: + asdfasdasedfafasdfasdf; +use foo::bar; +use foo::{baz, foo}; + +// Long imports with different sizes - based on original issue +use a1; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; + +use a2; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::a; + +use a3; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; + +use a4; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; + +use a5; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456:: + z1234567; + +use a6; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z12345678901234567::z1234567; + +use a7; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; + +// Very long (two lines) imports +use a8; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567; + +use a9; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo, +}; + +use a10; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + baz, foo + }; + +use a11; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo + }; + +use a12; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z123456::{ + baz, foo + }; + +use a13; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::{ + baz, foo + }; + +use a14; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{ + baz, foo + }; + +use a15; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::baz; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::foo; + +use a16; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + }; + +use a17; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567, + }; + +use a18; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{ + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::baz, + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::foo, + }; + +use a19; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::baz::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::foo::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567; + +use a20; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::baz; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::foo; diff --git a/tests/target/issue_3033.rs b/tests/target/issue_3033.rs index e12249a6da6..da25343d6a0 100644 --- a/tests/target/issue_3033.rs +++ b/tests/target/issue_3033.rs @@ -1,2 +1,2 @@ -use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding::BluetoothRemoteGATTServerBinding:: - BluetoothRemoteGATTServerMethods; +use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding:: + BluetoothRemoteGATTServerBinding::BluetoothRemoteGATTServerMethods; diff --git a/tests/target/long-use-statement-issue-3154.rs b/tests/target/long-use-statement-issue-3154.rs index 877241e3b6f..0ae09626f11 100644 --- a/tests/target/long-use-statement-issue-3154.rs +++ b/tests/target/long-use-statement-issue-3154.rs @@ -1,3 +1,4 @@ // rustfmt-reorder_imports: false -pub use self::super::super::super::root::mozilla::detail::StringClassFlags as nsTStringRepr_ClassFlags; +pub use self::super::super::super::root::mozilla::detail:: + StringClassFlags as nsTStringRepr_ClassFlags;