rust-lang / rust-lang/rustfmt

Line indented again each time rustfmt is run until it's 100 columns wide

Open
#5,044 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-macros C-bug I-non-idempotency P-medium
Dominant language
Rust
Stars
7k
Forks
1.1k
Avg merge
2d 13h
Merged PRs (30d)
24

Description

The line containing ::uninit() in the following code is repeatedly indented if rustfmt is run on the file repeatedly. This also causes cargo fmt -- --check to fail, even when cargo fmt was just run, unless the line is as long as permissible.

macro_rules! space_uninit {
    ($capacity:expr) => {
        unsafe {
            core::mem::MaybeUninit::<[core::mem::MaybeUninit<core::primitive::u8>; $capacity]>
                ::uninit()
        }
    };
}

rustfmt version:

$ rustfmt -V
rustfmt 1.4.37-stable (09c42c4 2021-10-18)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running rustfmt 1.4.37 on the Rust snippet containing core::mem::MaybeUninit::<...>::uninit() and repeat formatting to reproduce the indentation drift. Trace the formatter behavior for this macro and qualified path, then verify that repeated runs are stable and cargo fmt -- --check passes immediately after formatting.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.