rust-lang / rust-lang/rust-analyzer
Inlay hints not working in macro call
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 16.9k
- Forks
- 2.2k
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 72
Description
rust-analyzer version: 0add6e95e 2021-12-20 stable
rustc version: rustc 1.60.0-nightly (ee5d8d37b 2022-01-17)
When creating macros that accept blocks, if you declare a let, it doesn't show you the type. Doesn't work with function call parameter names either.

fn main() {
macro_rules! foo {
(bar $b:block) => {
$b
}
}
fn baz(val: i32) {
println!("baz {}", val);
}
foo!(bar {
let x = 123;
baz(x);
println!("Hello, world!");
});
let x = 123;
baz(x);
println!("Hello, world!");
}
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 Rust reproducer in the issue and the inlay-hints implementation for macro calls. Compare the behavior inside the block passed to foo! with the equivalent code outside the macro, including inferred types and parameter names. Done means both kinds of inlay hints appear correctly in the macro call.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100