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 or the MIT license +// , 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 {}