Skip to content

Commit 4d81e8b

Browse files
committed
Use Config::full_docs to trim documentation
1 parent 84d93a4 commit 4d81e8b

File tree

2 files changed

+44
-38
lines changed

2 files changed

+44
-38
lines changed

src/librustc_save_analysis/dump_visitor.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ use syntax::ptr::P;
4141
use syntax::codemap::Spanned;
4242
use syntax_pos::*;
4343

44-
use {escape, generated_code, SaveContext, PathCollector, docs_for_attrs, lower_attributes, Dump};
44+
use {escape, generated_code, SaveContext, PathCollector, lower_attributes, Dump};
4545
use span_utils::SpanUtils;
4646
use sig;
4747

@@ -531,7 +531,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
531531
parent: Some(::id_from_def_id(parent_id)),
532532
children: vec![],
533533
decl_id: None,
534-
docs: docs_for_attrs(attrs),
534+
docs: self.save_ctxt.docs_for_attrs(attrs),
535535
sig,
536536
attributes: lower_attributes(attrs.to_owned(), &self.save_ctxt),
537537
});
@@ -580,7 +580,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
580580
parent: None,
581581
children: fields,
582582
decl_id: None,
583-
docs: docs_for_attrs(&item.attrs),
583+
docs: self.save_ctxt.docs_for_attrs(&item.attrs),
584584
sig: sig::item_signature(item, &self.save_ctxt),
585585
attributes: lower_attributes(item.attrs.clone(), &self.save_ctxt),
586586
});
@@ -637,7 +637,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
637637
parent,
638638
children: vec![],
639639
decl_id: None,
640-
docs: docs_for_attrs(&variant.node.attrs),
640+
docs: self.save_ctxt.docs_for_attrs(&variant.node.attrs),
641641
sig: sig::variant_signature(variant, &self.save_ctxt),
642642
attributes: lower_attributes(variant.node.attrs.clone(),
643643
&self.save_ctxt),
@@ -671,7 +671,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
671671
parent,
672672
children: vec![],
673673
decl_id: None,
674-
docs: docs_for_attrs(&variant.node.attrs),
674+
docs: self.save_ctxt.docs_for_attrs(&variant.node.attrs),
675675
sig: sig::variant_signature(variant, &self.save_ctxt),
676676
attributes: lower_attributes(variant.node.attrs.clone(),
677677
&self.save_ctxt),
@@ -742,7 +742,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
742742
parent: None,
743743
children,
744744
decl_id: None,
745-
docs: docs_for_attrs(&item.attrs),
745+
docs: self.save_ctxt.docs_for_attrs(&item.attrs),
746746
sig: sig::item_signature(item, &self.save_ctxt),
747747
attributes: lower_attributes(item.attrs.clone(), &self.save_ctxt),
748748
});
@@ -1039,7 +1039,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
10391039
parent: Some(::id_from_def_id(trait_id)),
10401040
children: vec![],
10411041
decl_id: None,
1042-
docs: docs_for_attrs(&trait_item.attrs),
1042+
docs: self.save_ctxt.docs_for_attrs(&trait_item.attrs),
10431043
sig: sig::assoc_type_signature(trait_item.id,
10441044
trait_item.ident,
10451045
Some(bounds),
@@ -1113,7 +1113,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump +'ll> Visitor<'l> for DumpVisitor<'l, 'tcx, 'll,
11131113
children,
11141114
parent: None,
11151115
decl_id: None,
1116-
docs: docs_for_attrs(attrs),
1116+
docs: self.save_ctxt.docs_for_attrs(attrs),
11171117
sig: None,
11181118
attributes: lower_attributes(attrs.to_owned(), &self.save_ctxt),
11191119
});
@@ -1250,7 +1250,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump +'ll> Visitor<'l> for DumpVisitor<'l, 'tcx, 'll,
12501250
parent: None,
12511251
children: vec![],
12521252
decl_id: None,
1253-
docs: docs_for_attrs(&item.attrs),
1253+
docs: self.save_ctxt.docs_for_attrs(&item.attrs),
12541254
sig: sig::item_signature(item, &self.save_ctxt),
12551255
attributes: lower_attributes(item.attrs.clone(), &self.save_ctxt),
12561256
});

