From 61217c5bf83faef24628257056e244ebcf2b6447 Mon Sep 17 00:00:00 2001 From: bendn Date: Fri, 26 Jun 2026 00:44:08 +0700 Subject: [PATCH] implement formatting for super let --- src/items.rs | 17 +++++++---------- tests/source/super_let.rs | 7 +++++++ tests/target/super_let.rs | 4 ++++ 3 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 tests/source/super_let.rs create mode 100644 tests/target/super_let.rs diff --git a/src/items.rs b/src/items.rs index 484c5b50adf..214ff55619d 100644 --- a/src/items.rs +++ b/src/items.rs @@ -65,19 +65,17 @@ impl Rewrite for ast::Local { return Err(RewriteError::SkipFormatting); } - // FIXME(super_let): Implement formatting - if self.super_.is_some() { - return Err(RewriteError::SkipFormatting); - } - + let super_ = self.super_.is_some(); + // FIXME: deletes any comments in between super and let + let let_ = if super_ { "super let " } else { "let " }; let attrs_str = self.attrs.rewrite_result(context, shape)?; let mut result = if attrs_str.is_empty() { - "let ".to_owned() + let_.to_owned() } else { combine_strs_with_missing_comments( context, &attrs_str, - "let ", + let_, mk_sp( self.attrs.last().map(|a| a.span.hi()).unwrap(), self.span.lo(), @@ -86,10 +84,9 @@ impl Rewrite for ast::Local { false, )? }; - let let_kw_offset = result.len() - "let ".len(); + let let_kw_offset = result.len() - let_.len(); - // 4 = "let ".len() - let pat_shape = shape.offset_left(4, self.span())?; + let pat_shape = shape.offset_left(let_.len(), self.span())?; // 1 = ; let pat_shape = pat_shape.sub_width(1, self.span())?; let pat_str = self.pat.rewrite_result(context, pat_shape)?; diff --git a/tests/source/super_let.rs b/tests/source/super_let.rs new file mode 100644 index 00000000000..e471a198260 --- /dev/null +++ b/tests/source/super_let.rs @@ -0,0 +1,7 @@ +#![feature(super_let)] +fn main() { + super let x =( + &1, + + ) else { 3}; +} diff --git a/tests/target/super_let.rs b/tests/target/super_let.rs new file mode 100644 index 00000000000..d049df855f8 --- /dev/null +++ b/tests/target/super_let.rs @@ -0,0 +1,4 @@ +#![feature(super_let)] +fn main() { + super let x = (&1,) else { 3 }; +}