about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorjackh726 <jack.huey@umassmed.edu>2021-09-10 23:44:03 -0400
committerjackh726 <jack.huey@umassmed.edu>2021-09-11 00:43:06 -0400
commit1ed18f589ec62bf99a4ff541830fbc2bc48ce9f1 (patch)
tree1d09cc8ee3fa28ee0142c5e9b011a31f3364cefd /src/test
parent497ee321af3b8496eaccd7af7b437f18bab81abf (diff)
downloadrust-1ed18f589ec62bf99a4ff541830fbc2bc48ce9f1.tar.gz
rust-1ed18f589ec62bf99a4ff541830fbc2bc48ce9f1.zip
In suggest_missing_return_type, erase late bound regions after normalizing
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/generic-associated-types/issue-88360.rs19
-rw-r--r--src/test/ui/generic-associated-types/issue-88360.stderr20
2 files changed, 39 insertions, 0 deletions
diff --git a/src/test/ui/generic-associated-types/issue-88360.rs b/src/test/ui/generic-associated-types/issue-88360.rs
new file mode 100644
index 00000000000..06af3f5ec96
--- /dev/null
+++ b/src/test/ui/generic-associated-types/issue-88360.rs
@@ -0,0 +1,19 @@
+#![feature(generic_associated_types)]
+
+trait GatTrait {
+    type Gat<'a>;
+
+    fn test(&self) -> Self::Gat<'_>;
+}
+
+trait SuperTrait<T>
+where
+    for<'a> Self: GatTrait<Gat<'a> = &'a T>,
+{
+    fn copy(&self) -> Self::Gat<'_> where T: Copy {
+        *self.test()
+        //~^ mismatched types
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/generic-associated-types/issue-88360.stderr b/src/test/ui/generic-associated-types/issue-88360.stderr
new file mode 100644
index 00000000000..cfbf3aaa4e6
--- /dev/null
+++ b/src/test/ui/generic-associated-types/issue-88360.stderr
@@ -0,0 +1,20 @@
+error[E0308]: mismatched types
+  --> $DIR/issue-88360.rs:14:9
+   |
+LL | trait SuperTrait<T>
+   |                  - this type parameter
+...
+LL |     fn copy(&self) -> Self::Gat<'_> where T: Copy {
+   |                       ------------- expected `&T` because of return type
+LL |         *self.test()
+   |         ^^^^^^^^^^^^
+   |         |
+   |         expected `&T`, found type parameter `T`
+   |         help: consider borrowing here: `&*self.test()`
+   |
+   = note:   expected reference `&T`
+           found type parameter `T`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0308`.