src/librustc_save_analysis/lib.rs

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
160160
parent: None,
161161
children: vec![],
162162
decl_id: None,
163-
docs: docs_for_attrs(&item.attrs),
163+
docs: self.docs_for_attrs(&item.attrs),
164164
sig: sig::foreign_item_signature(item, self),
165165
attributes: lower_attributes(item.attrs.clone(), self),
166166
}))
@@ -183,7 +183,7 @@ impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
183183
parent: None,
184184
children: vec![],
185185
decl_id: None,
186-
docs: docs_for_attrs(&item.attrs),
186+
docs: self.docs_for_attrs(&item.attrs),
187187
sig: sig::foreign_item_signature(item, self),
188188
attributes: lower_attributes(item.attrs.clone(), self),
189189
}))
@@ -207,7 +207,7 @@ impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
207207
parent: None,
208208
children: vec![],
209209
decl_id: None,
210-
docs: docs_for_attrs(&item.attrs),
210+
docs: self.docs_for_attrs(&item.attrs),
211211
sig: sig::item_signature(item, self),
212212
attributes: lower_attributes(item.attrs.clone(), self),
213213
}))
@@ -236,7 +236,7 @@ impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
236236
parent: None,
237237
children: vec![],
238238
decl_id: None,
239-
docs: docs_for_attrs(&item.attrs),
239+
docs: self.docs_for_attrs(&item.attrs),
240240
sig: sig::item_signature(item, self),
241241
attributes: lower_attributes(item.attrs.clone(), self),
242242
}))
@@ -259,7 +259,7 @@ impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
259259
parent: None,
260260
children: vec![],
261261
decl_id: None,
262-
docs: docs_for_attrs(&item.attrs),
262+
docs: self.docs_for_attrs(&item.attrs),
263263
sig: sig::item_signature(item, self),
264264
attributes: lower_attributes(item.attrs.clone(), self),
265265
}))
@@ -283,7 +283,7 @@ impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
283283
parent: None,
284284
children: m.items.iter().map(|i| id_from_node_id(i.id, self)).collect(),
285285
decl_id: None,
286-
docs: docs_for_attrs(&item.attrs),
286+
docs: self.docs_for_attrs(&item.attrs),
287287
sig: sig::item_signature(item, self),
288288
attributes: lower_attributes(item.attrs.clone(), self),
289289
}))
@@ -311,7 +311,7 @@ impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
311311
.map(|v| id_from_node_id(v.node.data.id(), self))
312312
.collect(),
313313
decl_id: None,
314-
docs: docs_for_attrs(&item.attrs),
314+
docs: self.docs_for_attrs(&item.attrs),
315315
sig: sig::item_signature(item, self),
316316
attributes: lower_attributes(item.attrs.to_owned(), self),
317317
}))
@@ -372,7 +372,7 @@ impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
372372
parent: Some(id_from_node_id(scope, self)),
373373
children: vec![],
374374
decl_id: None,
375-
docs: docs_for_attrs(&field.attrs),
375+
docs: self.docs_for_attrs(&field.attrs),
376376
sig: sig::field_signature(field, self),
377377
attributes: lower_attributes(field.attrs.clone(), self),
378378
})
@@ -417,7 +417,7 @@ impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
417417
result.push_str(">");
418418

419419
(result, trait_id, decl_id,
420-
docs_for_attrs(&item.attrs),
420+
self.docs_for_attrs(&item.attrs),
421421
item.attrs.to_vec())
422422
}
423423
_ => {
@@ -442,7 +442,7 @@ impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
442442
Some(Node::NodeItem(item)) => {
443443
(format!("::{}", self.tcx.item_path_str(def_id)),
444444
Some(def_id), None,
445-
docs_for_attrs(&item.attrs),
445+
self.docs_for_attrs(&item.attrs),
446446
item.attrs.to_vec())
447447
}
448448
r => {
@@ -771,6 +771,31 @@ impl<'l, 'tcx: 'l> SaveContext<'l, 'tcx> {
771771
pub fn enclosing_scope(&self, id: NodeId) -> NodeId {
772772
self.tcx.hir.get_enclosing_scope(id).unwrap_or(CRATE_NODE_ID)
773773
}
774+
775+
fn docs_for_attrs(&self, attrs: &[Attribute]) -> String {
776+
let mut result = String::new();
777+
778+
for attr in attrs {
779+
if attr.check_name("doc") {
780+
if let Some(val) = attr.value_str() {
781+
if attr.is_sugared_doc {
782+
result.push_str(&strip_doc_comment_decoration(&val.as_str()));
783+
} else {
784+
result.push_str(&val.as_str());
785+
}
786+
result.push('\n');
787+
}
788+
}
789+
}
790+
791+
if !self.config.full_docs {
792+
if let Some(index) = result.find("\n\n") {
793+
result.truncate(index);
794+
}
795+
}
796+
797+
result
798+
}
774799
}
775800

776801
fn make_signature(decl: &ast::FnDecl, generics: &ast::Generics) -> String {
@@ -847,25 +872,6 @@ impl<'a> Visitor<'a> for PathCollector {
847872
}
848873
}
849874

850-
fn docs_for_attrs(attrs: &[Attribute]) -> String {
851-
let mut result = String::new();
852-
853-
for attr in attrs {
854-
if attr.check_name("doc") {
855-
if let Some(val) = attr.value_str() {
856-
if attr.is_sugared_doc {
857-
result.push_str(&strip_doc_comment_decoration(&val.as_str()));
858-
} else {
859-
result.push_str(&val.as_str());
860-
}
861-
result.push('\n');
862-
}
863-
}
864-
}
865-
866-
result
867-
}
868-
869875
#[derive(Clone, Copy, Debug, RustcEncodable)]
870876
pub enum Format {
871877
Json,

0 commit comments

Comments
 (0)