X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustdoc%2Fvisit_ast.rs;h=e3426fba1bca18426e8aa8fd1e9bbb34216bedee;hb=6f4ab9458a7ad06c8ce630604f533c8c0c0acef4;hp=4252f2981ed6193e1ba5d59166c7c7eea0b037ab;hpb=353bdb30e35aa03cc3055505687eb77b304441b1;p=rust.git diff --git a/src/librustdoc/visit_ast.rs b/src/librustdoc/visit_ast.rs index 4252f2981ed..e3426fba1bc 100644 --- a/src/librustdoc/visit_ast.rs +++ b/src/librustdoc/visit_ast.rs @@ -16,7 +16,6 @@ use syntax::abi; use syntax::ast; use syntax::attr; -use syntax::tokenstream::TokenStream; use syntax_pos::Span; use rustc::hir::map as hir_map; @@ -59,7 +58,7 @@ pub fn new(cx: &'a core::DocContext<'a, 'tcx>) -> RustdocVisitor<'a, 'tcx> { RustdocVisitor { module: Module::new(None), attrs: hir::HirVec::new(), - cx: cx, + cx, view_item_stack: stack, inlining: false, inside_public_path: true, @@ -100,8 +99,8 @@ pub fn visit_variant_data(&mut self, item: &hir::Item, let struct_type = struct_type_from_def(&*sd); Struct { id: item.id, - struct_type: struct_type, - name: name, + struct_type, + name, vis: item.vis.clone(), stab: self.stability(item.id), depr: self.deprecation(item.id), @@ -119,8 +118,8 @@ pub fn visit_union_data(&mut self, item: &hir::Item, let struct_type = struct_type_from_def(&*sd); Union { id: item.id, - struct_type: struct_type, - name: name, + struct_type, + name, vis: item.vis.clone(), stab: self.stability(item.id), depr: self.deprecation(item.id), @@ -136,7 +135,7 @@ pub fn visit_enum_def(&mut self, it: &hir::Item, params: &hir::Generics) -> Enum { debug!("Visiting enum"); Enum { - name: name, + name, variants: def.variants.iter().map(|v| Variant { name: v.node.name, attrs: v.node.attrs.clone(), @@ -170,13 +169,13 @@ pub fn visit_fn(&mut self, item: &hir::Item, depr: self.deprecation(item.id), attrs: item.attrs.clone(), decl: fd.clone(), - name: name, + name, whence: item.span, generics: gen.clone(), unsafety: *unsafety, - constness: constness, + constness, abi: *abi, - body: body, + body, } } @@ -214,19 +213,19 @@ pub fn visit_mod_contents(&mut self, span: Span, attrs: hir::HirVec continue, }; - let matchers = if let ast::ItemKind::MacroDef(ref tokens) = def.node { - let tts: Vec<_> = TokenStream::from(tokens.clone()).into_trees().collect(); + let matchers = if let ast::ItemKind::MacroDef(ref def) = def.node { + let tts: Vec<_> = def.stream().into_trees().collect(); tts.chunks(4).map(|arm| arm[0].span()).collect() } else { unreachable!() }; om.macros.push(Macro { - def_id: def_id, + def_id, attrs: def.attrs.clone().into(), name: def.ident.name, whence: def.span, - matchers: matchers, + matchers, stab: self.stability(def.id), depr: self.deprecation(def.id), imported_from: Some(imported_from), @@ -330,25 +329,21 @@ fn inherits_doc_hidden(cx: &core::DocContext, mut node: ast::NodeId) -> bool { if !self.view_item_stack.insert(def_node_id) { return false } let ret = match tcx.hir.get(def_node_id) { - hir_map::NodeItem(it) => { + hir_map::NodeItem(&hir::Item { node: hir::ItemMod(ref m), .. }) if glob => { let prev = mem::replace(&mut self.inlining, true); - if glob { - match it.node { - hir::ItemMod(ref m) => { - for i in &m.item_ids { - let i = self.cx.tcx.hir.expect_item(i.id); - self.visit_item(i, None, om); - } - } - hir::ItemEnum(..) => {} - _ => { panic!("glob not mapped to a module or enum"); } - } - } else { - self.visit_item(it, renamed, om); + for i in &m.item_ids { + let i = self.cx.tcx.hir.expect_item(i.id); + self.visit_item(i, None, om); } self.inlining = prev; true } + hir_map::NodeItem(it) if !glob => { + let prev = mem::replace(&mut self.inlining, true); + self.visit_item(it, renamed, om); + self.inlining = prev; + true + } _ => false, }; self.view_item_stack.remove(&def_node_id); @@ -379,7 +374,7 @@ pub fn visit_item(&mut self, item: &hir::Item, om.extern_crates.push(ExternCrate { cnum: cstore.extern_mod_stmt_cnum(item.id) .unwrap_or(LOCAL_CRATE), - name: name, + name, path: p.map(|x|x.to_string()), vis: item.vis.clone(), attrs: item.attrs.clone(), @@ -413,7 +408,7 @@ pub fn visit_item(&mut self, item: &hir::Item, } om.imports.push(Import { - name: name, + name, id: item.id, vis: item.vis.clone(), attrs: item.attrs.clone(), @@ -443,7 +438,7 @@ pub fn visit_item(&mut self, item: &hir::Item, let t = Typedef { ty: ty.clone(), gen: gen.clone(), - name: name, + name, id: item.id, attrs: item.attrs.clone(), whence: item.span, @@ -459,7 +454,7 @@ pub fn visit_item(&mut self, item: &hir::Item, mutability: mut_.clone(), expr: exp.clone(), id: item.id, - name: name, + name, attrs: item.attrs.clone(), whence: item.span, vis: item.vis.clone(), @@ -473,7 +468,7 @@ pub fn visit_item(&mut self, item: &hir::Item, type_: ty.clone(), expr: exp.clone(), id: item.id, - name: name, + name, attrs: item.attrs.clone(), whence: item.span, vis: item.vis.clone(), @@ -487,9 +482,9 @@ pub fn visit_item(&mut self, item: &hir::Item, .map(|ti| self.cx.tcx.hir.trait_item(ti.id).clone()) .collect(); let t = Trait { - unsafety: unsafety, - name: name, - items: items, + unsafety, + name, + items, generics: gen.clone(), bounds: b.iter().cloned().collect(), id: item.id, @@ -502,7 +497,13 @@ pub fn visit_item(&mut self, item: &hir::Item, om.traits.push(t); }, - hir::ItemImpl(unsafety, polarity, ref gen, ref tr, ref ty, ref item_ids) => { + hir::ItemImpl(unsafety, + polarity, + defaultness, + ref gen, + ref tr, + ref ty, + ref item_ids) => { // Don't duplicate impls when inlining, we'll pick them up // regardless of where they're located. if !self.inlining { @@ -510,12 +511,13 @@ pub fn visit_item(&mut self, item: &hir::Item, .map(|ii| self.cx.tcx.hir.impl_item(ii.id).clone()) .collect(); let i = Impl { - unsafety: unsafety, - polarity: polarity, + unsafety, + polarity, + defaultness, generics: gen.clone(), trait_: tr.clone(), for_: ty.clone(), - items: items, + items, attrs: item.attrs.clone(), id: item.id, whence: item.span, @@ -530,7 +532,7 @@ pub fn visit_item(&mut self, item: &hir::Item, // See comment above about ItemImpl. if !self.inlining { let i = DefaultImpl { - unsafety: unsafety, + unsafety, trait_: trait_ref.clone(), id: item.id, attrs: item.attrs.clone(), @@ -553,7 +555,7 @@ fn visit_local_macro(&self, def: &hir::MacroDef) -> Macro { attrs: def.attrs.clone(), name: def.name, whence: def.span, - matchers: matchers, + matchers, stab: self.stability(def.id), depr: self.deprecation(def.id), imported_from: None,