-
Notifications
You must be signed in to change notification settings - Fork 985
Description
In some fairly specific circumstances, rustfmt with wrap_comments=true will allow comments to wrap a few characters beyond the configured comment_width. So far I have managed to only hit this a few times with bullet points in comments of the following form (these examples were hard-wrapped manually by me and are all within 80 columns -- I would expect rustfmt to do nothing as as result):
// * aaa Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
// aaq tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
// aaa veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
// aaa commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
// aaa velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
// aaa occaecat cupidatat non proident, sunt in culpa qui officia deserunt
// aaa mollit anim id est laborum.
fn bad_comment() {
// * Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
// tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
// veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
// commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
// velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
// occaecat cupidatat non proident, sunt in culpa qui officia deserunt
// mollit anim id est laborum.
()
}
fn comment_ignored() {
foobar();
// * Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
// tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
// veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
// commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
// velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
// occaecat cupidatat non proident, sunt in culpa qui officia deserunt
// mollit anim id est laborum.
}If you then try to use rustfmt you will see that it suggests wrappings that exceed 80 characters for a few lines where the continuing word is short. Note that it seems there must be something after the comment for comments in functions -- comment_ignored is accepted by rustfmt despite having identical comment text to bad_comment.
% rustc +nightly --version
rustc 1.95.0-nightly (7057231bd 2026-02-11)
% rustfmt +nightly --version
rustfmt 1.8.0-nightly (7057231bd7 2026-02-11)
% % rustfmt +nightly --config=wrap_comments=true --check test.rs
Diff in /home/cyphar/tmp/foo.rs:2:
// aaq tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
// aaa veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
// aaa commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
-// aaa velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
-// aaa occaecat cupidatat non proident, sunt in culpa qui officia deserunt
-// aaa mollit anim id est laborum.
+// aaa velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint aaa
+// occaecat cupidatat non proident, sunt in culpa qui officia deserunt aaa
+// mollit anim id est laborum.
fn bad_comment() {
// * Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
Diff in /home/cyphar/tmp/foo.rs:11:
// tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
// veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
// commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
- // velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
- // occaecat cupidatat non proident, sunt in culpa qui officia deserunt
- // mollit anim id est laborum.
+ // velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
+ // cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
+ // est laborum.
()
}
Diff in /home/cyphar/tmp/foo.rs:34:
// aaq tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
// aaa veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
// aaa commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
-// aaa velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
-// aaa occaecat cupidatat non proident, sunt in culpa qui officia deserunt
-// aaa mollit anim id est laborum.
+// aaa velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint aaa
+// occaecat cupidatat non proident, sunt in culpa qui officia deserunt aaa
+// mollit anim id est laborum.As far as I can see, this occurs on all editions.