diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2015-04-06 20:15:59 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2015-04-07 17:54:34 -0700 |
| commit | 8874fd496202994f0c14909b436dc169837ab0e7 (patch) | |
| tree | 6472a2f2590b2cf490a6e108656c951fc10f5ba8 | |
| parent | 8f6855c8c8e22efeea2f5766c2b653b674b1c9cf (diff) | |
| download | rust-8874fd496202994f0c14909b436dc169837ab0e7.tar.gz rust-8874fd496202994f0c14909b436dc169837ab0e7.zip | |
rustdoc: Show impls for references to types
It's somewhat common to impl traits for `&T` and `&mut T` so show these on the pages for `T` to ensure they're listed somewhere at least. Closes #20175
| -rw-r--r-- | src/librustdoc/html/render.rs | 7 | ||||
| -rw-r--r-- | src/test/rustdoc/issue-20175.rs | 20 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 85f538e7dc3..92fe5b019db 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -1059,7 +1059,12 @@ impl DocFolder for Cache { // Figure out the id of this impl. This may map to a // primitive rather than always to a struct/enum. let did = match i.for_ { - ResolvedPath { did, .. } => Some(did), + ResolvedPath { did, .. } | + BorrowedRef { + type_: box ResolvedPath { did, .. }, .. + } => { + Some(did) + } // References to primitives are picked up as well to // recognize implementations for &str, this may not diff --git a/src/test/rustdoc/issue-20175.rs b/src/test/rustdoc/issue-20175.rs new file mode 100644 index 00000000000..33ec4b75c41 --- /dev/null +++ b/src/test/rustdoc/issue-20175.rs @@ -0,0 +1,20 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +pub trait Foo { + fn foo(&self) {} +} + +pub struct Bar; + +// @has issue_20175/struct.Bar.html \ +// '//*[@id="method.foo"]' \ +// 'fn foo' +impl<'a> Foo for &'a Bar {} |
