From 4788aaa5f07da85707b7bf409b5d25df1682a760 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sun, 13 Dec 2020 14:52:45 +0100 Subject: Add test for #6852 --- crates/hir_ty/src/tests/regression.rs | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'crates/hir_ty/src/tests') diff --git a/crates/hir_ty/src/tests/regression.rs b/crates/hir_ty/src/tests/regression.rs index 8cf4e7012..da8170417 100644 --- a/crates/hir_ty/src/tests/regression.rs +++ b/crates/hir_ty/src/tests/regression.rs @@ -883,3 +883,40 @@ fn issue_6628() { "#]], ); } + +#[test] +fn issue_6852() { + check_infer( + r#" + #[lang = "deref"] + pub trait Deref { + type Target; + } + + struct BufWriter {} + + struct Mutex {} + struct MutexGuard<'a, T> {} + impl Mutex { + fn lock(&self) -> MutexGuard<'_, T> {} + } + impl<'a, T: 'a> Deref for MutexGuard<'a, T> { + type Target = T; + } + fn flush(&self) { + let w: &Mutex; + *(w.lock()); + } + "#, + expect![[r#" + 156..160 'self': &Mutex + 183..185 '{}': () + 267..271 'self': &{unknown} + 273..323 '{ ...()); }': () + 283..284 'w': &Mutex + 309..320 '*(w.lock())': BufWriter + 311..312 'w': &Mutex + 311..319 'w.lock()': MutexGuard + "#]], + ); +} -- cgit v1.2.3