rustdoc: handle generics better when matching notable traits
This commit makes the `clean::Type::is_same` non-commutative, so that a generic `impl` matches a concrete return, but a generic return does not match a concrete `impl`. It makes slice and vector Write for `u8` not match on every generic return value.
This commit is contained in:
parent
c6015851f7
commit
ee6b228b6a
5 changed files with 96 additions and 6 deletions
35
tests/rustdoc/notable-trait/notable-trait-generics.rs
Normal file
35
tests/rustdoc/notable-trait/notable-trait-generics.rs
Normal file
|
@ -0,0 +1,35 @@
|
|||
#![feature(doc_notable_trait)]
|
||||
|
||||
// Notable traits SHOULD be shown when the `impl` has a generic type and the
|
||||
// return type has a concrete type.
|
||||
pub mod generic_return {
|
||||
pub struct Wrapper<T>(T);
|
||||
|
||||
#[doc(notable_trait)]
|
||||
pub trait NotableTrait {}
|
||||
|
||||
impl NotableTrait for Wrapper<u8> {}
|
||||
|
||||
// @has notable_trait_generics/generic_return/fn.returning.html
|
||||
// @!has - '//a[@class="tooltip"]/@data-notable-ty' 'Wrapper<T>'
|
||||
pub fn returning<T>() -> Wrapper<T> {
|
||||
loop {}
|
||||
}
|
||||
}
|
||||
|
||||
// Notable traits SHOULD NOT be shown when the `impl` has a concrete type and
|
||||
// the return type has a generic type.
|
||||
pub mod generic_impl {
|
||||
pub struct Wrapper<T>(T);
|
||||
|
||||
#[doc(notable_trait)]
|
||||
pub trait NotableTrait {}
|
||||
|
||||
impl<T> NotableTrait for Wrapper<T> {}
|
||||
|
||||
// @has notable_trait_generics/generic_impl/fn.returning.html
|
||||
// @has - '//a[@class="tooltip"]/@data-notable-ty' 'Wrapper<u8>'
|
||||
pub fn returning() -> Wrapper<u8> {
|
||||
loop {}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue