rustdoc-search: show impl Trait
inline when unhighlighted
While normal generics can be skipped in this case, no-names need something to show here. Before: `TyCtxt, , Symbol -> bool` After: `TyCtxt, Into<DefId>, Symbol -> bool`
This commit is contained in:
parent
4847d6a9d0
commit
f068d8b809
3 changed files with 42 additions and 1 deletions
|
@ -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;
|
||||
|
|
25
tests/rustdoc-js/impl-trait-inlining.js
Normal file
25
tests/rustdoc-js/impl-trait-inlining.js
Normal file
|
@ -0,0 +1,25 @@
|
|||
// exact-check
|
||||
// ignore-order
|
||||
|
||||
const EXPECTED = [
|
||||
{
|
||||
'query': 'tyctxt, symbol -> bool',
|
||||
'others': [
|
||||
{
|
||||
'path': 'foo::TyCtxt',
|
||||
'name': 'has_attr',
|
||||
'displayType': "`TyCtxt`, Into<DefId>, `Symbol` -> `bool`",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
'query': 'tyctxt, into<defid>, symbol -> bool',
|
||||
'others': [
|
||||
{
|
||||
'path': 'foo::TyCtxt',
|
||||
'name': 'has_attr',
|
||||
'displayType': "`TyCtxt`, `Into`<`DefId`>, `Symbol` -> `bool`",
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
11
tests/rustdoc-js/impl-trait-inlining.rs
Normal file
11
tests/rustdoc-js/impl-trait-inlining.rs
Normal file
|
@ -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<DefId>, _attr: Symbol) -> bool {
|
||||
unimplemented!();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue