Skip to content

Commit a8ab69b

Browse files
committed
---
yaml --- r: 11743 b: refs/heads/master c: f9755c6 h: refs/heads/master i: 11741: e83241b 11739: 5652cb8 11735: 2d25c54 11727: 6250005 11711: 348c8dc v: v3
1 parent fe7f63a commit a8ab69b

File tree

7 files changed

+60
-231
lines changed

7 files changed

+60
-231
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: effe4559d23b117f41448007fd870726f86d17d7
2+
refs/heads/master: f9755c666d9e3b5134fd977bf9653f2d29347e8a
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf

trunk/src/rustdoc/attr_parser.rs

Lines changed: 21 additions & 156 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,14 @@ import rustc::syntax::ast;
99
import rustc::front::attr;
1010
import core::tuple;
1111

12-
export crate_attrs, basic_attrs, variant_attrs;
13-
export parse_crate, parse_basic, parse_variant;
12+
export crate_attrs;
13+
export parse_crate, parse_desc;
1414
export parse_hidden;
1515

1616
type crate_attrs = {
1717
name: option<str>
1818
};
1919

20-
type basic_attrs = {
21-
brief: option<str>,
22-
desc: option<str>
23-
};
24-
25-
type variant_attrs = {
26-
desc: option<str>
27-
};
28-
2920
#[cfg(test)]
3021
mod test {
3122

@@ -102,172 +93,46 @@ fn should_not_extract_crate_name_if_no_name_value_in_link_attribute() {
10293
assert attrs.name == none;
10394
}
10495

105-
fn parse_basic(
106-
attrs: [ast::attribute]
107-
) -> {
108-
brief: option<str>,
109-
desc: option<str>
110-
} {
111-
parse_short_doc_or(
112-
attrs,
113-
{|desc|
114-
{
115-
brief: none,
116-
desc: desc
117-
}
118-
},
119-
{|_items, brief, desc|
120-
{
121-
brief: brief,
122-
desc: desc
123-
}
124-
}
125-
)
96+
fn parse_desc(attrs: [ast::attribute]) -> option<str> {
97+
alt doc_meta(attrs) {
98+
some(meta) {
99+
attr::get_meta_item_value_str(meta)
100+
}
101+
none { none }
102+
}
126103
}
127104

128105
#[test]
129-
fn parse_basic_should_handle_undocumented_mods() {
106+
fn parse_desc_should_handle_undocumented_mods() {
130107
let source = "";
131108
let attrs = test::parse_attributes(source);
132-
let attrs = parse_basic(attrs);
133-
assert attrs.brief == none;
134-
assert attrs.desc == none;
109+
let attrs = parse_desc(attrs);
110+
assert attrs == none;
135111
}
136112

137113
#[test]
138-
fn parse_basic_should_parse_simple_doc_attributes() {
114+
fn parse_desc_should_parse_simple_doc_attributes() {
139115
let source = "#[doc = \"basic\"]";
140116
let attrs = test::parse_attributes(source);
141-
let attrs = parse_basic(attrs);
142-
assert attrs.desc == some("basic");
143-
}
144-
145-
#[test]
146-
fn parse_basic_should_parse_the_brief_description() {
147-
let source = "#[doc(brief = \"short\")]";
148-
let attrs = test::parse_attributes(source);
149-
let attrs = parse_basic(attrs);
150-
assert attrs.brief == some("short");
151-
}
152-
153-
#[test]
154-
fn parse_basic_should_parse_the_long_description() {
155-
let source = "#[doc(desc = \"description\")]";
156-
let attrs = test::parse_attributes(source);
157-
let attrs = parse_basic(attrs);
158-
assert attrs.desc == some("description");
159-
}
160-
161-
fn parse_short_doc_or<T>(
162-
attrs: [ast::attribute],
163-
handle_short: fn&(
164-
short_desc: option<str>
165-
) -> T,
166-
parse_long: fn&(
167-
doc_items: [@ast::meta_item],
168-
brief: option<str>,
169-
desc: option<str>
170-
) -> T
171-
) -> T {
172-
alt doc_meta(attrs) {
173-
some(meta) {
174-
alt attr::get_meta_item_value_str(meta) {
175-
some(desc) { handle_short(some(desc)) }
176-
none {
177-
alt attr::get_meta_item_list(meta) {
178-
some(list) {
179-
let brief = attr::meta_item_value_from_list(list, "brief");
180-
let desc = attr::meta_item_value_from_list(list, "desc");
181-
parse_long(list, brief, desc)
182-
}
183-
none {
184-
handle_short(none)
185-
}
186-
}
187-
}
188-
}
189-
}
190-
none {
191-
handle_short(none)
192-
}
193-
}
117+
let attrs = parse_desc(attrs);
118+
assert attrs == some("basic");
194119
}
195120

196-
fn parse_long_doc<T>(
197-
attrs: [ast::attribute],
198-
parse_long: fn&(doc_items: [@ast::meta_item]) -> T
199-
) -> T {
121+
fn parse_hidden(attrs: [ast::attribute]) -> bool {
200122
alt doc_meta(attrs) {
201123
some(meta) {
202124
alt attr::get_meta_item_list(meta) {
203-
some(list) {
204-
parse_long(list)
205-
}
206-
none {
207-
parse_long([])
125+
some(metas) {
126+
let hiddens = attr::find_meta_items_by_name(metas, "hidden");
127+
vec::is_not_empty(hiddens)
208128
}
129+
none { false }
209130
}
210131
}
211-
none { parse_long([]) }
132+
none { false }
212133
}
213134
}
214135

215-
fn parse_variant(attrs: [ast::attribute]) -> variant_attrs {
216-
parse_short_doc_or(
217-
attrs,
218-
{|desc|
219-
{
220-
desc: desc
221-
}
222-
},
223-
{|_items, brief, desc|
224-
if option::is_some(brief) && option::is_some(desc) {
225-
// FIXME: Warn about dropping brief description
226-
}
227-
228-
{
229-
// Prefer desc over brief
230-
desc: option::maybe(brief, desc, {|s| some(s) })
231-
}
232-
}
233-
)
234-
}
235-
236-
#[test]
237-
fn should_parse_variant_short_doc() {
238-
let source = "#[doc = \"a\"]";
239-
let attrs = test::parse_attributes(source);
240-
let attrs = parse_variant(attrs);
241-
assert attrs.desc == some("a");
242-
}
243-
244-
#[test]
245-
fn should_parse_variant_brief_doc() {
246-
let source = "#[doc(brief = \"a\")]";
247-
let attrs = test::parse_attributes(source);
248-
let attrs = parse_variant(attrs);
249-
assert attrs.desc == some("a");
250-
}
251-
252-
#[test]
253-
fn should_parse_variant_long_doc() {
254-
let source = "#[doc(desc = \"a\")]";
255-
let attrs = test::parse_attributes(source);
256-
let attrs = parse_variant(attrs);
257-
assert attrs.desc == some("a");
258-
}
259-
260-
fn parse_hidden(attrs: [ast::attribute]) -> bool {
261-
parse_short_doc_or(
262-
attrs,
263-
{|_desc| false },
264-
{|metas, _brief, _desc|
265-
let hiddens = attr::find_meta_items_by_name(metas, "hidden");
266-
vec::is_not_empty(hiddens)
267-
}
268-
)
269-
}
270-
271136
#[test]
272137
fn shoulde_parse_hidden_attribute() {
273138
let source = "#[doc(hidden)]";

trunk/src/rustdoc/attr_pass.rs

Lines changed: 13 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,17 @@ fn fold_item(
7272
let srv = fold.ctxt;
7373
let doc = fold::default_seq_fold_item(fold, doc);
7474

75-
let attrs = if doc.id == ast::crate_node_id {
75+
let desc = if doc.id == ast::crate_node_id {
7676
// This is the top-level mod, use the crate attributes
7777
astsrv::exec(srv) {|ctxt|
78-
attr_parser::parse_basic(ctxt.ast.node.attrs)
78+
attr_parser::parse_desc(ctxt.ast.node.attrs)
7979
}
8080
} else {
81-
parse_item_attrs(srv, doc.id, attr_parser::parse_basic)
81+
parse_item_attrs(srv, doc.id, attr_parser::parse_desc)
8282
};
8383

8484
{
85-
brief: attrs.brief,
86-
desc: attrs.desc
85+
desc: desc
8786
with doc
8887
}
8988
}
@@ -134,14 +133,6 @@ fn should_extract_fn_attributes() {
134133
assert doc.cratemod().fns()[0].desc() == some("test");
135134
}
136135

137-
#[test]
138-
fn should_extract_const_docs() {
139-
let doc = test::mk_doc("#[doc(brief = \"foo\", desc = \"bar\")]\
140-
const a: bool = true;");
141-
assert doc.cratemod().consts()[0].brief() == some("foo");
142-
assert doc.cratemod().consts()[0].desc() == some("bar");
143-
}
144-
145136
fn fold_enum(
146137
fold: fold::fold<astsrv::srv>,
147138
doc: doc::enumdoc
@@ -153,7 +144,7 @@ fn fold_enum(
153144

154145
{
155146
variants: par::anymap(doc.variants) {|variant|
156-
let attrs = astsrv::exec(srv) {|ctxt|
147+
let desc = astsrv::exec(srv) {|ctxt|
157148
alt check ctxt.ast_map.get(doc_id) {
158149
ast_map::node_item(@{
159150
node: ast::item_enum(ast_variants, _), _
@@ -163,13 +154,13 @@ fn fold_enum(
163154
v.node.name == variant.name
164155
});
165156

166-
attr_parser::parse_variant(ast_variant.node.attrs)
157+
attr_parser::parse_desc(ast_variant.node.attrs)
167158
}
168159
}
169160
};
170161

171162
{
172-
desc: attrs.desc
163+
desc: desc
173164
with variant
174165
}
175166
}
@@ -179,9 +170,8 @@ fn fold_enum(
179170

180171
#[test]
181172
fn should_extract_enum_docs() {
182-
let doc = test::mk_doc("#[doc(brief = \"a\", desc = \"b\")]\
173+
let doc = test::mk_doc("#[doc = \"b\"]\
183174
enum a { v }");
184-
assert doc.cratemod().enums()[0].brief() == some("a");
185175
assert doc.cratemod().enums()[0].desc() == some("b");
186176
}
187177

@@ -211,20 +201,20 @@ fn merge_method_attrs(
211201
) -> [doc::methoddoc] {
212202

213203
// Create an assoc list from method name to attributes
214-
let attrs: [(str, attr_parser::basic_attrs)] = astsrv::exec(srv) {|ctxt|
204+
let attrs: [(str, option<str>)] = astsrv::exec(srv) {|ctxt|
215205
alt ctxt.ast_map.get(item_id) {
216206
ast_map::node_item(@{
217207
node: ast::item_iface(_, methods), _
218208
}, _) {
219209
par::seqmap(methods) {|method|
220-
(method.ident, attr_parser::parse_basic(method.attrs))
210+
(method.ident, attr_parser::parse_desc(method.attrs))
221211
}
222212
}
223213
ast_map::node_item(@{
224214
node: ast::item_impl(_, _, _, methods), _
225215
}, _) {
226216
par::seqmap(methods) {|method|
227-
(method.ident, attr_parser::parse_basic(method.attrs))
217+
(method.ident, attr_parser::parse_desc(method.attrs))
228218
}
229219
}
230220
_ { fail "unexpected item" }
@@ -233,11 +223,10 @@ fn merge_method_attrs(
233223

234224
vec::map2(docs, attrs) {|doc, attrs|
235225
assert doc.name == tuple::first(attrs);
236-
let basic_attrs = tuple::second(attrs);
226+
let desc = tuple::second(attrs);
237227

238228
{
239-
brief: basic_attrs.brief,
240-
desc: basic_attrs.desc
229+
desc: desc
241230
with doc
242231
}
243232
}
@@ -290,15 +279,6 @@ fn should_extract_impl_method_docs() {
290279
assert doc.cratemod().impls()[0].methods[0].desc == some("desc");
291280
}
292281

293-
#[test]
294-
fn should_extract_type_docs() {
295-
let doc = test::mk_doc(
296-
"#[doc(brief = \"brief\", desc = \"desc\")]\
297-
type t = int;");
298-
assert doc.cratemod().types()[0].brief() == some("brief");
299-
assert doc.cratemod().types()[0].desc() == some("desc");
300-
}
301-
302282
#[cfg(test)]
303283
mod test {
304284
fn mk_doc(source: str) -> doc::doc {

trunk/src/rustdoc/markdown_index_pass.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ fn should_index_mod_contents_multi_page() {
145145
fn should_add_brief_desc_to_index() {
146146
let doc = test::mk_doc(
147147
config::doc_per_mod,
148-
"#[doc(brief = \"test\")] mod a { }"
148+
"#[doc = \"test\"] mod a { }"
149149
);
150150
assert option::get(doc.cratemod().index).entries[0].brief == some("test");
151151
}
@@ -160,6 +160,7 @@ mod test {
160160
};
161161
let doc = extract::from_srv(srv, "");
162162
let doc = attr_pass::mk_pass().f(srv, doc);
163+
let doc = desc_to_brief_pass::mk_pass().f(srv, doc);
163164
let doc = path_pass::mk_pass().f(srv, doc);
164165
run(srv, doc, config)
165166
}

0 commit comments

Comments
 (0)