Non-idempotent repeatedly growing indentation in doc attribute containing multi-line concat
Open
@rscprof is already working on this.
Since Jan 16, 2024.
A-doc-comments
A-macros
C-bug
I-non-idempotency
- Dominant language
- Rust
- Stars
- 7k
- Forks
- 1.1k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 24
Description
Minimized from https://github.com/rust-lang/rust/blob/1.74.0/library/core/src/num/nonzero.rs#L341-L342.
macro_rules! repro {
() => {
#[doc = concat!("let var = ",
"false;")]
fn f() {}
};
}
As of current master, rustfmt applies the following diff. This is from cargo run --bin rustfmt -- /path/to/repro.rs.
- "false;")]
+ "false;")]
If you run rustfmt again, it keeps going for 16 levels of indentation before reaching an idempotent state.
- "false;")]
+ "false;")]
- "false;")]
+ "false;")]
- "false;")]
+ "false;")]
- "false;")]
+ "false;")]
- "false;")]
+ "false;")]
- "false;")]
+ "false;")]
- "false;")]
+ "false;")]
- "false;")]
+ "false;")]
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.