diff --git a/src/imports.rs b/src/imports.rs index 75f0140b844..ddf86b280be 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -1125,90 +1125,107 @@ impl Rewrite for UseTree { // This does NOT format attributes and visibility or add a trailing `;`. fn rewrite_result(&self, context: &RewriteContext<'_>, mut shape: Shape) -> RewriteResult { - fn proceed( - context: &RewriteContext<'_>, - span: &Span, - shape: &Shape, - curr_segment: &UseSegment, - curr_segment_is_allow_overflow: bool, - next_segment: Option<&&UseSegment>, - ) -> Result<(String, Shape), RewriteError> { - let mut rewritten_segment = curr_segment.rewrite_result(context, shape.clone())?; - if next_segment.is_some() { - rewritten_segment.push_str("::"); - } - let reserved_room_for_brace = match next_segment.map(|s| &s.kind) { - Some(UseSegmentKind::List(_)) => "{".len(), - _ => 0, - }; - let next_shape = if matches!(&curr_segment.kind, UseSegmentKind::List(_)) { - // This is the last segment and we won't use `next_shape`. Return `shape` - // unchanged. - shape.clone() - } else if curr_segment_is_allow_overflow { - // If the segment follows `use ` or newline, force to consume the segment with - // overflow. - - let s = shape.offset_left_maybe_overflow(rewritten_segment.len()); - if s.width == 0 { - // We have to to commit current segment in this line. Make a room for next - // round. - s.add_width(reserved_room_for_brace) - } else { - s.clone() + if context.config.style_edition() >= StyleEdition::Edition2024 { + fn proceed( + context: &RewriteContext<'_>, + span: &Span, + shape: &Shape, + curr_segment: &UseSegment, + curr_segment_is_allow_overflow: bool, + next_segment: Option<&&UseSegment>, + ) -> Result<(String, Shape), RewriteError> { + let mut rewritten_segment = curr_segment.rewrite_result(context, shape.clone())?; + if next_segment.is_some() { + rewritten_segment.push_str("::"); } - } else { - let Some(ret) = shape.offset_left(rewritten_segment.len()) else { - return Err(RewriteError::ExceedsMaxWidth { - configured_width: shape.width, - span: span.clone(), - }); + let reserved_room_for_brace = match next_segment.map(|s| &s.kind) { + Some(UseSegmentKind::List(_)) => "{".len(), + _ => 0, }; - // Check that there is a room for the next "{". If not, return an error for retry - // with newline. - if ret.offset_left(reserved_room_for_brace).is_none() { - return Err(RewriteError::ExceedsMaxWidth { - configured_width: shape.width, - span: span.clone(), - }); - } - ret - }; - Ok((rewritten_segment, next_shape)) - } + let next_shape = if matches!(&curr_segment.kind, UseSegmentKind::List(_)) { + // This is the last segment and we won't use `next_shape`. Return `shape` + // unchanged. + shape.clone() + } else if curr_segment_is_allow_overflow { + // If the segment follows `use ` or newline, force to consume the segment with + // overflow. + + let s = shape.offset_left_maybe_overflow(rewritten_segment.len()); + if s.width == 0 { + // We have to to commit current segment in this line. Make a room for next + // round. + s.add_width(reserved_room_for_brace) + } else { + s.clone() + } + } else { + let Some(ret) = shape.offset_left(rewritten_segment.len()) else { + return Err(RewriteError::ExceedsMaxWidth { + configured_width: shape.width, + span: span.clone(), + }); + }; + // Check that there is a room for the next "{". If not, return an error for + // retry with newline. + if ret.offset_left(reserved_room_for_brace).is_none() { + return Err(RewriteError::ExceedsMaxWidth { + configured_width: shape.width, + span: span.clone(), + }); + } + ret + }; + Ok((rewritten_segment, next_shape)) + } - let shape_top_level = shape.clone(); - let mut result = String::with_capacity(256); - let mut is_first = true; - let mut iter = self.path.iter().peekable(); - let span = self.span(); - while let Some(segment) = iter.next() { - let allow_overflow = is_first; - is_first = false; - match proceed(context, &span, &shape, segment, allow_overflow, iter.peek()) { - Ok((rewritten_segment, next_shape)) => { - result.push_str(&rewritten_segment); - shape = next_shape; - continue; - } - Err(RewriteError::ExceedsMaxWidth { .. }) => { - // If the first `proceed()` failed with no room, retry with newline. + let shape_top_level = shape.clone(); + let mut result = String::with_capacity(256); + let mut is_first = true; + let mut iter = self.path.iter().peekable(); + let span = self.span(); + while let Some(segment) = iter.next() { + let allow_overflow = is_first; + is_first = false; + match proceed(context, &span, &shape, segment, allow_overflow, iter.peek()) { + Ok((rewritten_segment, next_shape)) => { + result.push_str(&rewritten_segment); + shape = next_shape; + continue; + } + Err(RewriteError::ExceedsMaxWidth { .. }) => { + // If the first `proceed()` failed with no room, retry with newline. + } + Err(e) => { + // Abort otherwise. + return Err(e); + } } - Err(e) => { - // Abort otherwise. - return Err(e); + result.push_str("\n"); + result.push_str(&" ".repeat(shape.indent.block_indent + 4)); + shape = shape_top_level.clone(); + let allow_overflow = true; + let (rewritten_segment, next_shape) = + proceed(context, &span, &shape, segment, allow_overflow, iter.peek())?; + result.push_str(&rewritten_segment); + shape = next_shape; + } + Ok(result) + } else { + let mut result = String::with_capacity(256); + let mut iter = self.path.iter().peekable(); + while let Some(segment) = iter.next() { + let segment_str = segment.rewrite_result(context, shape)?; + result.push_str(&segment_str); + if iter.peek().is_some() { + result.push_str("::"); + // 2 = "::" + shape = shape + .offset_left(2 + segment_str.len()) + .max_width_error(shape.width, self.span())?; } } - result.push_str("\n"); - result.push_str(&" ".repeat(shape.indent.block_indent + 4)); - shape = shape_top_level.clone(); - let allow_overflow = true; - let (rewritten_segment, next_shape) = - proceed(context, &span, &shape, segment, allow_overflow, iter.peek())?; - result.push_str(&rewritten_segment); - shape = next_shape; + Ok(result) } - Ok(result) } } diff --git a/tests/source/5131_crate.rs b/tests/source/5131_crate.rs index 73277c6cf88..4e55a6eb287 100644 --- a/tests/source/5131_crate.rs +++ b/tests/source/5131_crate.rs @@ -13,7 +13,6 @@ use qux::h; use qux::h as h2; use qux::i; - mod indent4 { use column_____________________________________________________________________________________102::{ Foo, diff --git a/tests/source/5131_crate_2024.rs b/tests/source/5131_crate_2024.rs new file mode 100644 index 00000000000..d7e1ed64ebe --- /dev/null +++ b/tests/source/5131_crate_2024.rs @@ -0,0 +1,166 @@ +// rustfmt-imports_granularity: Crate +// rustfmt-style_edition: 2024 + +use foo::a; +use foo::a; +use foo::b; +use foo::b as b2; +use foo::b::f; +use foo::b::g; +use foo::b::g as g2; +use foo::c; +use foo::d::e; +use qux::h; +use qux::h as h2; +use qux::i; + + +mod indent4 { + use column_____________________________________________________________________________________102::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use column_______________________________________________________________________________096::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use column_________________________________________________________________________090::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::c102::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; +} + +use smithay::{ + backend::renderer::element::{ + default_primary_scanout_output_compare, utils::select_dmabuf_feedback, RenderElementStates, + }, + delegate_compositor, delegate_data_control, delegate_data_device, delegate_fractional_scale, + delegate_input_method_manager, delegate_keyboard_shortcuts_inhibit, delegate_layer_shell, + delegate_output, delegate_pointer_constraints, delegate_pointer_gestures, + delegate_presentation, delegate_primary_selection, delegate_relative_pointer, delegate_seat, + delegate_security_context, delegate_shm, delegate_tablet_manager, delegate_text_input_manager, + delegate_viewporter, delegate_virtual_keyboard_manager, delegate_xdg_activation, + delegate_xdg_decoration, delegate_xdg_shell, + desktop::{ + space::SpaceElement, + utils::{ + surface_presentation_feedback_flags_from_states, surface_primary_scanout_output, + update_surface_primary_scanout_output, OutputPresentationFeedback, + }, + PopupKind, PopupManager, Space, + }, + input::{ + keyboard::{Keysym, LedState, XkbConfig}, + pointer::{CursorImageStatus, PointerHandle}, + Seat, SeatHandler, SeatState, + }, + output::Output, + reexports::{ + calloop::{generic::Generic, Interest, LoopHandle, Mode, PostAction}, + wayland_protocols::xdg::decoration::{ + self as xdg_decoration, + zv1::server::zxdg_toplevel_decoration_v1::Mode as DecorationMode, + }, + wayland_server::{ + backend::{ClientData, ClientId, DisconnectReason}, + protocol::{wl_data_source::WlDataSource, wl_surface::WlSurface}, + Display, DisplayHandle, Resource, + }, + }, + utils::{Clock, Monotonic, Rectangle}, + wayland::{ + compositor::{get_parent, with_states, CompositorClientState, CompositorState}, + dmabuf::DmabufFeedback, + fractional_scale::{ + with_fractional_scale, FractionalScaleHandler, FractionalScaleManagerState, + }, + input_method::{InputMethodHandler, InputMethodManagerState, PopupSurface}, + keyboard_shortcuts_inhibit::{ + KeyboardShortcutsInhibitHandler, KeyboardShortcutsInhibitState, + KeyboardShortcutsInhibitor, + }, + output::{OutputHandler, OutputManagerState}, + pointer_constraints::{ + with_pointer_constraint, PointerConstraintsHandler, PointerConstraintsState, + }, + pointer_gestures::PointerGesturesState, + presentation::PresentationState, + relative_pointer::RelativePointerManagerState, + seat::WaylandFocus, + security_context::{ + SecurityContext, SecurityContextHandler, SecurityContextListenerSource, + SecurityContextState, + }, + selection::data_device::{ + set_data_device_focus, ClientDndGrabHandler, DataDeviceHandler, DataDeviceState, + ServerDndGrabHandler, + }, + selection::{ + primary_selection::{ + set_primary_focus, PrimarySelectionHandler, PrimarySelectionState, + }, + wlr_data_control::{DataControlHandler, DataControlState}, + SelectionHandler, + }, + shell::{ + wlr_layer::WlrLayerShellState, + xdg::{ + decoration::{XdgDecorationHandler, XdgDecorationState}, + ToplevelSurface, XdgShellState, XdgToplevelSurfaceData, + }, + }, + shm::{ShmHandler, ShmState}, + socket::ListeningSocketSource, + tablet_manager::{TabletManagerState, TabletSeatTrait}, + text_input::TextInputManagerState, + viewporter::ViewporterState, + virtual_keyboard::VirtualKeyboardManagerState, + xdg_activation::{ + XdgActivationHandler, XdgActivationState, XdgActivationToken, XdgActivationTokenData, + }, + xdg_foreign::{XdgForeignHandler, XdgForeignState}, + }, +}; diff --git a/tests/source/5131_module_2024.rs b/tests/source/5131_module_2024.rs new file mode 100644 index 00000000000..319e735b3f8 --- /dev/null +++ b/tests/source/5131_module_2024.rs @@ -0,0 +1,219 @@ +// rustfmt-imports_granularity: Module +// rustfmt-style_edition: 2024 + +#![allow(dead_code)] + +mod a { + pub mod b { + pub struct Data { + pub a: i32, + } + } + + use crate::a::b::Data; + use crate::a::b::Data as Data2; + + pub fn data(a: i32) -> Data { + Data { a } + } + + pub fn data2(a: i32) -> Data2 { + Data2 { a } + } + + #[cfg(test)] + mod tests { + use super::*; + + #[test] + pub fn test() { + data(1); + data2(1); + } + } +} + +mod indent4 { + use column_____________________________________________________________________________________102::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use column_______________________________________________________________________________096::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use column_________________________________________________________________________090::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::c102::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + // Check that the behavior when "{" exceeds the max column. + // + // Note that `shape.offset_left(4)?.sub_width(1)?;` in + // `rewrite_reorderable_or_regroupable_items()` replaces the max column 100 by 99. + + use x::column______________________________________________________________________________098::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use x::column__Only_the_last_one_wraps_due_to_brace_______________________________________097::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use x::column_____________________________________________________________________________096::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + // Test for top-level `UseSegmentKind::List`. + use { + a, + column_____________________________________________________________________________________102, + }; +} + +use smithay::{ + backend::renderer::element::{ + default_primary_scanout_output_compare, utils::select_dmabuf_feedback, RenderElementStates, + }, + delegate_compositor, delegate_data_control, delegate_data_device, delegate_fractional_scale, + delegate_input_method_manager, delegate_keyboard_shortcuts_inhibit, delegate_layer_shell, + delegate_output, delegate_pointer_constraints, delegate_pointer_gestures, + delegate_presentation, delegate_primary_selection, delegate_relative_pointer, delegate_seat, + delegate_security_context, delegate_shm, delegate_tablet_manager, delegate_text_input_manager, + delegate_viewporter, delegate_virtual_keyboard_manager, delegate_xdg_activation, + delegate_xdg_decoration, delegate_xdg_shell, + desktop::{ + space::SpaceElement, + utils::{ + surface_presentation_feedback_flags_from_states, surface_primary_scanout_output, + update_surface_primary_scanout_output, OutputPresentationFeedback, + }, + PopupKind, PopupManager, Space, + }, + input::{ + keyboard::{Keysym, LedState, XkbConfig}, + pointer::{CursorImageStatus, PointerHandle}, + Seat, SeatHandler, SeatState, + }, + output::Output, + reexports::{ + calloop::{generic::Generic, Interest, LoopHandle, Mode, PostAction}, + wayland_protocols::xdg::decoration::{ + self as xdg_decoration, + zv1::server::zxdg_toplevel_decoration_v1::Mode as DecorationMode, + }, + wayland_server::{ + backend::{ClientData, ClientId, DisconnectReason}, + protocol::{wl_data_source::WlDataSource, wl_surface::WlSurface}, + Display, DisplayHandle, Resource, + }, + }, + utils::{Clock, Monotonic, Rectangle}, + wayland::{ + compositor::{get_parent, with_states, CompositorClientState, CompositorState}, + dmabuf::DmabufFeedback, + fractional_scale::{ + with_fractional_scale, FractionalScaleHandler, FractionalScaleManagerState, + }, + input_method::{InputMethodHandler, InputMethodManagerState, PopupSurface}, + keyboard_shortcuts_inhibit::{ + KeyboardShortcutsInhibitHandler, KeyboardShortcutsInhibitState, + KeyboardShortcutsInhibitor, + }, + output::{OutputHandler, OutputManagerState}, + pointer_constraints::{ + with_pointer_constraint, PointerConstraintsHandler, PointerConstraintsState, + }, + pointer_gestures::PointerGesturesState, + presentation::PresentationState, + relative_pointer::RelativePointerManagerState, + seat::WaylandFocus, + security_context::{ + SecurityContext, SecurityContextHandler, SecurityContextListenerSource, + SecurityContextState, + }, + selection::data_device::{ + set_data_device_focus, ClientDndGrabHandler, DataDeviceHandler, DataDeviceState, + ServerDndGrabHandler, + }, + selection::{ + primary_selection::{ + set_primary_focus, PrimarySelectionHandler, PrimarySelectionState, + }, + wlr_data_control::{DataControlHandler, DataControlState}, + SelectionHandler, + }, + shell::{ + wlr_layer::WlrLayerShellState, + xdg::{ + decoration::{XdgDecorationHandler, XdgDecorationState}, + ToplevelSurface, XdgShellState, XdgToplevelSurfaceData, + }, + }, + shm::{ShmHandler, ShmState}, + socket::ListeningSocketSource, + tablet_manager::{TabletManagerState, TabletSeatTrait}, + text_input::TextInputManagerState, + viewporter::ViewporterState, + virtual_keyboard::VirtualKeyboardManagerState, + xdg_activation::{ + XdgActivationHandler, XdgActivationState, XdgActivationToken, XdgActivationTokenData, + }, + xdg_foreign::{XdgForeignHandler, XdgForeignState}, + }, +}; diff --git a/tests/source/5131_one_2024.rs b/tests/source/5131_one_2024.rs new file mode 100644 index 00000000000..c981c1bfca0 --- /dev/null +++ b/tests/source/5131_one_2024.rs @@ -0,0 +1,166 @@ +// rustfmt-imports_granularity: One +// rustfmt-style_edition: 2024 + +pub use foo::x; +pub use foo::x as x2; +pub use foo::y; +use bar::a; +use bar::b; +use bar::b::f; +use bar::b::f as f2; +use bar::b::g; +use bar::c; +use bar::d::e; +use bar::d::e as e2; +use qux::h; +use qux::i; + +mod indent4 { + use column_____________________________________________________________________________________102::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use column_______________________________________________________________________________096::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use column_________________________________________________________________________090::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::c102::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, + }; +} + +use smithay::{ + backend::renderer::element::{ + default_primary_scanout_output_compare, utils::select_dmabuf_feedback, RenderElementStates, + }, + delegate_compositor, delegate_data_control, delegate_data_device, delegate_fractional_scale, + delegate_input_method_manager, delegate_keyboard_shortcuts_inhibit, delegate_layer_shell, + delegate_output, delegate_pointer_constraints, delegate_pointer_gestures, + delegate_presentation, delegate_primary_selection, delegate_relative_pointer, delegate_seat, + delegate_security_context, delegate_shm, delegate_tablet_manager, delegate_text_input_manager, + delegate_viewporter, delegate_virtual_keyboard_manager, delegate_xdg_activation, + delegate_xdg_decoration, delegate_xdg_shell, + desktop::{ + space::SpaceElement, + utils::{ + surface_presentation_feedback_flags_from_states, surface_primary_scanout_output, + update_surface_primary_scanout_output, OutputPresentationFeedback, + }, + PopupKind, PopupManager, Space, + }, + input::{ + keyboard::{Keysym, LedState, XkbConfig}, + pointer::{CursorImageStatus, PointerHandle}, + Seat, SeatHandler, SeatState, + }, + output::Output, + reexports::{ + calloop::{generic::Generic, Interest, LoopHandle, Mode, PostAction}, + wayland_protocols::xdg::decoration::{ + self as xdg_decoration, + zv1::server::zxdg_toplevel_decoration_v1::Mode as DecorationMode, + }, + wayland_server::{ + backend::{ClientData, ClientId, DisconnectReason}, + protocol::{wl_data_source::WlDataSource, wl_surface::WlSurface}, + Display, DisplayHandle, Resource, + }, + }, + utils::{Clock, Monotonic, Rectangle}, + wayland::{ + compositor::{get_parent, with_states, CompositorClientState, CompositorState}, + dmabuf::DmabufFeedback, + fractional_scale::{ + with_fractional_scale, FractionalScaleHandler, FractionalScaleManagerState, + }, + input_method::{InputMethodHandler, InputMethodManagerState, PopupSurface}, + keyboard_shortcuts_inhibit::{ + KeyboardShortcutsInhibitHandler, KeyboardShortcutsInhibitState, + KeyboardShortcutsInhibitor, + }, + output::{OutputHandler, OutputManagerState}, + pointer_constraints::{ + with_pointer_constraint, PointerConstraintsHandler, PointerConstraintsState, + }, + pointer_gestures::PointerGesturesState, + presentation::PresentationState, + relative_pointer::RelativePointerManagerState, + seat::WaylandFocus, + security_context::{ + SecurityContext, SecurityContextHandler, SecurityContextListenerSource, + SecurityContextState, + }, + selection::data_device::{ + set_data_device_focus, ClientDndGrabHandler, DataDeviceHandler, DataDeviceState, + ServerDndGrabHandler, + }, + selection::{ + primary_selection::{ + set_primary_focus, PrimarySelectionHandler, PrimarySelectionState, + }, + wlr_data_control::{DataControlHandler, DataControlState}, + SelectionHandler, + }, + shell::{ + wlr_layer::WlrLayerShellState, + xdg::{ + decoration::{XdgDecorationHandler, XdgDecorationState}, + ToplevelSurface, XdgShellState, XdgToplevelSurfaceData, + }, + }, + shm::{ShmHandler, ShmState}, + socket::ListeningSocketSource, + tablet_manager::{TabletManagerState, TabletSeatTrait}, + text_input::TextInputManagerState, + viewporter::ViewporterState, + virtual_keyboard::VirtualKeyboardManagerState, + xdg_activation::{ + XdgActivationHandler, XdgActivationState, XdgActivationToken, XdgActivationTokenData, + }, + xdg_foreign::{XdgForeignHandler, XdgForeignState}, + }, +}; diff --git a/tests/target/5131_crate.rs b/tests/target/5131_crate.rs index 718485af17d..967fc9eed40 100644 --- a/tests/target/5131_crate.rs +++ b/tests/target/5131_crate.rs @@ -10,8 +10,11 @@ use qux::{h, h as h2, i}; mod indent4 { use column_____________________________________________________________________________________102::{ - bar::{baz::Baz, Bar, Bar2}, - Foo, Foo2, + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; use column_______________________________________________________________________________096::{ @@ -24,10 +27,12 @@ mod indent4 { Foo, Foo2, }; - use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: - c102::{ - bar::{baz::Baz, Bar, Bar2}, - Foo, Foo2, + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::c102::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::{ diff --git a/tests/target/5131_crate_2024.rs b/tests/target/5131_crate_2024.rs new file mode 100644 index 00000000000..5a3503ce2dc --- /dev/null +++ b/tests/target/5131_crate_2024.rs @@ -0,0 +1,140 @@ +// rustfmt-imports_granularity: Crate +// rustfmt-style_edition: 2024 + +use foo::{ + a, b, b as b2, + b::{f, g, g as g2}, + c, + d::e, +}; +use qux::{h, h as h2, i}; + +mod indent4 { + use column_____________________________________________________________________________________102::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use column_______________________________________________________________________________096::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use column_________________________________________________________________________090::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: + c102::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; +} + +use smithay::{ + backend::renderer::element::{ + default_primary_scanout_output_compare, utils::select_dmabuf_feedback, RenderElementStates, + }, + delegate_compositor, delegate_data_control, delegate_data_device, delegate_fractional_scale, + delegate_input_method_manager, delegate_keyboard_shortcuts_inhibit, delegate_layer_shell, + delegate_output, delegate_pointer_constraints, delegate_pointer_gestures, + delegate_presentation, delegate_primary_selection, delegate_relative_pointer, delegate_seat, + delegate_security_context, delegate_shm, delegate_tablet_manager, delegate_text_input_manager, + delegate_viewporter, delegate_virtual_keyboard_manager, delegate_xdg_activation, + delegate_xdg_decoration, delegate_xdg_shell, + desktop::{ + space::SpaceElement, + utils::{ + surface_presentation_feedback_flags_from_states, surface_primary_scanout_output, + update_surface_primary_scanout_output, OutputPresentationFeedback, + }, + PopupKind, PopupManager, Space, + }, + input::{ + keyboard::{Keysym, LedState, XkbConfig}, + pointer::{CursorImageStatus, PointerHandle}, + Seat, SeatHandler, SeatState, + }, + output::Output, + reexports::{ + calloop::{generic::Generic, Interest, LoopHandle, Mode, PostAction}, + wayland_protocols::xdg::decoration::{ + self as xdg_decoration, + zv1::server::zxdg_toplevel_decoration_v1::Mode as DecorationMode, + }, + wayland_server::{ + backend::{ClientData, ClientId, DisconnectReason}, + protocol::{wl_data_source::WlDataSource, wl_surface::WlSurface}, + Display, DisplayHandle, Resource, + }, + }, + utils::{Clock, Monotonic, Rectangle}, + wayland::{ + compositor::{get_parent, with_states, CompositorClientState, CompositorState}, + dmabuf::DmabufFeedback, + fractional_scale::{ + with_fractional_scale, FractionalScaleHandler, FractionalScaleManagerState, + }, + input_method::{InputMethodHandler, InputMethodManagerState, PopupSurface}, + keyboard_shortcuts_inhibit::{ + KeyboardShortcutsInhibitHandler, KeyboardShortcutsInhibitState, + KeyboardShortcutsInhibitor, + }, + output::{OutputHandler, OutputManagerState}, + pointer_constraints::{ + with_pointer_constraint, PointerConstraintsHandler, PointerConstraintsState, + }, + pointer_gestures::PointerGesturesState, + presentation::PresentationState, + relative_pointer::RelativePointerManagerState, + seat::WaylandFocus, + security_context::{ + SecurityContext, SecurityContextHandler, SecurityContextListenerSource, + SecurityContextState, + }, + selection::{ + data_device::{ + set_data_device_focus, ClientDndGrabHandler, DataDeviceHandler, DataDeviceState, + ServerDndGrabHandler, + }, + primary_selection::{ + set_primary_focus, PrimarySelectionHandler, PrimarySelectionState, + }, + wlr_data_control::{DataControlHandler, DataControlState}, + SelectionHandler, + }, + shell::{ + wlr_layer::WlrLayerShellState, + xdg::{ + decoration::{XdgDecorationHandler, XdgDecorationState}, + ToplevelSurface, XdgShellState, XdgToplevelSurfaceData, + }, + }, + shm::{ShmHandler, ShmState}, + socket::ListeningSocketSource, + tablet_manager::{TabletManagerState, TabletSeatTrait}, + text_input::TextInputManagerState, + viewporter::ViewporterState, + virtual_keyboard::VirtualKeyboardManagerState, + xdg_activation::{ + XdgActivationHandler, XdgActivationState, XdgActivationToken, XdgActivationTokenData, + }, + xdg_foreign::{XdgForeignHandler, XdgForeignState}, + }, +}; diff --git a/tests/target/5131_module.rs b/tests/target/5131_module.rs index de8568ddeae..5988e2e8163 100644 --- a/tests/target/5131_module.rs +++ b/tests/target/5131_module.rs @@ -32,53 +32,52 @@ mod a { } mod indent4 { - use column_____________________________________________________________________________________102:: - bar::baz::Baz; - use column_____________________________________________________________________________________102:: - bar::{Bar, Bar2}; use column_____________________________________________________________________________________102::{ - Foo, Foo2, + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; - use column_______________________________________________________________________________096:: - bar::baz::Baz; - use column_______________________________________________________________________________096:: - bar::{Bar, Bar2}; use column_______________________________________________________________________________096::{ - Foo, Foo2, + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; - use column_________________________________________________________________________090::bar:: - baz::Baz; - use column_________________________________________________________________________090::bar::{ - Bar, Bar2, - }; use column_________________________________________________________________________090::{ - Foo, Foo2, + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; - use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: - c102::bar::baz::Baz; - use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: - c102::bar::{Bar, Bar2}; - use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: - c102::{Foo, Foo2}; - - use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: - bar::baz::Baz; - use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: - bar::{Bar, Bar2}; - use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::{ - Foo, Foo2, + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::c102::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; - use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::bar:: - baz::Baz; - use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::bar::{ - Bar, Bar2, + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::{ - Foo, Foo2, + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::bar::baz::Baz; @@ -92,33 +91,28 @@ mod indent4 { // Note that `shape.offset_left(4)?.sub_width(1)?;` in // `rewrite_reorderable_or_regroupable_items()` replaces the max column 100 by 99. - use x:: - column______________________________________________________________________________098:: - bar::baz::Baz; - use x:: - column______________________________________________________________________________098:: - bar::{Bar, Bar2}; - use x:: - column______________________________________________________________________________098::{ - Foo, Foo2, + use x::column______________________________________________________________________________098::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; - use x::column__Only_the_last_one_wraps_due_to_brace_______________________________________097:: - bar::baz::Baz; - use x::column__Only_the_last_one_wraps_due_to_brace_______________________________________097:: - bar::{Bar, Bar2}; - use x:: - column__Only_the_last_one_wraps_due_to_brace_______________________________________097::{ - Foo, Foo2, + use x::column__Only_the_last_one_wraps_due_to_brace_______________________________________097::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; - use x::column_____________________________________________________________________________096:: - bar::baz::Baz; - use x::column_____________________________________________________________________________096:: - bar::{Bar, Bar2}; - use x:: - column_____________________________________________________________________________096::{ - Foo, Foo2, + use x::column_____________________________________________________________________________096::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; // Test for top-level `UseSegmentKind::List`. @@ -128,75 +122,10 @@ mod indent4 { }; } -use smithay::backend::renderer::element::utils::select_dmabuf_feedback; -use smithay::backend::renderer::element::{ - default_primary_scanout_output_compare, RenderElementStates, -}; -use smithay::desktop::space::SpaceElement; -use smithay::desktop::utils::{ - surface_presentation_feedback_flags_from_states, surface_primary_scanout_output, - update_surface_primary_scanout_output, OutputPresentationFeedback, -}; -use smithay::desktop::{PopupKind, PopupManager, Space}; -use smithay::input::keyboard::{Keysym, LedState, XkbConfig}; -use smithay::input::pointer::{CursorImageStatus, PointerHandle}; -use smithay::input::{Seat, SeatHandler, SeatState}; -use smithay::output::Output; -use smithay::reexports::calloop::generic::Generic; -use smithay::reexports::calloop::{Interest, LoopHandle, Mode, PostAction}; -use smithay::reexports::wayland_protocols::xdg::decoration::zv1::server:: - zxdg_toplevel_decoration_v1::Mode as DecorationMode; -use smithay::reexports::wayland_protocols::xdg::decoration::{self as xdg_decoration}; -use smithay::reexports::wayland_server::backend::{ClientData, ClientId, DisconnectReason}; -use smithay::reexports::wayland_server::protocol::wl_data_source::WlDataSource; -use smithay::reexports::wayland_server::protocol::wl_surface::WlSurface; -use smithay::reexports::wayland_server::{Display, DisplayHandle, Resource}; -use smithay::utils::{Clock, Monotonic, Rectangle}; -use smithay::wayland::compositor::{ - get_parent, with_states, CompositorClientState, CompositorState, -}; -use smithay::wayland::dmabuf::DmabufFeedback; -use smithay::wayland::fractional_scale::{ - with_fractional_scale, FractionalScaleHandler, FractionalScaleManagerState, -}; -use smithay::wayland::input_method::{InputMethodHandler, InputMethodManagerState, PopupSurface}; -use smithay::wayland::keyboard_shortcuts_inhibit::{ - KeyboardShortcutsInhibitHandler, KeyboardShortcutsInhibitState, KeyboardShortcutsInhibitor, -}; -use smithay::wayland::output::{OutputHandler, OutputManagerState}; -use smithay::wayland::pointer_constraints::{ - with_pointer_constraint, PointerConstraintsHandler, PointerConstraintsState, -}; -use smithay::wayland::pointer_gestures::PointerGesturesState; -use smithay::wayland::presentation::PresentationState; -use smithay::wayland::relative_pointer::RelativePointerManagerState; -use smithay::wayland::seat::WaylandFocus; -use smithay::wayland::security_context::{ - SecurityContext, SecurityContextHandler, SecurityContextListenerSource, SecurityContextState, -}; -use smithay::wayland::selection::data_device::{ - set_data_device_focus, ClientDndGrabHandler, DataDeviceHandler, DataDeviceState, - ServerDndGrabHandler, -}; -use smithay::wayland::selection::primary_selection::{ - set_primary_focus, PrimarySelectionHandler, PrimarySelectionState, -}; -use smithay::wayland::selection::wlr_data_control::{DataControlHandler, DataControlState}; -use smithay::wayland::selection::SelectionHandler; -use smithay::wayland::shell::wlr_layer::WlrLayerShellState; -use smithay::wayland::shell::xdg::decoration::{XdgDecorationHandler, XdgDecorationState}; -use smithay::wayland::shell::xdg::{ToplevelSurface, XdgShellState, XdgToplevelSurfaceData}; -use smithay::wayland::shm::{ShmHandler, ShmState}; -use smithay::wayland::socket::ListeningSocketSource; -use smithay::wayland::tablet_manager::{TabletManagerState, TabletSeatTrait}; -use smithay::wayland::text_input::TextInputManagerState; -use smithay::wayland::viewporter::ViewporterState; -use smithay::wayland::virtual_keyboard::VirtualKeyboardManagerState; -use smithay::wayland::xdg_activation::{ - XdgActivationHandler, XdgActivationState, XdgActivationToken, XdgActivationTokenData, -}; -use smithay::wayland::xdg_foreign::{XdgForeignHandler, XdgForeignState}; use smithay::{ + backend::renderer::element::{ + default_primary_scanout_output_compare, utils::select_dmabuf_feedback, RenderElementStates, + }, delegate_compositor, delegate_data_control, delegate_data_device, delegate_fractional_scale, delegate_input_method_manager, delegate_keyboard_shortcuts_inhibit, delegate_layer_shell, delegate_output, delegate_pointer_constraints, delegate_pointer_gestures, @@ -204,4 +133,83 @@ use smithay::{ delegate_security_context, delegate_shm, delegate_tablet_manager, delegate_text_input_manager, delegate_viewporter, delegate_virtual_keyboard_manager, delegate_xdg_activation, delegate_xdg_decoration, delegate_xdg_shell, + desktop::{ + space::SpaceElement, + utils::{ + surface_presentation_feedback_flags_from_states, surface_primary_scanout_output, + update_surface_primary_scanout_output, OutputPresentationFeedback, + }, + PopupKind, PopupManager, Space, + }, + input::{ + keyboard::{Keysym, LedState, XkbConfig}, + pointer::{CursorImageStatus, PointerHandle}, + Seat, SeatHandler, SeatState, + }, + output::Output, + reexports::{ + calloop::{generic::Generic, Interest, LoopHandle, Mode, PostAction}, + wayland_protocols::xdg::decoration::{ + self as xdg_decoration, + zv1::server::zxdg_toplevel_decoration_v1::Mode as DecorationMode, + }, + wayland_server::{ + backend::{ClientData, ClientId, DisconnectReason}, + protocol::{wl_data_source::WlDataSource, wl_surface::WlSurface}, + Display, DisplayHandle, Resource, + }, + }, + utils::{Clock, Monotonic, Rectangle}, + wayland::{ + compositor::{get_parent, with_states, CompositorClientState, CompositorState}, + dmabuf::DmabufFeedback, + fractional_scale::{ + with_fractional_scale, FractionalScaleHandler, FractionalScaleManagerState, + }, + input_method::{InputMethodHandler, InputMethodManagerState, PopupSurface}, + keyboard_shortcuts_inhibit::{ + KeyboardShortcutsInhibitHandler, KeyboardShortcutsInhibitState, + KeyboardShortcutsInhibitor, + }, + output::{OutputHandler, OutputManagerState}, + pointer_constraints::{ + with_pointer_constraint, PointerConstraintsHandler, PointerConstraintsState, + }, + pointer_gestures::PointerGesturesState, + presentation::PresentationState, + relative_pointer::RelativePointerManagerState, + seat::WaylandFocus, + security_context::{ + SecurityContext, SecurityContextHandler, SecurityContextListenerSource, + SecurityContextState, + }, + selection::data_device::{ + set_data_device_focus, ClientDndGrabHandler, DataDeviceHandler, DataDeviceState, + ServerDndGrabHandler, + }, + selection::{ + primary_selection::{ + set_primary_focus, PrimarySelectionHandler, PrimarySelectionState, + }, + wlr_data_control::{DataControlHandler, DataControlState}, + SelectionHandler, + }, + shell::{ + wlr_layer::WlrLayerShellState, + xdg::{ + decoration::{XdgDecorationHandler, XdgDecorationState}, + ToplevelSurface, XdgShellState, XdgToplevelSurfaceData, + }, + }, + shm::{ShmHandler, ShmState}, + socket::ListeningSocketSource, + tablet_manager::{TabletManagerState, TabletSeatTrait}, + text_input::TextInputManagerState, + viewporter::ViewporterState, + virtual_keyboard::VirtualKeyboardManagerState, + xdg_activation::{ + XdgActivationHandler, XdgActivationState, XdgActivationToken, XdgActivationTokenData, + }, + xdg_foreign::{XdgForeignHandler, XdgForeignState}, + }, }; diff --git a/tests/target/5131_module_2024.rs b/tests/target/5131_module_2024.rs new file mode 100644 index 00000000000..6315a60bab2 --- /dev/null +++ b/tests/target/5131_module_2024.rs @@ -0,0 +1,208 @@ +// rustfmt-imports_granularity: Module +// rustfmt-style_edition: 2024 + +#![allow(dead_code)] + +mod a { + pub mod b { + pub struct Data { + pub a: i32, + } + } + + use crate::a::b::{Data, Data as Data2}; + + pub fn data(a: i32) -> Data { + Data { a } + } + + pub fn data2(a: i32) -> Data2 { + Data2 { a } + } + + #[cfg(test)] + mod tests { + use super::*; + + #[test] + pub fn test() { + data(1); + data2(1); + } + } +} + +mod indent4 { + use column_____________________________________________________________________________________102:: + bar::baz::Baz; + use column_____________________________________________________________________________________102:: + bar::{Bar, Bar2}; + use column_____________________________________________________________________________________102::{ + Foo, Foo2, + }; + + use column_______________________________________________________________________________096:: + bar::baz::Baz; + use column_______________________________________________________________________________096:: + bar::{Bar, Bar2}; + use column_______________________________________________________________________________096::{ + Foo, Foo2, + }; + + use column_________________________________________________________________________090::bar:: + baz::Baz; + use column_________________________________________________________________________090::bar::{ + Bar, Bar2, + }; + use column_________________________________________________________________________090::{ + Foo, Foo2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: + c102::bar::baz::Baz; + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: + c102::bar::{Bar, Bar2}; + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: + c102::{Foo, Foo2}; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: + bar::baz::Baz; + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: + bar::{Bar, Bar2}; + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::{ + Foo, Foo2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::bar:: + baz::Baz; + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::bar::{ + Bar, Bar2, + }; + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::{ + Foo, Foo2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::bar::baz::Baz; + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::bar::{ + Bar, Bar2, + }; + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::{Foo, Foo2}; + + // Check that the behavior when "{" exceeds the max column. + // + // Note that `shape.offset_left(4)?.sub_width(1)?;` in + // `rewrite_reorderable_or_regroupable_items()` replaces the max column 100 by 99. + + use x:: + column______________________________________________________________________________098:: + bar::baz::Baz; + use x:: + column______________________________________________________________________________098:: + bar::{Bar, Bar2}; + use x:: + column______________________________________________________________________________098::{ + Foo, Foo2, + }; + + use x::column__Only_the_last_one_wraps_due_to_brace_______________________________________097:: + bar::baz::Baz; + use x::column__Only_the_last_one_wraps_due_to_brace_______________________________________097:: + bar::{Bar, Bar2}; + use x:: + column__Only_the_last_one_wraps_due_to_brace_______________________________________097::{ + Foo, Foo2, + }; + + use x::column_____________________________________________________________________________096:: + bar::baz::Baz; + use x::column_____________________________________________________________________________096:: + bar::{Bar, Bar2}; + use x:: + column_____________________________________________________________________________096::{ + Foo, Foo2, + }; + + // Test for top-level `UseSegmentKind::List`. + use { + a, + column_____________________________________________________________________________________102, + }; +} + +use smithay::backend::renderer::element::utils::select_dmabuf_feedback; +use smithay::backend::renderer::element::{ + default_primary_scanout_output_compare, RenderElementStates, +}; +use smithay::desktop::space::SpaceElement; +use smithay::desktop::utils::{ + surface_presentation_feedback_flags_from_states, surface_primary_scanout_output, + update_surface_primary_scanout_output, OutputPresentationFeedback, +}; +use smithay::desktop::{PopupKind, PopupManager, Space}; +use smithay::input::keyboard::{Keysym, LedState, XkbConfig}; +use smithay::input::pointer::{CursorImageStatus, PointerHandle}; +use smithay::input::{Seat, SeatHandler, SeatState}; +use smithay::output::Output; +use smithay::reexports::calloop::generic::Generic; +use smithay::reexports::calloop::{Interest, LoopHandle, Mode, PostAction}; +use smithay::reexports::wayland_protocols::xdg::decoration::zv1::server:: + zxdg_toplevel_decoration_v1::Mode as DecorationMode; +use smithay::reexports::wayland_protocols::xdg::decoration::{self as xdg_decoration}; +use smithay::reexports::wayland_server::backend::{ClientData, ClientId, DisconnectReason}; +use smithay::reexports::wayland_server::protocol::wl_data_source::WlDataSource; +use smithay::reexports::wayland_server::protocol::wl_surface::WlSurface; +use smithay::reexports::wayland_server::{Display, DisplayHandle, Resource}; +use smithay::utils::{Clock, Monotonic, Rectangle}; +use smithay::wayland::compositor::{ + get_parent, with_states, CompositorClientState, CompositorState, +}; +use smithay::wayland::dmabuf::DmabufFeedback; +use smithay::wayland::fractional_scale::{ + with_fractional_scale, FractionalScaleHandler, FractionalScaleManagerState, +}; +use smithay::wayland::input_method::{InputMethodHandler, InputMethodManagerState, PopupSurface}; +use smithay::wayland::keyboard_shortcuts_inhibit::{ + KeyboardShortcutsInhibitHandler, KeyboardShortcutsInhibitState, KeyboardShortcutsInhibitor, +}; +use smithay::wayland::output::{OutputHandler, OutputManagerState}; +use smithay::wayland::pointer_constraints::{ + with_pointer_constraint, PointerConstraintsHandler, PointerConstraintsState, +}; +use smithay::wayland::pointer_gestures::PointerGesturesState; +use smithay::wayland::presentation::PresentationState; +use smithay::wayland::relative_pointer::RelativePointerManagerState; +use smithay::wayland::seat::WaylandFocus; +use smithay::wayland::security_context::{ + SecurityContext, SecurityContextHandler, SecurityContextListenerSource, SecurityContextState, +}; +use smithay::wayland::selection::data_device::{ + set_data_device_focus, ClientDndGrabHandler, DataDeviceHandler, DataDeviceState, + ServerDndGrabHandler, +}; +use smithay::wayland::selection::primary_selection::{ + set_primary_focus, PrimarySelectionHandler, PrimarySelectionState, +}; +use smithay::wayland::selection::wlr_data_control::{DataControlHandler, DataControlState}; +use smithay::wayland::selection::SelectionHandler; +use smithay::wayland::shell::wlr_layer::WlrLayerShellState; +use smithay::wayland::shell::xdg::decoration::{XdgDecorationHandler, XdgDecorationState}; +use smithay::wayland::shell::xdg::{ToplevelSurface, XdgShellState, XdgToplevelSurfaceData}; +use smithay::wayland::shm::{ShmHandler, ShmState}; +use smithay::wayland::socket::ListeningSocketSource; +use smithay::wayland::tablet_manager::{TabletManagerState, TabletSeatTrait}; +use smithay::wayland::text_input::TextInputManagerState; +use smithay::wayland::viewporter::ViewporterState; +use smithay::wayland::virtual_keyboard::VirtualKeyboardManagerState; +use smithay::wayland::xdg_activation::{ + XdgActivationHandler, XdgActivationState, XdgActivationToken, XdgActivationTokenData, +}; +use smithay::wayland::xdg_foreign::{XdgForeignHandler, XdgForeignState}; +use smithay::{ + delegate_compositor, delegate_data_control, delegate_data_device, delegate_fractional_scale, + delegate_input_method_manager, delegate_keyboard_shortcuts_inhibit, delegate_layer_shell, + delegate_output, delegate_pointer_constraints, delegate_pointer_gestures, + delegate_presentation, delegate_primary_selection, delegate_relative_pointer, delegate_seat, + delegate_security_context, delegate_shm, delegate_tablet_manager, delegate_text_input_manager, + delegate_viewporter, delegate_virtual_keyboard_manager, delegate_xdg_activation, + delegate_xdg_decoration, delegate_xdg_shell, +}; diff --git a/tests/target/5131_one.rs b/tests/target/5131_one.rs index 32c50fed0b9..25a3e59d704 100644 --- a/tests/target/5131_one.rs +++ b/tests/target/5131_one.rs @@ -13,8 +13,11 @@ use { mod indent4 { use column_____________________________________________________________________________________102::{ - bar::{baz::Baz, Bar, Bar2}, - Foo, Foo2, + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; use column_______________________________________________________________________________096::{ @@ -27,10 +30,12 @@ mod indent4 { Foo, Foo2, }; - use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: - c102::{ - bar::{baz::Baz, Bar, Bar2}, - Foo, Foo2, + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::c102::{ + Foo, + bar::Bar, + bar::baz::Baz, + Foo2, + bar::Bar2, }; use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::{ diff --git a/tests/target/5131_one_2024.rs b/tests/target/5131_one_2024.rs new file mode 100644 index 00000000000..2cbd2252f27 --- /dev/null +++ b/tests/target/5131_one_2024.rs @@ -0,0 +1,143 @@ +// rustfmt-imports_granularity: One +// rustfmt-style_edition: 2024 + +pub use foo::{x, x as x2, y}; +use { + bar::{ + a, + b::{self, f, g}, + c, + d::{e, e as e2}, + }, + qux::{h, i}, +}; + +mod indent4 { + use column_____________________________________________________________________________________102::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use column_______________________________________________________________________________096::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use column_________________________________________________________________________090::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096:: + c102::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::c096::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::c090::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; + + use c012::c018::c024::c030::c036::c042::c048::c054::c060::c066::c072::c078::c084::{ + bar::{baz::Baz, Bar, Bar2}, + Foo, Foo2, + }; +} + +use smithay::{ + backend::renderer::element::{ + default_primary_scanout_output_compare, utils::select_dmabuf_feedback, RenderElementStates, + }, + delegate_compositor, delegate_data_control, delegate_data_device, delegate_fractional_scale, + delegate_input_method_manager, delegate_keyboard_shortcuts_inhibit, delegate_layer_shell, + delegate_output, delegate_pointer_constraints, delegate_pointer_gestures, + delegate_presentation, delegate_primary_selection, delegate_relative_pointer, delegate_seat, + delegate_security_context, delegate_shm, delegate_tablet_manager, delegate_text_input_manager, + delegate_viewporter, delegate_virtual_keyboard_manager, delegate_xdg_activation, + delegate_xdg_decoration, delegate_xdg_shell, + desktop::{ + space::SpaceElement, + utils::{ + surface_presentation_feedback_flags_from_states, surface_primary_scanout_output, + update_surface_primary_scanout_output, OutputPresentationFeedback, + }, + PopupKind, PopupManager, Space, + }, + input::{ + keyboard::{Keysym, LedState, XkbConfig}, + pointer::{CursorImageStatus, PointerHandle}, + Seat, SeatHandler, SeatState, + }, + output::Output, + reexports::{ + calloop::{generic::Generic, Interest, LoopHandle, Mode, PostAction}, + wayland_protocols::xdg::decoration::{ + self as xdg_decoration, + zv1::server::zxdg_toplevel_decoration_v1::Mode as DecorationMode, + }, + wayland_server::{ + backend::{ClientData, ClientId, DisconnectReason}, + protocol::{wl_data_source::WlDataSource, wl_surface::WlSurface}, + Display, DisplayHandle, Resource, + }, + }, + utils::{Clock, Monotonic, Rectangle}, + wayland::{ + compositor::{get_parent, with_states, CompositorClientState, CompositorState}, + dmabuf::DmabufFeedback, + fractional_scale::{ + with_fractional_scale, FractionalScaleHandler, FractionalScaleManagerState, + }, + input_method::{InputMethodHandler, InputMethodManagerState, PopupSurface}, + keyboard_shortcuts_inhibit::{ + KeyboardShortcutsInhibitHandler, KeyboardShortcutsInhibitState, + KeyboardShortcutsInhibitor, + }, + output::{OutputHandler, OutputManagerState}, + pointer_constraints::{ + with_pointer_constraint, PointerConstraintsHandler, PointerConstraintsState, + }, + pointer_gestures::PointerGesturesState, + presentation::PresentationState, + relative_pointer::RelativePointerManagerState, + seat::WaylandFocus, + security_context::{ + SecurityContext, SecurityContextHandler, SecurityContextListenerSource, + SecurityContextState, + }, + selection::{ + data_device::{ + set_data_device_focus, ClientDndGrabHandler, DataDeviceHandler, DataDeviceState, + ServerDndGrabHandler, + }, + primary_selection::{ + set_primary_focus, PrimarySelectionHandler, PrimarySelectionState, + }, + wlr_data_control::{DataControlHandler, DataControlState}, + SelectionHandler, + }, + shell::{ + wlr_layer::WlrLayerShellState, + xdg::{ + decoration::{XdgDecorationHandler, XdgDecorationState}, + ToplevelSurface, XdgShellState, XdgToplevelSurfaceData, + }, + }, + shm::{ShmHandler, ShmState}, + socket::ListeningSocketSource, + tablet_manager::{TabletManagerState, TabletSeatTrait}, + text_input::TextInputManagerState, + viewporter::ViewporterState, + virtual_keyboard::VirtualKeyboardManagerState, + xdg_activation::{ + XdgActivationHandler, XdgActivationState, XdgActivationToken, XdgActivationTokenData, + }, + xdg_foreign::{XdgForeignHandler, XdgForeignState}, + }, +}; diff --git a/tests/target/issue_3033.rs b/tests/target/issue_3033.rs index 7e380420ad3..76f9ff31dfe 100644 --- a/tests/target/issue_3033.rs +++ b/tests/target/issue_3033.rs @@ -1,5 +1,5 @@ -use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding:: - BluetoothRemoteGATTServerBinding::BluetoothRemoteGATTServerMethods; +use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding::BluetoothRemoteGATTServerBinding:: + BluetoothRemoteGATTServerMethods; mod indent4 { use column__This_segment_overflows_because_it_follows_use______________________________________102::