rustfmt icon indicating copy to clipboard operation
rustfmt copied to clipboard

Off-by-two error wrapping line with use_small_heuristics Max

Open ia0 opened this issue 7 months ago • 2 comments

% rustfmt --version
rustfmt 1.7.1-nightly (fda509e 2024-06-25)

Content of src/main.rs:

/*
0         1         2         3         4         5         6         7         8         9
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
*/

fn main() {
    // This line has 100 characters ...............................................................9
    let connection = candidate.connect(Duration::from_secs(1)).context("connecting to the device")?;
    // This line has 99 characters ...............................................................8
    let connection = candidate.connect(Duration::from_secs(1)).context("connecting to the devic")?;
    // This line has 98 characters ..............................................................7
    let connection = candidate.connect(Duration::from_secs(1)).context("connecting to the devi")?;
}

Content of rustfmt.toml:

comment_width = 100
use_small_heuristics = "Max"

Expected formatting is that nothing changes. The file is already correctly formatted.

Actual formatting is the following (lines with 100 and 99 characters are wrapped):

/*
0         1         2         3         4         5         6         7         8         9
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
*/

fn main() {
    // This line has 100 characters ...............................................................9
    let connection =
        candidate.connect(Duration::from_secs(1)).context("connecting to the device")?;
    // This line has 99 characters ...............................................................8
    let connection =
        candidate.connect(Duration::from_secs(1)).context("connecting to the devic")?;
    // This line has 98 characters ..............................................................7
    let connection = candidate.connect(Duration::from_secs(1)).context("connecting to the devi")?;
}

Maybe it's related to #6180? Or maybe it's how use_small_heuristics = Max is supposed to work since the documentation doesn't say anything.

ia0 avatar Jun 26 '24 14:06 ia0