Skip to content

Formatting error ('left behind trailing whitespace') on if statement with comment between && and expression #6342

Closed as not planned
@antonilol

Description

@antonilol

Reproducer:

fn fn1() {
    #[derive(PartialEq)]
    struct Struct {
        looooooooooooooong_field_name: u8,
    }


    if None
                                    == Some(Struct {
                                        looooooooooooooong_field_name: 1, 
                                    })
                                    &&
                                    // removing this comment makes it format as usual
                                     true
    {
        todo!();
    }
}

(This is a minimal example of the format error made from real code, this is why there is a nonsensical None == Some(...) comparison, && true and a todo!())

Trying to use rustfmt (through cargo fmt) on this results in an error and the code being partially formatted.

cargo fmt --check result:

Diff in /tmp/rustfmt_bug/src/lib.rs:4:
         looooooooooooooong_field_name: u8,
     }
 
-
     if None
                                     == Some(Struct {
                                         looooooooooooooong_field_name: 1, 
error[internal]: left behind trailing whitespace
 --> /tmp/rustfmt_bug/src/lib.rs:9:9:74
  |
9 |                                         looooooooooooooong_field_name: 1, 
  |                                                                          ^
  |

warning: rustfmt has failed to format. See previous 1 errors.

I don't know if the long field name has anything to do with this, but the comment certainly does, as removing it will make it format correctly.

Removing the trailing space manually will make rustfmt not format but still return with exit code 0.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions