Skip to content

Commit 1a0b05f

Browse files
committed
Rollup merge of #30420 - petrochenkov:owned2, r=nrc
Part of rust-lang/rust#30095 not causing mysterious segfaults. r? @nrc
2 parents e74b6c0 + 8957d67 commit 1a0b05f

File tree

3 files changed

+33
-28
lines changed

3 files changed

+33
-28
lines changed

clean/mod.rs

+8-3
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ impl<T, U> Clean<U> for ty::Binder<T> where T: Clean<U> {
112112
}
113113
}
114114

115-
impl<T: Clean<U>, U> Clean<Vec<U>> for syntax::owned_slice::OwnedSlice<T> {
115+
impl<T: Clean<U>, U> Clean<Vec<U>> for P<[T]> {
116116
fn clean(&self, cx: &DocContext) -> Vec<U> {
117117
self.iter().map(|x| x.clean(cx)).collect()
118118
}
@@ -1584,8 +1584,13 @@ impl Clean<Type> for hir::Ty {
15841584
resolve_type(cx, p.clean(cx), self.id)
15851585
}
15861586
TyPath(Some(ref qself), ref p) => {
1587-
let mut trait_path = p.clone();
1588-
trait_path.segments.pop();
1587+
let mut segments: Vec<_> = p.segments.clone().into();
1588+
segments.pop();
1589+
let trait_path = hir::Path {
1590+
span: p.span,
1591+
global: p.global,
1592+
segments: segments.into(),
1593+
};
15891594
Type::QPath {
15901595
name: p.segments.last().unwrap().identifier.name.clean(cx),
15911596
self_type: box qself.ty.clean(cx),

doctree.rs

+21-21
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use rustc_front::hir;
2424

2525
pub struct Module {
2626
pub name: Option<Name>,
27-
pub attrs: Vec<ast::Attribute>,
27+
pub attrs: hir::HirVec<ast::Attribute>,
2828
pub where_outer: Span,
2929
pub where_inner: Span,
3030
pub extern_crates: Vec<ExternCrate>,
@@ -58,7 +58,7 @@ impl Module {
5858
depr: None,
5959
where_outer: syntax::codemap::DUMMY_SP,
6060
where_inner: syntax::codemap::DUMMY_SP,
61-
attrs : Vec::new(),
61+
attrs : hir::HirVec::new(),
6262
extern_crates: Vec::new(),
6363
imports : Vec::new(),
6464
structs : Vec::new(),
@@ -103,26 +103,26 @@ pub struct Struct {
103103
pub struct_type: StructType,
104104
pub name: Name,
105105
pub generics: hir::Generics,
106-
pub attrs: Vec<ast::Attribute>,
107-
pub fields: Vec<hir::StructField>,
106+
pub attrs: hir::HirVec<ast::Attribute>,
107+
pub fields: hir::HirVec<hir::StructField>,
108108
pub whence: Span,
109109
}
110110

111111
pub struct Enum {
112112
pub vis: hir::Visibility,
113113
pub stab: Option<attr::Stability>,
114114
pub depr: Option<attr::Deprecation>,
115-
pub variants: Vec<Variant>,
115+
pub variants: hir::HirVec<Variant>,
116116
pub generics: hir::Generics,
117-
pub attrs: Vec<ast::Attribute>,
117+
pub attrs: hir::HirVec<ast::Attribute>,
118118
pub id: NodeId,
119119
pub whence: Span,
120120
pub name: Name,
121121
}
122122

123123
pub struct Variant {
124124
pub name: Name,
125-
pub attrs: Vec<ast::Attribute>,
125+
pub attrs: hir::HirVec<ast::Attribute>,
126126
pub def: hir::VariantData,
127127
pub stab: Option<attr::Stability>,
128128
pub depr: Option<attr::Deprecation>,
@@ -131,7 +131,7 @@ pub struct Variant {
131131

132132
pub struct Function {
133133
pub decl: hir::FnDecl,
134-
pub attrs: Vec<ast::Attribute>,
134+
pub attrs: hir::HirVec<ast::Attribute>,
135135
pub id: NodeId,
136136
pub name: Name,
137137
pub vis: hir::Visibility,
@@ -149,7 +149,7 @@ pub struct Typedef {
149149
pub gen: hir::Generics,
150150
pub name: Name,
151151
pub id: ast::NodeId,
152-
pub attrs: Vec<ast::Attribute>,
152+
pub attrs: hir::HirVec<ast::Attribute>,
153153
pub whence: Span,
154154
pub vis: hir::Visibility,
155155
pub stab: Option<attr::Stability>,
@@ -162,7 +162,7 @@ pub struct Static {
162162
pub mutability: hir::Mutability,
163163
pub expr: P<hir::Expr>,
164164
pub name: Name,
165-
pub attrs: Vec<ast::Attribute>,
165+
pub attrs: hir::HirVec<ast::Attribute>,
166166
pub vis: hir::Visibility,
167167
pub stab: Option<attr::Stability>,
168168
pub depr: Option<attr::Deprecation>,
@@ -174,7 +174,7 @@ pub struct Constant {
174174
pub type_: P<hir::Ty>,
175175
pub expr: P<hir::Expr>,
176176
pub name: Name,
177-
pub attrs: Vec<ast::Attribute>,
177+
pub attrs: hir::HirVec<ast::Attribute>,
178178
pub vis: hir::Visibility,
179179
pub stab: Option<attr::Stability>,
180180
pub depr: Option<attr::Deprecation>,
@@ -185,10 +185,10 @@ pub struct Constant {
185185
pub struct Trait {
186186
pub unsafety: hir::Unsafety,
187187
pub name: Name,
188-
pub items: Vec<hir::TraitItem>,
188+
pub items: hir::HirVec<hir::TraitItem>,
189189
pub generics: hir::Generics,
190-
pub bounds: Vec<hir::TyParamBound>,
191-
pub attrs: Vec<ast::Attribute>,
190+
pub bounds: hir::HirVec<hir::TyParamBound>,
191+
pub attrs: hir::HirVec<ast::Attribute>,
192192
pub id: ast::NodeId,
193193
pub whence: Span,
194194
pub vis: hir::Visibility,
@@ -202,8 +202,8 @@ pub struct Impl {
202202
pub generics: hir::Generics,
203203
pub trait_: Option<hir::TraitRef>,
204204
pub for_: P<hir::Ty>,
205-
pub items: Vec<hir::ImplItem>,
206-
pub attrs: Vec<ast::Attribute>,
205+
pub items: hir::HirVec<hir::ImplItem>,
206+
pub attrs: hir::HirVec<ast::Attribute>,
207207
pub whence: Span,
208208
pub vis: hir::Visibility,
209209
pub stab: Option<attr::Stability>,
@@ -215,16 +215,16 @@ pub struct DefaultImpl {
215215
pub unsafety: hir::Unsafety,
216216
pub trait_: hir::TraitRef,
217217
pub id: ast::NodeId,
218-
pub attrs: Vec<ast::Attribute>,
218+
pub attrs: hir::HirVec<ast::Attribute>,
219219
pub whence: Span,
220220
}
221221

222222
pub struct Macro {
223223
pub name: Name,
224224
pub id: ast::NodeId,
225-
pub attrs: Vec<ast::Attribute>,
225+
pub attrs: hir::HirVec<ast::Attribute>,
226226
pub whence: Span,
227-
pub matchers: Vec<Span>,
227+
pub matchers: hir::HirVec<Span>,
228228
pub stab: Option<attr::Stability>,
229229
pub depr: Option<attr::Deprecation>,
230230
pub imported_from: Option<Name>,
@@ -234,14 +234,14 @@ pub struct ExternCrate {
234234
pub name: Name,
235235
pub path: Option<String>,
236236
pub vis: hir::Visibility,
237-
pub attrs: Vec<ast::Attribute>,
237+
pub attrs: hir::HirVec<ast::Attribute>,
238238
pub whence: Span,
239239
}
240240

241241
pub struct Import {
242242
pub id: NodeId,
243243
pub vis: hir::Visibility,
244-
pub attrs: Vec<ast::Attribute>,
244+
pub attrs: hir::HirVec<ast::Attribute>,
245245
pub node: hir::ViewPath_,
246246
pub whence: Span,
247247
}

visit_ast.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ use doctree::*;
3838

3939
pub struct RustdocVisitor<'a, 'tcx: 'a> {
4040
pub module: Module,
41-
pub attrs: Vec<ast::Attribute>,
41+
pub attrs: hir::HirVec<ast::Attribute>,
4242
pub cx: &'a core::DocContext<'a, 'tcx>,
4343
pub analysis: Option<&'a core::CrateAnalysis>,
4444
view_item_stack: HashSet<ast::NodeId>,
@@ -53,7 +53,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
5353
stack.insert(ast::CRATE_NODE_ID);
5454
RustdocVisitor {
5555
module: Module::new(None),
56-
attrs: Vec::new(),
56+
attrs: hir::HirVec::new(),
5757
cx: cx,
5858
analysis: analysis,
5959
view_item_stack: stack,
@@ -157,7 +157,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
157157
}
158158
}
159159

160-
pub fn visit_mod_contents(&mut self, span: Span, attrs: Vec<ast::Attribute> ,
160+
pub fn visit_mod_contents(&mut self, span: Span, attrs: hir::HirVec<ast::Attribute>,
161161
vis: hir::Visibility, id: ast::NodeId,
162162
m: &hir::Mod,
163163
name: Option<ast::Name>) -> Module {
@@ -192,7 +192,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
192192
let mine = paths.into_iter().filter(|path| {
193193
!self.resolve_id(path.node.id(), None, false, om,
194194
please_inline)
195-
}).collect::<Vec<hir::PathListItem>>();
195+
}).collect::<hir::HirVec<hir::PathListItem>>();
196196

197197
if mine.is_empty() {
198198
None

0 commit comments

Comments
 (0)