diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js
index 9e5cf4972113..04eeee37fe8e 100644
--- a/src/librustdoc/html/static/js/search.js
+++ b/src/librustdoc/html/static/js/search.js
@@ -2592,7 +2592,12 @@ class DocSearch {
const writeFn = (fnType, result) => {
if (fnType.id < 0) {
if (fnParamNames[-1 - fnType.id] === "") {
- for (const nested of fnType.generics) {
+ // Normally, there's no need to shown an unhighlighted
+ // where clause, but if it's impl Trait, then we do.
+ const generics = fnType.generics.length > 0 ?
+ fnType.generics :
+ obj.type.where_clause[-1 - fnType.id];
+ for (const nested of generics) {
writeFn(nested, result);
}
return;
diff --git a/tests/rustdoc-js/impl-trait-inlining.js b/tests/rustdoc-js/impl-trait-inlining.js
new file mode 100644
index 000000000000..02c9853dd63f
--- /dev/null
+++ b/tests/rustdoc-js/impl-trait-inlining.js
@@ -0,0 +1,25 @@
+// exact-check
+// ignore-order
+
+const EXPECTED = [
+ {
+ 'query': 'tyctxt, symbol -> bool',
+ 'others': [
+ {
+ 'path': 'foo::TyCtxt',
+ 'name': 'has_attr',
+ 'displayType': "`TyCtxt`, Into, `Symbol` -> `bool`",
+ },
+ ],
+ },
+ {
+ 'query': 'tyctxt, into, symbol -> bool',
+ 'others': [
+ {
+ 'path': 'foo::TyCtxt',
+ 'name': 'has_attr',
+ 'displayType': "`TyCtxt`, `Into`<`DefId`>, `Symbol` -> `bool`",
+ },
+ ],
+ },
+];
diff --git a/tests/rustdoc-js/impl-trait-inlining.rs b/tests/rustdoc-js/impl-trait-inlining.rs
new file mode 100644
index 000000000000..a6ca0dcbd8dd
--- /dev/null
+++ b/tests/rustdoc-js/impl-trait-inlining.rs
@@ -0,0 +1,11 @@
+#![crate_name="foo"]
+
+pub struct TyCtxt;
+pub struct DefId;
+pub struct Symbol;
+
+impl TyCtxt {
+ pub fn has_attr(self, _did: impl Into, _attr: Symbol) -> bool {
+ unimplemented!();
+ }
+}