Skip to content

Fmt failure with wrap_comments = true #5493

Open
@sander2

Description

@sander2

When having wrap_comments = true, running rustfmt on the following code produces an error:

fn f() {
    g({
        // some trailing spaces on the line below - this needs to be inside the g call
    
        SomeStruct {
            a: b, // // This needs two sets of the slash-slash comments, and this needs to be a very long sentence so bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
        };
    })
    .x; // the .something needs to be here
}

The produces error is error[internal]: left behind trailing whitespace

Activity

ytmimi

ytmimi commented on Aug 10, 2022

@ytmimi
Contributor

Thanks for the report.

Stripping back the example to just the following:

fn f() {
    {
        {
            SomeStruct {
                a: b, // // This needs two sets of the slash-slash comments, and this needs to be a very long sentence so bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
            };
         }
    }
}

when we run rustfmt the line comment is changed into a block comment, but it isn't wrapped so it stays really long:

fn f() {
    {
        {
            SomeStruct {
                a: b, /* // This needs two sets of the slash-slash comments, and this needs to be a very long sentence so bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla */
            };
        }
    }
}

Then because we're dealing with a chain e.g. g().x, we hit the same issues that's causing #3863, and we don't reformat the any part of the chain, which means we leave the trailing whitespace. which is causing the warning that you're seeing.

ytmimi

ytmimi commented on Aug 10, 2022

@ytmimi
Contributor

But I can also confirm that with the original example using wrap_comment=false the trailing whitespace is removed, and with wrap_comments=true the trailing whitespace remains after formatting. Interesting 🤔

arifd

arifd commented on Aug 28, 2022

@arifd
ytmimi

ytmimi commented on Aug 28, 2022

@ytmimi
arifd

arifd commented on Aug 28, 2022

@arifd

Okay, thanks. created: #5521

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    a-chainsa-commentse-max widtherror[internal]: line formatted, but exceeded maximum widthe-trailing whitespaceerror[internal]: left behind trailing whitespace

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @arifd@sander2@ytmimi

        Issue actions

          Fmt failure with wrap_comments = true · Issue #5493 · rust-lang/rustfmt