about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Howell <michael@notriddle.com>2023-08-05 11:22:21 -0700
committerMichael Howell <michael@notriddle.com>2023-09-03 13:06:07 -0700
commit89a4c7f552558c293b29437b4b79223786f1923d (patch)
treea47303c3472f95d62667a2f4497530725c4f385d
parentb6bb06ca5d3a5edac2c72549101fd8f932f7bc04 (diff)
downloadrust-89a4c7f552558c293b29437b4b79223786f1923d.tar.gz
rust-89a4c7f552558c293b29437b4b79223786f1923d.zip
rustdoc: bug fix for `-> option<t>`
-rw-r--r--src/librustdoc/html/static/js/externs.js1
-rw-r--r--src/librustdoc/html/static/js/search.js5
-rw-r--r--tests/rustdoc-js-std/option-type-signatures.js6
3 files changed, 11 insertions, 1 deletions
diff --git a/src/librustdoc/html/static/js/externs.js b/src/librustdoc/html/static/js/externs.js
index 9595aae4020..c7811b43d16 100644
--- a/src/librustdoc/html/static/js/externs.js
+++ b/src/librustdoc/html/static/js/externs.js
@@ -37,6 +37,7 @@ let ParserState;
  *     args: Array<QueryElement>,
  *     returned: Array<QueryElement>,
  *     foundElems: number,
+ *     totalElems: number,
  *     literalSearch: boolean,
  *     corrections: Array<{from: string, to: integer}>,
  * }}
diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js
index 6301dd728af..fb478cbff3c 100644
--- a/src/librustdoc/html/static/js/search.js
+++ b/src/librustdoc/html/static/js/search.js
@@ -973,6 +973,8 @@ function initSearch(rawSearchIndex) {
             returned: [],
             // Total number of "top" elements (does not include generics).
             foundElems: 0,
+            // Total number of elements (includes generics).
+            totalElems: 0,
             literalSearch: false,
             error: null,
             correction: null,
@@ -1074,6 +1076,7 @@ function initSearch(rawSearchIndex) {
             query.literalSearch = parserState.totalElems > 1;
         }
         query.foundElems = query.elems.length + query.returned.length;
+        query.totalElems = parserState.totalElems;
         return query;
     }
 
@@ -1980,7 +1983,7 @@ function initSearch(rawSearchIndex) {
                     }
                     elem.id = match;
                 }
-                if ((elem.id === null && parsedQuery.foundElems > 1 && elem.typeFilter === -1)
+                if ((elem.id === null && parsedQuery.totalElems > 1 && elem.typeFilter === -1)
                     || elem.typeFilter === TY_GENERIC) {
                     if (genericSymbols.has(elem.name)) {
                         elem.id = genericSymbols.get(elem.name);
diff --git a/tests/rustdoc-js-std/option-type-signatures.js b/tests/rustdoc-js-std/option-type-signatures.js
index c5cd6b1d2ef..37bb3b14ab3 100644
--- a/tests/rustdoc-js-std/option-type-signatures.js
+++ b/tests/rustdoc-js-std/option-type-signatures.js
@@ -72,4 +72,10 @@ const EXPECTED = [
             { 'path': 'std::option::Option', 'name': 'flatten' },
         ],
     },
+    {
+        'query': 'option<t>',
+        'returned': [
+            { 'path': 'std::result::Result', 'name': 'ok' },
+        ],
+    },
 ];