rustdoc-search: do not treat associated type names as types
Before: http://notriddle.com/rustdoc-html-demo-6/tor-before/tor_config/ After: http://notriddle.com/rustdoc-html-demo-6/tor-after/tor_config/ Profile: http://notriddle.com/rustdoc-html-demo-6/tor-profile/ As a bit of background information: in type-based queries, a type name that does not exist gets treated as a generic type variable. This causes a counterintuitive behavior in the `tor_config` crate, which has a trait with an associated type variable called `T`. This isn't a searchable concrete type, but its name still gets stored in the typeNameIdMap, as a convenient way to intern its name.
This commit is contained in:
parent
ec4176167b
commit
92b84f849a
3 changed files with 104 additions and 13 deletions
70
tests/rustdoc-js/enum-variant-not-type.js
Normal file
70
tests/rustdoc-js/enum-variant-not-type.js
Normal file
|
@ -0,0 +1,70 @@
|
|||
const EXPECTED = [
|
||||
{
|
||||
'query': 'T -> T',
|
||||
'correction': null,
|
||||
'others': [
|
||||
{
|
||||
'path': 'enum_variant_not_type',
|
||||
'name': 'my_fn',
|
||||
},
|
||||
{
|
||||
'path': 'enum_variant_not_type::AutoCorrectConfounder',
|
||||
'name': 'assoc_type_acts_like_generic',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
'query': 'InsertUnnecessarilyLongTypeNameHere -> InsertUnnecessarilyLongTypeNameHere',
|
||||
'correction': null,
|
||||
'others': [
|
||||
{
|
||||
'path': 'enum_variant_not_type',
|
||||
'name': 'my_fn',
|
||||
},
|
||||
{
|
||||
'path': 'enum_variant_not_type::AutoCorrectConfounder',
|
||||
'name': 'assoc_type_acts_like_generic',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
'query': 'InsertUnnecessarilyLongTypeNameHere',
|
||||
'correction': null,
|
||||
'others': [
|
||||
{
|
||||
'path': 'enum_variant_not_type::AutoCorrectConfounder',
|
||||
'name': 'InsertUnnecessarilyLongTypeNameHere',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
'query': 'InsertUnnecessarilyLongTypeNameHereX',
|
||||
'correction': null,
|
||||
'others': [
|
||||
{
|
||||
'path': 'enum_variant_not_type::AutoCorrectConfounder',
|
||||
'name': 'InsertUnnecessarilyLongTypeNameHere',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
'query': 'T',
|
||||
'correction': null,
|
||||
'others': [
|
||||
{
|
||||
'path': 'enum_variant_not_type::MyTrait',
|
||||
'name': 'T',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
'query': 'T',
|
||||
'correction': null,
|
||||
'others': [
|
||||
{
|
||||
'path': 'enum_variant_not_type::MyTrait',
|
||||
'name': 'T',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
14
tests/rustdoc-js/enum-variant-not-type.rs
Normal file
14
tests/rustdoc-js/enum-variant-not-type.rs
Normal file
|
@ -0,0 +1,14 @@
|
|||
pub trait MyTrait {
|
||||
// Reduced from `arti` crate.
|
||||
// https://tpo.pages.torproject.net/core/doc/rust/tor_config/list_builder/trait.DirectDefaultEmptyListBuilderAccessors.html#associatedtype.T
|
||||
type T;
|
||||
fn not_appearing(&self) -> Option<&Self::T>;
|
||||
}
|
||||
|
||||
pub fn my_fn<X>(t: X) -> X { t }
|
||||
|
||||
pub trait AutoCorrectConfounder {
|
||||
type InsertUnnecessarilyLongTypeNameHere;
|
||||
fn assoc_type_acts_like_generic(&self, x: &Self::InsertUnnecessarilyLongTypeNameHere)
|
||||
-> Option<&Self::InsertUnnecessarilyLongTypeNameHere>;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue