See
https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer/topic/False.20error.20report.20for.20.60rust-analyzer.28private-field.29.60
for further discussion; previously this had various bugs.
I tested go-to-definition on:
- `use std::io::Write` in `src/bootstrap/setup.rs`
- `use std::cell::RefCell` in `src/librustdoc/core.rs`
- `use rustc_span::symbol::sym` in `src/librustdoc/core.rs`
- `use std::fmt` in `compiler/rustc_span/src/symbol.rs`
- `Global` in `library/alloc/src/alloc/tests.rs`
The following things still don't work:
- `Global.deallocate` in alloc/tests.rs. This function is under
`cfg(not(test))`, so it can't be enabled without disabling RA in
`tests.rs` altogether. I think this might be fixable by moving
`library/alloc/src/alloc/tests.rs` to
`library/alloc/tests/alloc/lib.rs`, so it's in a different crate, but
I'd like to avoid blocking this improvement on that change.