rustdoc reports diagnostics against `very/../long/PATH.md` instead of normalizing to `PATH.md`
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
The same repro as #130470 can be used here: https://github.com/fasterthanlime/readme-md-error-reporting
When running cargo +stage1 t, the output is:
---- src/../README.md - (line 5) stdout ----
error: expected `;`, found `}`
--> src/../README.md:7:16
|
3 | let x = 234 // no semicolon here! oh no!
| ^ help: add `;` here
4 | }
| - unexpected token
But I would argue it should be this:
---- README.md - (line 5) stdout ----
error: expected `;`, found `}`
--> README.md:7:16
|
3 | let x = 234 // no semicolon here! oh no!
| ^ help: add `;` here
4 | }
| - unexpected token
I would caution against using canonicalize — which resolves symbolic links etc. and requires the path to exist on disk right now, and rather advise that y'all simply have a state machine working on a stack of path elements, going through:
- []
- ["src"]
- [] // just popped due to ".."
- ["README.md"]
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.
Research direction
Start with the linked readme-md-error-reporting reproduction and run cargo +stage1 t to observe the rustdoc diagnostic path. Trace where src/../README.md is formatted, then add coverage showing that the diagnostic reports README.md while preserving the reported location and message.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100