summaryrefslogtreecommitdiffstats
path: root/src/test/ui/associated-types/associated-types-issue-20220.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/associated-types/associated-types-issue-20220.rs')
-rw-r--r--src/test/ui/associated-types/associated-types-issue-20220.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/test/ui/associated-types/associated-types-issue-20220.rs b/src/test/ui/associated-types/associated-types-issue-20220.rs
new file mode 100644
index 000000000..19fa7a608
--- /dev/null
+++ b/src/test/ui/associated-types/associated-types-issue-20220.rs
@@ -0,0 +1,28 @@
+// run-pass
+// Test references to `Self::Item` in the trait. Issue #20220.
+
+
+use std::vec;
+
+trait IntoIteratorX {
+ type Item;
+ type IntoIter: Iterator<Item=Self::Item>;
+
+ fn into_iter_x(self) -> Self::IntoIter;
+}
+
+impl<T> IntoIteratorX for Vec<T> {
+ type Item = T;
+ type IntoIter = vec::IntoIter<T>;
+
+ fn into_iter_x(self) -> vec::IntoIter<T> {
+ self.into_iter()
+ }
+}
+
+fn main() {
+ let vec = vec![1, 2, 3];
+ for (i, e) in vec.into_iter().enumerate() {
+ assert_eq!(i+1, e);
+ }
+}