Skip to content

Commit

Permalink
Preserve normalized comments after last list item
Browse files Browse the repository at this point in the history
  • Loading branch information
mujpao committed Nov 18, 2021
1 parent 2c442cc commit e3ab83e
Show file tree
Hide file tree
Showing 4 changed files with 309 additions and 4 deletions.
13 changes: 9 additions & 4 deletions src/lists.rs
Original file line number Diff line number Diff line change
Expand Up @@ -444,10 +444,15 @@ where
let offset = formatting.shape.indent + overhead;
let comment_shape = Shape::legacy(width, offset);

// Use block-style only for the last item or multiline comments.
let block_style = !formatting.ends_with_newline && last
|| comment.trim().contains('\n')
|| comment.trim().len() > width;
let block_style = if !formatting.ends_with_newline && last {
true
} else if starts_with_newline(comment) {
false
} else if comment.trim().contains('\n') || comment.trim().len() > width {
true
} else {
false
};

rewrite_comment(
comment.trim_start(),
Expand Down
109 changes: 109 additions & 0 deletions tests/source/issue-4909/wrap-comments-true.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
// rustfmt-normalize_comments: true
// rustfmt-wrap_comments: true

pub enum E {
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
Variant1,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
Variant2,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

pub enum E2 {
// This can be changed once https://github.com/rust-lang/rustfmt/issues/4854 is fixed
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

pub enum E3 {
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions
Variant1,
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions
Variant2,
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions

}

pub struct S {
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
some_field: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
last_field: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

pub struct S2 {
// This can be changed once https://github.com/rust-lang/rustfmt/issues/4854 is fixed
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

pub struct S3 {
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions
some_field: usize,
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions
last_field: usize,
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions
}

fn foo(
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
a: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
b: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
) -> usize {
5
}

fn foo2(// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
) -> usize {
5
}

fn foo3(
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions
a: usize,
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions
b: usize,
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions

) -> usize {
5
}

fn main() {
let v = vec![
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
1,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
2,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
];

let v2: Vec<i32> = vec![
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
];

let v3 = vec![
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions
1,
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions
2,
// Expand as needed, numbers should be ascending according to the stage through the inclusion pipeline, or according to the descriptions
];
}
72 changes: 72 additions & 0 deletions tests/target/issue-4909/wrap-comments-false.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// rustfmt-normalize_comments: true

pub enum E {
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
Variant1,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
Variant2,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

pub enum E2 {
// This can be changed once https://github.com/rust-lang/rustfmt/issues/4854 is fixed
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

pub struct S {
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
some_field: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
last_field: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

pub struct S2 {
// This can be changed once https://github.com/rust-lang/rustfmt/issues/4854 is fixed
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

fn foo(
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
a: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
b: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
) -> usize {
5
}

fn foo2(// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
) -> usize {
5
}

fn main() {
let v = vec![
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
1,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
2,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
];

let v2: Vec<i32> = vec![
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
];
}
119 changes: 119 additions & 0 deletions tests/target/issue-4909/wrap-comments-true.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
// rustfmt-normalize_comments: true
// rustfmt-wrap_comments: true

pub enum E {
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
Variant1,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
Variant2,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

pub enum E2 {
// This can be changed once https://github.com/rust-lang/rustfmt/issues/4854 is fixed
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

pub enum E3 {
// Expand as needed, numbers should be ascending according to the stage through the inclusion
// pipeline, or according to the descriptions
Variant1,
// Expand as needed, numbers should be ascending according to the stage through the inclusion
// pipeline, or according to the descriptions
Variant2,
// Expand as needed, numbers should be ascending according to the stage through the inclusion
// pipeline, or according to the descriptions
}

pub struct S {
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
some_field: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
last_field: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

pub struct S2 {
// This can be changed once https://github.com/rust-lang/rustfmt/issues/4854 is fixed
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
}

pub struct S3 {
// Expand as needed, numbers should be ascending according to the stage through the inclusion
// pipeline, or according to the descriptions
some_field: usize,
// Expand as needed, numbers should be ascending according to the stage through the inclusion
// pipeline, or according to the descriptions
last_field: usize,
// Expand as needed, numbers should be ascending according to the stage through the inclusion
// pipeline, or according to the descriptions
}

fn foo(
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
a: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
b: usize,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
) -> usize {
5
}

fn foo2(// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
) -> usize {
5
}

fn foo3(
// Expand as needed, numbers should be ascending according to the stage through the inclusion
// pipeline, or according to the descriptions
a: usize,
// Expand as needed, numbers should be ascending according to the stage through the inclusion
// pipeline, or according to the descriptions
b: usize,
// Expand as needed, numbers should be ascending according to the stage through the inclusion
// pipeline, or according to the descriptions
) -> usize {
5
}

fn main() {
let v = vec![
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
1,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
2,
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
];

let v2: Vec<i32> = vec![
// Expand as needed, numbers should be ascending according to the stage
// through the inclusion pipeline, or according to the descriptions
];

let v3 = vec![
// Expand as needed, numbers should be ascending according to the stage through the
// inclusion pipeline, or according to the descriptions
1,
// Expand as needed, numbers should be ascending according to the stage through the
// inclusion pipeline, or according to the descriptions
2,
// Expand as needed, numbers should be ascending according to the stage through the
// inclusion pipeline, or according to the descriptions
];
}

0 comments on commit e3ab83e

Please sign in to comment.