From 4788aaa5f07da85707b7bf409b5d25df1682a760 Mon Sep 17 00:00:00 2001 From: Florian Diebold <flodiebold@gmail.com> Date: Sun, 13 Dec 2020 14:52:45 +0100 Subject: [PATCH] Add test for #6852 --- crates/hir_ty/src/tests/regression.rs | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/crates/hir_ty/src/tests/regression.rs b/crates/hir_ty/src/tests/regression.rs index 8cf4e701240..da817041704 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<T> {} + struct MutexGuard<'a, T> {} + impl<T> Mutex<T> { + fn lock(&self) -> MutexGuard<'_, T> {} + } + impl<'a, T: 'a> Deref for MutexGuard<'a, T> { + type Target = T; + } + fn flush(&self) { + let w: &Mutex<BufWriter>; + *(w.lock()); + } + "#, + expect![[r#" + 156..160 'self': &Mutex<T> + 183..185 '{}': () + 267..271 'self': &{unknown} + 273..323 '{ ...()); }': () + 283..284 'w': &Mutex<BufWriter> + 309..320 '*(w.lock())': BufWriter + 311..312 'w': &Mutex<BufWriter> + 311..319 'w.lock()': MutexGuard<BufWriter> + "#]], + ); +}