about summary refs log tree commit diff
path: root/src/test/rustdoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/rustdoc')
-rw-r--r--src/test/rustdoc/generic-associated-types/gats.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/test/rustdoc/generic-associated-types/gats.rs b/src/test/rustdoc/generic-associated-types/gats.rs
new file mode 100644
index 00000000000..ae981b9499a
--- /dev/null
+++ b/src/test/rustdoc/generic-associated-types/gats.rs
@@ -0,0 +1,34 @@
+#![crate_name = "foo"]
+#![feature(generic_associated_types)]
+
+// @has foo/trait.LendingIterator.html
+pub trait LendingIterator {
+    // @has - '//*[@id="associatedtype.Item"]//h4[@class="code-header"]' "type Item<'a> where Self: 'a"
+    type Item<'a> where Self: 'a;
+
+    // @has - '//*[@id="tymethod.next"]//h4[@class="code-header"]' \
+    //      "fn next<'a>(&'a self) -> Self::Item<'a>"
+    // @has - '//*[@id="tymethod.next"]//h4[@class="code-header"]//a[@href="trait.LendingIterator.html#associatedtype.Item"]' \
+    //      "Item"
+    fn next<'a>(&'a self) -> Self::Item<'a>;
+}
+
+// @has foo/trait.LendingIterator.html
+// @has - '//*[@id="associatedtype.Item-1"]//h4[@class="code-header"]' "type Item<'a> = ()"
+impl LendingIterator for () {
+    type Item<'a> = ();
+
+    fn next<'a>(&self) -> () {}
+}
+
+pub struct Infinite<T>(T);
+
+// @has foo/trait.LendingIterator.html
+// @has - '//*[@id="associatedtype.Item-2"]//h4[@class="code-header"]' "type Item<'a> where Self: 'a = &'a T"
+impl<T> LendingIterator for Infinite<T> {
+    type Item<'a> where Self: 'a = &'a T;
+
+    fn next<'a>(&'a self) -> Self::Item<'a> {
+        &self.0
+    }
+}