Add tests against weird provided/required method behaviour
In `test/rustdoc/manual_impl.rs` there are now three structs: * S1 implements and documents required method `a_method`. * S2 implements and documents `a_method` as well as provided method `b_method`. * S3 implements `a_method` and `b_method`, but only documents `b_method`. For a struct, we want the rendered trait impls to include documentation if and only if it appears on the trait implementation itself (since users can just go to the trait definition for anything not covered in the impl docs). This means we expect: * S1, S2, and S3 to all include top-level trait impl docs. * S1, S2, and S3 to exclude all trait definition docs. * S1 to show impl docs for `a_method`. * S2 to show impl docs for `a_method` and `b_method`. * S3 to show impl docs for `b_method`. These tests cover those cases.
This commit is contained in:
parent
d8d8669439
commit
d95ca2822c
@ -8,19 +8,67 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
/// Docs associated with the trait definition.
|
||||
pub trait T {
|
||||
/// Docs associated with the trait a_method definition.
|
||||
fn a_method(&self) -> usize;
|
||||
|
||||
/// Docs associated with the trait b_method definition.
|
||||
fn b_method(&self) -> usize {
|
||||
self.a_method()
|
||||
}
|
||||
}
|
||||
|
||||
// @has manual_impl/struct.S.html '//*[@class="trait"]' 'T'
|
||||
// @has - '//*[@class="docblock"]' 'Docs associated with the trait implementation.'
|
||||
// @has - '//*[@class="docblock"]' 'Docs associated with the trait method implementation.'
|
||||
pub struct S(usize);
|
||||
// @has manual_impl/struct.S1.html '//*[@class="trait"]' 'T'
|
||||
// @has - '//*[@class="docblock"]' 'Docs associated with the S1 trait implementation.'
|
||||
// @has - '//*[@class="docblock"]' 'Docs associated with the S1 trait a_method implementation.'
|
||||
// @!has - '//*[@class="docblock"]' 'Docs associated with the trait a_method definition.'
|
||||
// @!has - '//*[@class="docblock"]' 'Docs associated with the trait b_method definition.'
|
||||
pub struct S1(usize);
|
||||
|
||||
/// Docs associated with the trait implementation.
|
||||
impl T for S {
|
||||
/// Docs associated with the trait method implementation.
|
||||
/// Docs associated with the S1 trait implementation.
|
||||
impl T for S1 {
|
||||
/// Docs associated with the S1 trait a_method implementation.
|
||||
fn a_method(&self) -> usize {
|
||||
self.0
|
||||
}
|
||||
}
|
||||
|
||||
// @has manual_impl/struct.S2.html '//*[@class="trait"]' 'T'
|
||||
// @has - '//*[@class="docblock"]' 'Docs associated with the S2 trait implementation.'
|
||||
// @has - '//*[@class="docblock"]' 'Docs associated with the S2 trait a_method implementation.'
|
||||
// @has - '//*[@class="docblock"]' 'Docs associated with the S2 trait b_method implementation.'
|
||||
// @!has - '//*[@class="docblock"]' 'Docs associated with the trait a_method definition.'
|
||||
// @!has - '//*[@class="docblock"]' 'Docs associated with the trait b_method definition.'
|
||||
pub struct S2(usize);
|
||||
|
||||
/// Docs associated with the S2 trait implementation.
|
||||
impl T for S2 {
|
||||
/// Docs associated with the S2 trait a_method implementation.
|
||||
fn a_method(&self) -> usize {
|
||||
self.0
|
||||
}
|
||||
|
||||
/// Docs associated with the S2 trait b_method implementation.
|
||||
fn b_method(&self) -> usize {
|
||||
5
|
||||
}
|
||||
}
|
||||
|
||||
// @has manual_impl/struct.S3.html '//*[@class="trait"]' 'T'
|
||||
// @has - '//*[@class="docblock"]' 'Docs associated with the S3 trait implementation.'
|
||||
// @has - '//*[@class="docblock"]' 'Docs associated with the S3 trait b_method implementation.'
|
||||
// @!has - '//*[@class="docblock"]' 'Docs associated with the trait a_method definition.'
|
||||
pub struct S3(usize);
|
||||
|
||||
/// Docs associated with the S3 trait implementation.
|
||||
impl T for S3 {
|
||||
fn a_method(&self) -> usize {
|
||||
self.0
|
||||
}
|
||||
|
||||
/// Docs associated with the S3 trait b_method implementation.
|
||||
fn b_method(&self) -> usize {
|
||||
5
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user