Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/tests/regression.rs')
-rw-r--r--crates/hir-ty/src/tests/regression.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/crates/hir-ty/src/tests/regression.rs b/crates/hir-ty/src/tests/regression.rs
index aa7b00b8de..b371e5856b 100644
--- a/crates/hir-ty/src/tests/regression.rs
+++ b/crates/hir-ty/src/tests/regression.rs
@@ -2041,3 +2041,37 @@ fn main() {
"#,
);
}
+
+#[test]
+fn issue_17734() {
+ check_types(
+ r#"
+fn test() {
+ let x = S::foo::<'static, &()>(&S);
+ // ^ Wrap<'?, ()>
+ let x = S::foo::<&()>(&S);
+ // ^ Wrap<'?, ()>
+ let x = S.foo::<'static, &()>();
+ // ^ Wrap<'?, ()>
+ let x = S.foo::<&()>();
+ // ^ Wrap<'?, ()>
+}
+
+struct S;
+
+impl S {
+ pub fn foo<'a, T: Trait<'a>>(&'a self) -> T::Proj {
+ loop {}
+ }
+}
+
+struct Wrap<'a, T>(T);
+trait Trait<'a> {
+ type Proj;
+}
+impl<'a, T> Trait<'a> for &'a T {
+ type Proj = Wrap<'a, T>;
+}
+"#,
+ )
+}