rust-lang / rust-lang/rust-mode
A left shift after an `as`-cast can mess up paren matching
Nobody has claimed this yet.
- Dominant language
- Emacs Lisp
- Stars
- 1.3k
- Forks
- 198
- PR merge metrics
- No merged PRs in 30d
Description
If I create a file containing only the following code (which does compile without warnings or errors), the closing brace to the function is not recognized by the parenthesis-matcher (although the closing parenthesis around the bitshift is):
fn test(x: f64) -> u64 {
x as u64 * (1 << 3)
}
Interestingly, if I put the x as u64 in parentheses, it works just fine:
fn test(x: f64) -> u64 {
(x as u64) * (1 << 3)
}
This occurs if such an expression is present anywhere in the function.
Contributor guide
No contributing guide indexed for this repository
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 by reproducing the issue in rust-mode with the two Rust snippets from the report, then trace the parenthesis-matching logic for an expression combining an as cast with a left shift. Done means the closing function brace is recognized while the existing parenthesis matching still works.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- emacs-lisp, rust
- Domain
- devtools, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 45/100