diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-01-25 17:48:06 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-01-25 21:04:53 -0800 |
| commit | a25bc195e25fcce97301b907e2a03501daafb9b9 (patch) | |
| tree | 74b49687628a8deeba65e518a6eb7f68d93cb981 /src/rustdoc | |
| parent | 87c3a5c1a3e2daee39afb60be83133bf4caf4413 (diff) | |
| download | rust-a25bc195e25fcce97301b907e2a03501daafb9b9.tar.gz rust-a25bc195e25fcce97301b907e2a03501daafb9b9.zip | |
rustdoc: Parse variant doc attributes
Diffstat (limited to 'src/rustdoc')
| -rw-r--r-- | src/rustdoc/attr_parser.rs | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/src/rustdoc/attr_parser.rs b/src/rustdoc/attr_parser.rs index f822023a054..bcdc093aed6 100644 --- a/src/rustdoc/attr_parser.rs +++ b/src/rustdoc/attr_parser.rs @@ -9,8 +9,10 @@ import rustc::syntax::ast; import rustc::front::attr; import core::tuple; -export crate_attrs, mod_attrs, fn_attrs, arg_attrs, const_attrs, enum_attrs; -export parse_crate, parse_mod, parse_fn, parse_const, parse_enum; +export crate_attrs, mod_attrs, fn_attrs, arg_attrs, + const_attrs, enum_attrs, variant_attrs; +export parse_crate, parse_mod, parse_fn, parse_const, + parse_enum, parse_variant; type crate_attrs = { name: option<str> @@ -370,3 +372,48 @@ fn should_parse_enum_long_doc() { assert attrs.brief == some("a"); assert attrs.desc == some("b"); } + +fn parse_variant(attrs: [ast::attribute]) -> variant_attrs { + parse_short_doc_or( + attrs, + {|desc| + { + desc: desc + } + }, + {|_items, brief, desc| + if option::is_some(brief) && option::is_some(desc) { + // FIXME: Warn about dropping brief description + } + + { + // Prefer desc over brief + desc: option::maybe(brief, desc, {|s| some(s) }) + } + } + ) +} + +#[test] +fn should_parse_variant_short_doc() { + let source = "#[doc = \"a\"]"; + let attrs = test::parse_attributes(source); + let attrs = parse_variant(attrs); + assert attrs.desc == some("a"); +} + +#[test] +fn should_parse_variant_brief_doc() { + let source = "#[doc(brief = \"a\")]"; + let attrs = test::parse_attributes(source); + let attrs = parse_variant(attrs); + assert attrs.desc == some("a"); +} + +#[test] +fn should_parse_variant_long_doc() { + let source = "#[doc(desc = \"a\")]"; + let attrs = test::parse_attributes(source); + let attrs = parse_variant(attrs); + assert attrs.desc == some("a"); +} |
