diff --git a/src/librustc_save_analysis/lib.rs b/src/librustc_save_analysis/lib.rs index 2e494fdfad8b894bee857ce1be51491e6076dbba..8232a8efd541f242f43abdfabf1c21b5a64b3d3c 100644 --- a/src/librustc_save_analysis/lib.rs +++ b/src/librustc_save_analysis/lib.rs @@ -870,6 +870,17 @@ fn docs_for_attrs(&self, attrs: &[Attribute]) -> String { result.push_str(&val.as_str()); } result.push('\n'); + } else if let Some(meta_list) = attr.meta_item_list() { + meta_list.into_iter() + .filter(|it| it.check_name("include")) + .filter_map(|it| it.meta_item_list().map(|l| l.to_owned())) + .flat_map(|it| it) + .filter(|meta| meta.check_name("contents")) + .filter_map(|meta| meta.value_str()) + .for_each(|val| { + result.push_str(&val.as_str()); + result.push('\n'); + }); } } } diff --git a/src/test/run-make/save-analysis/extra-docs.md b/src/test/run-make/save-analysis/extra-docs.md new file mode 100644 index 0000000000000000000000000000000000000000..0605ca517ff3bdfaf4f613ef0a988ed61187a4d9 --- /dev/null +++ b/src/test/run-make/save-analysis/extra-docs.md @@ -0,0 +1 @@ +Extra docs for this struct. diff --git a/src/test/run-make/save-analysis/foo.rs b/src/test/run-make/save-analysis/foo.rs index 834a7554a555d4a48a37327f686bc6f3f76e2672..5b4e4802957af8e037c62f96500fe008e1818a55 100644 --- a/src/test/run-make/save-analysis/foo.rs +++ b/src/test/run-make/save-analysis/foo.rs @@ -12,6 +12,7 @@ #![feature(box_syntax)] #![feature(rustc_private)] #![feature(associated_type_defaults)] +#![feature(external_doc)] extern crate graphviz; // A simple rust project @@ -461,3 +462,6 @@ fn next(&mut self) -> Option { trait Foo { type Bar = FrameBuffer; } + +#[doc(include="extra-docs.md")] +struct StructWithDocs;