From cc7e8a007b347bed9a06aa91ef90542fb2542601 Mon Sep 17 00:00:00 2001 From: David Bar-On Date: Wed, 23 Nov 2022 20:48:07 +0200 Subject: [PATCH 1/4] Fix issue #4746 - formatting of import long lines --- src/imports.rs | 14 +++- tests/source/issue-4746/crate.rs | 70 +++++++++++++++++ tests/source/issue-4746/preserve.rs | 70 +++++++++++++++++ tests/source/issue_3033.rs | 2 + tests/target/issue-4746/crate.rs | 101 ++++++++++++++++++++++++ tests/target/issue-4746/preserve.rs | 114 ++++++++++++++++++++++++++++ tests/target/issue_3033.rs | 4 +- 7 files changed, 372 insertions(+), 3 deletions(-) create mode 100644 tests/source/issue-4746/crate.rs create mode 100644 tests/source/issue-4746/preserve.rs create mode 100644 tests/source/issue_3033.rs create mode 100644 tests/target/issue-4746/crate.rs create mode 100644 tests/target/issue-4746/preserve.rs diff --git a/src/imports.rs b/src/imports.rs index 140d8953abc..6cdd5857bf2 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. @@ -1077,8 +1077,19 @@ impl Rewrite for UseTree { 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; + while let Some(segment) = iter.next() { let segment_str = segment.rewrite(context, shape)?; + let mut added_len = first_line_width(&segment_str); + if iter.peek().is_some() { + added_len += 2; // 3 == "::" + } + if added_len > shape.width { + result.push_str(&start_shape.to_string_with_newline(context.config)); + shape = start_shape; + } + result.push_str(&segment_str); if iter.peek().is_some() { result.push_str("::"); @@ -1086,6 +1097,7 @@ impl Rewrite for UseTree { shape = shape.offset_left(2 + segment_str.len())?; } } + Some(result) } } diff --git a/tests/source/issue-4746/crate.rs b/tests/source/issue-4746/crate.rs new file mode 100644 index 00000000000..232eab1521c --- /dev/null +++ b/tests/source/issue-4746/crate.rs @@ -0,0 +1,70 @@ +// rustfmt-imports_granularity: Crate + +// 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 a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::a; +use a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; +use a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456::z1234567; +use a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678901234567::z1234567; +use a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; +use a; + +// 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 a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{foo, baz}; +use a; + +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 a; + +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 a; + +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 a; + +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 a; + +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 a; + +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 a; diff --git a/tests/source/issue-4746/preserve.rs b/tests/source/issue-4746/preserve.rs new file mode 100644 index 00000000000..7e14a319da4 --- /dev/null +++ b/tests/source/issue-4746/preserve.rs @@ -0,0 +1,70 @@ +// rustfmt-imports_granularity: Preserve + +// 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 a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::a; +use a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; +use a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; +use a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456::z1234567; +use a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678901234567::z1234567; +use a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; +use a; + +// 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 a; + +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::{foo, baz}; +use a; + +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 a; + +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 a; + +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 a; + +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 a; + +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 a; + +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 a; 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.rs b/tests/target/issue-4746/crate.rs new file mode 100644 index 00000000000..608315609e4 --- /dev/null +++ b/tests/target/issue-4746/crate.rs @@ -0,0 +1,101 @@ +// rustfmt-imports_granularity: Crate + +// 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 a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::a; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456:: + z1234567; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z12345678901234567::z1234567; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; + +// Very long (two lines) imports +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{baz, foo}; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{baz, foo}; + +use a; +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 a; +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 a; +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 a; +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 a; +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.rs b/tests/target/issue-4746/preserve.rs new file mode 100644 index 00000000000..ea132ef4907 --- /dev/null +++ b/tests/target/issue-4746/preserve.rs @@ -0,0 +1,114 @@ +// rustfmt-imports_granularity: Preserve + +// 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 a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::a; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456:: + z1234567; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z12345678901234567::z1234567; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::asdf; + +// Very long (two lines) imports +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567; + +use a; +use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: + z1234567::z1234567::{baz, foo}; + +use a; +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 a; +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 a; +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 a; +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 a; +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 a; +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; From c0a0737e67922bf22ce0788c337371b2568a24e3 Mon Sep 17 00:00:00 2001 From: David Bar-On Date: Fri, 25 Nov 2022 18:21:55 +0200 Subject: [PATCH 2/4] Fix indentation of nested imports inside long import --- src/imports.rs | 75 ++++++++++++++++++++++------- tests/target/issue-4746/crate.rs | 58 ++++++++++++---------- tests/target/issue-4746/preserve.rs | 46 +++++++++--------- 3 files changed, 114 insertions(+), 65 deletions(-) diff --git a/src/imports.rs b/src/imports.rs index 6cdd5857bf2..2ec38d86680 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -1030,22 +1030,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,22 +1057,76 @@ 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 indented_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; // 3 == "::" + 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); diff --git a/tests/target/issue-4746/crate.rs b/tests/target/issue-4746/crate.rs index 608315609e4..1d0dce69b32 100644 --- a/tests/target/issue-4746/crate.rs +++ b/tests/target/issue-4746/crate.rs @@ -45,57 +45,65 @@ use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: use a; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: - z1234567::z1234567::{baz, foo}; + z1234567::z1234567::{ + baz, foo + }; use a; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: - z1234567::z1234567::{baz, foo}; + z1234567::z1234567::{ + baz, foo + }; use a; 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, -}; + 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 a; 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, -}; + 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 a; 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}; + z1234567::z1234567::z1234567::{ + baz, foo + }; use a; 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, -}; + 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 a; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: - z1234567::z1234567::{baz, foo}; + z1234567::z1234567::{ + baz, foo + }; diff --git a/tests/target/issue-4746/preserve.rs b/tests/target/issue-4746/preserve.rs index ea132ef4907..468fd197e66 100644 --- a/tests/target/issue-4746/preserve.rs +++ b/tests/target/issue-4746/preserve.rs @@ -47,7 +47,9 @@ use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: use a; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: - z1234567::z1234567::{baz, foo}; + z1234567::z1234567::{ + baz, foo + }; use a; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: @@ -61,37 +63,37 @@ use a; 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, -}; + 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 a; 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, -}; + 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 a; 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, -}; + 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 a; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: From e50058475a0cfea6c6ed100d7f27b6f5c50e633d Mon Sep 17 00:00:00 2001 From: David Bar-On Date: Sat, 26 Nov 2022 16:36:02 +0200 Subject: [PATCH 3/4] Enhanced test cases --- src/imports.rs | 1 - tests/source/issue-4746/crate.rs | 55 +++++++++++++++++++-------- tests/source/issue-4746/preserve.rs | 55 +++++++++++++++++++-------- tests/target/issue-4746/crate.rs | 59 +++++++++++++++++++++-------- tests/target/issue-4746/preserve.rs | 59 +++++++++++++++++++++-------- 5 files changed, 168 insertions(+), 61 deletions(-) diff --git a/src/imports.rs b/src/imports.rs index 2ec38d86680..84f93eaab10 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -1102,7 +1102,6 @@ impl Rewrite for UseTree { let mut result = String::with_capacity(256); let mut iter = self.path.iter().peekable(); let start_shape = shape; - //let mut indented_shape = shape; let mut newline_in_path = false; let tab_spaces = context.config.tab_spaces(); diff --git a/tests/source/issue-4746/crate.rs b/tests/source/issue-4746/crate.rs index 232eab1521c..bc70b984a53 100644 --- a/tests/source/issue-4746/crate.rs +++ b/tests/source/issue-4746/crate.rs @@ -15,56 +15,81 @@ use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfds::{ // Long imports with different sizes - based on original issue use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; -use a; +use a1; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::a; -use a; +use a2; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; -use a; +use a3; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; -use a; +use a4; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456::z1234567; -use a; +use a5; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678901234567::z1234567; -use a; +use a6; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; -use a; +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 a; +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 a; +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 a; +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 a; +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 a; +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 a; +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 a; +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 a; +use a20; diff --git a/tests/source/issue-4746/preserve.rs b/tests/source/issue-4746/preserve.rs index 7e14a319da4..ebe691fdea3 100644 --- a/tests/source/issue-4746/preserve.rs +++ b/tests/source/issue-4746/preserve.rs @@ -15,56 +15,81 @@ use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfds::{ // Long imports with different sizes - based on original issue use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; -use a; +use a1; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::a; -use a; +use a2; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; -use a; +use a3; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; -use a; +use a4; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456::z1234567; -use a; +use a5; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678901234567::z1234567; -use a; +use a6; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::asdf; -use a; +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 a; +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 a; +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 a; +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 a; +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 a; +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 a; +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 a; +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 a; +use a20; diff --git a/tests/target/issue-4746/crate.rs b/tests/target/issue-4746/crate.rs index 1d0dce69b32..2a8dfb5804f 100644 --- a/tests/target/issue-4746/crate.rs +++ b/tests/target/issue-4746/crate.rs @@ -10,53 +10,82 @@ use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfds::asdfasde use foo::{bar, baz, foo}; // Long imports with different sizes - based on original issue -use a; +use a1; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::asdf; -use a; +use a2; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::a; -use a; +use a3; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; -use a; +use a4; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; -use a; +use a5; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456:: z1234567; -use a; +use a6; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z12345678901234567::z1234567; -use a; +use a7; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::asdf; // Very long (two lines) imports -use a; +use a8; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567; -use a; +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 a; +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 a; +use a16; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::{ @@ -68,7 +97,7 @@ use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567, }; -use a; +use a17; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::{ @@ -80,7 +109,7 @@ use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567, }; -use a; +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:: @@ -89,7 +118,7 @@ use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: baz, foo }; -use a; +use a19; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::{ @@ -101,7 +130,7 @@ use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567, }; -use a; +use a20; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::{ diff --git a/tests/target/issue-4746/preserve.rs b/tests/target/issue-4746/preserve.rs index 468fd197e66..fe7fd37c2ed 100644 --- a/tests/target/issue-4746/preserve.rs +++ b/tests/target/issue-4746/preserve.rs @@ -12,46 +12,75 @@ use foo::bar; use foo::{baz, foo}; // Long imports with different sizes - based on original issue -use a; +use a1; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::asdf; -use a; +use a2; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::a; -use a; +use a3; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567; -use a; +use a4; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z12345678::z1234567; -use a; +use a5; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567890123456:: z1234567; -use a; +use a6; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z12345678901234567::z1234567; -use a; +use a7; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::asdf; // Very long (two lines) imports -use a; +use a8; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567; -use a; +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 a; +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; @@ -59,7 +88,7 @@ use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::foo; -use a; +use a16; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::{ @@ -71,7 +100,7 @@ use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567, }; -use a; +use a17; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::{ @@ -83,7 +112,7 @@ use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567, }; -use a; +use a18; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::{ @@ -95,7 +124,7 @@ use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::foo, }; -use a; +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:: @@ -107,7 +136,7 @@ use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567; -use a; +use a20; use z123::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567::z1234567:: z1234567::z1234567::baz; From ec8bf6df703e8ee6b0dcd13639d9dec2d6a32472 Mon Sep 17 00:00:00 2001 From: David Bar-On Date: Wed, 30 Nov 2022 21:56:59 +0200 Subject: [PATCH 4/4] Fix intendation when reorder_imports=false --- src/imports.rs | 8 +- tests/source/issue-4746/crate_no_reorder.rs | 66 ++++++++ .../issue-4746/{crate.rs => crate_reorder.rs} | 5 +- .../source/issue-4746/preserve_no_reorder.rs | 96 +++++++++++ .../{preserve.rs => preserve_reorder.rs} | 5 +- tests/target/issue-4746/crate_no_reorder.rs | 96 +++++++++++ .../issue-4746/{crate.rs => crate_reorder.rs} | 1 + .../target/issue-4746/preserve_no_reorder.rs | 149 ++++++++++++++++++ .../{preserve.rs => preserve_reorder.rs} | 1 + tests/target/long-use-statement-issue-3154.rs | 3 +- 10 files changed, 424 insertions(+), 6 deletions(-) create mode 100644 tests/source/issue-4746/crate_no_reorder.rs rename tests/source/issue-4746/{crate.rs => crate_reorder.rs} (97%) create mode 100644 tests/source/issue-4746/preserve_no_reorder.rs rename tests/source/issue-4746/{preserve.rs => preserve_reorder.rs} (97%) create mode 100644 tests/target/issue-4746/crate_no_reorder.rs rename tests/target/issue-4746/{crate.rs => crate_reorder.rs} (99%) create mode 100644 tests/target/issue-4746/preserve_no_reorder.rs rename tests/target/issue-4746/{preserve.rs => preserve_reorder.rs} (99%) diff --git a/src/imports.rs b/src/imports.rs index 84f93eaab10..fb0a0eede9b 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -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 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.rs b/tests/source/issue-4746/crate_reorder.rs similarity index 97% rename from tests/source/issue-4746/crate.rs rename to tests/source/issue-4746/crate_reorder.rs index bc70b984a53..27ae9903c1d 100644 --- a/tests/source/issue-4746/crate.rs +++ b/tests/source/issue-4746/crate_reorder.rs @@ -1,16 +1,17 @@ // 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, +asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, }; use foo::bar; use foo::{foo, baz}; use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfds::{ - asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, +asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, }; // Long imports with different sizes - based on original issue 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.rs b/tests/source/issue-4746/preserve_reorder.rs similarity index 97% rename from tests/source/issue-4746/preserve.rs rename to tests/source/issue-4746/preserve_reorder.rs index ebe691fdea3..f7ed2889913 100644 --- a/tests/source/issue-4746/preserve.rs +++ b/tests/source/issue-4746/preserve_reorder.rs @@ -1,16 +1,17 @@ // 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, +asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, }; use foo::bar; use foo::{foo, baz}; use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfds::{ - asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, +asdfasdefasdasdfsdfdfasdf::asdfasdasedfafasdfasdf, }; // Long imports with different sizes - based on original issue 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.rs b/tests/target/issue-4746/crate_reorder.rs similarity index 99% rename from tests/target/issue-4746/crate.rs rename to tests/target/issue-4746/crate_reorder.rs index 2a8dfb5804f..0404708b6bf 100644 --- a/tests/target/issue-4746/crate.rs +++ b/tests/target/issue-4746/crate_reorder.rs @@ -1,4 +1,5 @@ // rustfmt-imports_granularity: Crate +// rustfmt-reorder_imports: true // Long imports with reordering - from original issue use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfdsf:: 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.rs b/tests/target/issue-4746/preserve_reorder.rs similarity index 99% rename from tests/target/issue-4746/preserve.rs rename to tests/target/issue-4746/preserve_reorder.rs index fe7fd37c2ed..8cd6bc88555 100644 --- a/tests/target/issue-4746/preserve.rs +++ b/tests/target/issue-4746/preserve_reorder.rs @@ -1,4 +1,5 @@ // rustfmt-imports_granularity: Preserve +// rustfmt-reorder_imports: true // Long imports with reordering - from original issue use abaadfsasdfdsfdfas::aasdffjsioejr::abc::sdsdf::sdfsdfsdf::sdfsdfdsf:: 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;