Skip to content

Commit e2a5c78

Browse files
authored
Merge pull request #2043 from sunjay/lift_generics
Lifted generics to account for changes in rust-lang/rust#44766
2 parents 4022b09 + 3f11c4b commit e2a5c78

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

src/items.rs

+10-5
Original file line numberDiff line numberDiff line change
@@ -184,25 +184,29 @@ impl<'a> FnSig<'a> {
184184
}
185185
}
186186

187-
pub fn from_method_sig(method_sig: &'a ast::MethodSig) -> FnSig {
187+
pub fn from_method_sig(
188+
method_sig: &'a ast::MethodSig,
189+
generics: &'a ast::Generics,
190+
) -> FnSig<'a> {
188191
FnSig {
189192
unsafety: method_sig.unsafety,
190193
constness: method_sig.constness.node,
191194
defaultness: ast::Defaultness::Final,
192195
abi: method_sig.abi,
193196
decl: &*method_sig.decl,
194-
generics: &method_sig.generics,
197+
generics: generics,
195198
visibility: ast::Visibility::Inherited,
196199
}
197200
}
198201

199202
pub fn from_fn_kind(
200203
fn_kind: &'a visit::FnKind,
204+
generics: &'a ast::Generics,
201205
decl: &'a ast::FnDecl,
202206
defualtness: ast::Defaultness,
203207
) -> FnSig<'a> {
204208
match *fn_kind {
205-
visit::FnKind::ItemFn(_, generics, unsafety, constness, abi, visibility, _) => FnSig {
209+
visit::FnKind::ItemFn(_, unsafety, constness, abi, visibility, _) => FnSig {
206210
decl: decl,
207211
generics: generics,
208212
abi: abi,
@@ -212,7 +216,7 @@ impl<'a> FnSig<'a> {
212216
visibility: visibility.clone(),
213217
},
214218
visit::FnKind::Method(_, ref method_sig, vis, _) => {
215-
let mut fn_sig = FnSig::from_method_sig(method_sig);
219+
let mut fn_sig = FnSig::from_method_sig(method_sig, generics);
216220
fn_sig.defaultness = defualtness;
217221
if let Some(vis) = vis {
218222
fn_sig.visibility = vis.clone();
@@ -338,6 +342,7 @@ impl<'a> FmtVisitor<'a> {
338342
indent: Indent,
339343
ident: ast::Ident,
340344
sig: &ast::MethodSig,
345+
generics: &ast::Generics,
341346
span: Span,
342347
) -> Option<String> {
343348
// Drop semicolon or it will be interpreted as comment.
@@ -348,7 +353,7 @@ impl<'a> FmtVisitor<'a> {
348353
&context,
349354
indent,
350355
ident,
351-
&FnSig::from_method_sig(sig),
356+
&FnSig::from_method_sig(sig, generics),
352357
span,
353358
false,
354359
false,

src/visitor.rs

+10-13
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ impl<'a> FmtVisitor<'a> {
238238
fn visit_fn(
239239
&mut self,
240240
fk: visit::FnKind,
241+
generics: &ast::Generics,
241242
fd: &ast::FnDecl,
242243
s: Span,
243244
_: ast::NodeId,
@@ -247,12 +248,12 @@ impl<'a> FmtVisitor<'a> {
247248
let indent = self.block_indent;
248249
let block;
249250
let rewrite = match fk {
250-
visit::FnKind::ItemFn(ident, _, _, _, _, _, b) => {
251+
visit::FnKind::ItemFn(ident, _, _, _, _, b) => {
251252
block = b;
252253
self.rewrite_fn(
253254
indent,
254255
ident,
255-
&FnSig::from_fn_kind(&fk, fd, defaultness),
256+
&FnSig::from_fn_kind(&fk, generics, fd, defaultness),
256257
mk_sp(s.lo(), b.span.lo()),
257258
b,
258259
)
@@ -262,7 +263,7 @@ impl<'a> FmtVisitor<'a> {
262263
self.rewrite_fn(
263264
indent,
264265
ident,
265-
&FnSig::from_fn_kind(&fk, fd, defaultness),
266+
&FnSig::from_fn_kind(&fk, generics, fd, defaultness),
266267
mk_sp(s.lo(), b.span.lo()),
267268
b,
268269
)
@@ -420,15 +421,8 @@ impl<'a> FmtVisitor<'a> {
420421
}
421422
ast::ItemKind::Fn(ref decl, unsafety, constness, abi, ref generics, ref body) => {
422423
self.visit_fn(
423-
visit::FnKind::ItemFn(
424-
item.ident,
425-
generics,
426-
unsafety,
427-
constness,
428-
abi,
429-
&item.vis,
430-
body,
431-
),
424+
visit::FnKind::ItemFn(item.ident, unsafety, constness, abi, &item.vis, body),
425+
generics,
432426
decl,
433427
item.span,
434428
item.id,
@@ -499,12 +493,14 @@ impl<'a> FmtVisitor<'a> {
499493
}
500494
ast::TraitItemKind::Method(ref sig, None) => {
501495
let indent = self.block_indent;
502-
let rewrite = self.rewrite_required_fn(indent, ti.ident, sig, ti.span);
496+
let rewrite =
497+
self.rewrite_required_fn(indent, ti.ident, sig, &ti.generics, ti.span);
503498
self.push_rewrite(ti.span, rewrite);
504499
}
505500
ast::TraitItemKind::Method(ref sig, Some(ref body)) => {
506501
self.visit_fn(
507502
visit::FnKind::Method(ti.ident, sig, None, body),
503+
&ti.generics,
508504
&sig.decl,
509505
ti.span,
510506
ti.id,
@@ -540,6 +536,7 @@ impl<'a> FmtVisitor<'a> {
540536
ast::ImplItemKind::Method(ref sig, ref body) => {
541537
self.visit_fn(
542538
visit::FnKind::Method(ii.ident, sig, Some(&ii.vis), body),
539+
&ii.generics,
543540
&sig.decl,
544541
ii.span,
545542
ii.id,

0 commit comments

Comments
 (0)