diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index e721b66779f..ac336fe45e5 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -1468,6 +1468,13 @@ impl<'a> Item<'a> {
return None;
}
} else {
+ // Macros from other libraries get special filenames which we can
+ // safely ignore.
+ if self.item.source.filename.starts_with("<") &&
+ self.item.source.filename.ends_with("macros>") {
+ return None;
+ }
+
let (krate, src_root) = match cache.extern_locations.get(&self.item.def_id.krate) {
Some(&(ref name, ref src, Local)) => (name, src),
Some(&(ref name, ref src, Remote(ref s))) => {