7907: Autoderef with visibility r=cynecx a=cynecx

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/7841.

I am not sure about the general approach here. Right now this simply tries to check whether the autoderef candidate is reachable from the current module. ~~However this doesn't exactly work with traits (see the `tests::macros::infer_derive_clone_in_core` test, which fails right now).~~ see comment below

Refs:

- `rustc_typeck` checking fields: 66ec64ccf3/compiler/rustc_typeck/src/check/expr.rs (L1610) 


r? @flodiebold

Co-authored-by: cynecx <me@cynecx.net>
This commit is contained in:
bors[bot] 2021-03-24 22:37:48 +00:00 committed by GitHub
commit d7db38fff9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 250 additions and 37 deletions

View file

@ -1999,6 +1999,7 @@ impl Type {
env,
krate,
traits_in_scope,
None,
name,
method_resolution::LookupMode::MethodCall,
|ty, it| match it {
@ -2031,6 +2032,7 @@ impl Type {
env,
krate,
traits_in_scope,
None,
name,
method_resolution::LookupMode::Path,
|ty, it| callback(ty, it.into()),