about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNoah Lev <camelidcamel@gmail.com>2021-12-28 13:15:02 -0800
committerNoah Lev <camelidcamel@gmail.com>2021-12-28 14:09:20 -0800
commit908a9d4aad61f4b8108ff91ae42f76e67dec5148 (patch)
tree24bc1f60ae9b3c73f464a514727a12686eae175b
parent7d1ec648914d59a6620ed0dcc2ed60c86b53f189 (diff)
downloadrust-908a9d4aad61f4b8108ff91ae42f76e67dec5148.tar.gz
rust-908a9d4aad61f4b8108ff91ae42f76e67dec5148.zip
Add regression test for #59502
This issue was fixed using a hacky recursion "fuel" argument, but the
issue was never minimized nor was a regression test added. The
underlying bug is still unfixed, so this test should help with fixing it
and removing the `recurse` hack.
-rw-r--r--src/librustdoc/html/render/search_index.rs2
-rw-r--r--src/test/rustdoc-ui/search-index-generics-recursion-bug-issue-59502.rs11
2 files changed, 13 insertions, 0 deletions
diff --git a/src/librustdoc/html/render/search_index.rs b/src/librustdoc/html/render/search_index.rs
index 038ee351545..0fbe090f219 100644
--- a/src/librustdoc/html/render/search_index.rs
+++ b/src/librustdoc/html/render/search_index.rs
@@ -236,6 +236,7 @@ fn get_index_type_name(clean_type: &clean::Type) -> Option<Symbol> {
 ///
 /// Important note: It goes through generics recursively. So if you have
 /// `T: Option<Result<(), ()>>`, it'll go into `Option` and then into `Result`.
+#[instrument(level = "trace", skip(tcx, res))]
 fn add_generics_and_bounds_as_types<'tcx>(
     generics: &Generics,
     arg: &Type,
@@ -316,6 +317,7 @@ fn add_generics_and_bounds_as_types<'tcx>(
 
     if recurse >= 10 {
         // FIXME: remove this whole recurse thing when the recursion bug is fixed
+        // See #59502 for the original issue.
         return;
     }
 
diff --git a/src/test/rustdoc-ui/search-index-generics-recursion-bug-issue-59502.rs b/src/test/rustdoc-ui/search-index-generics-recursion-bug-issue-59502.rs
new file mode 100644
index 00000000000..ce51556dd41
--- /dev/null
+++ b/src/test/rustdoc-ui/search-index-generics-recursion-bug-issue-59502.rs
@@ -0,0 +1,11 @@
+// check-pass
+
+// Minimization of issue #59502
+
+trait MyTrait<T> {
+    type Output;
+}
+
+pub fn pow<T: MyTrait<T, Output = T>>(arg: T) -> T {
+    arg
+}