mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-22 10:05:06 +03:00
Merge pull request #2043 from sunjay/lift_generics
Lifted generics to account for changes in rust-lang/rust#44766
This commit is contained in:
+10
-5
@@ -184,25 +184,29 @@ pub fn new(
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_method_sig(method_sig: &'a ast::MethodSig) -> FnSig {
|
||||
pub fn from_method_sig(
|
||||
method_sig: &'a ast::MethodSig,
|
||||
generics: &'a ast::Generics,
|
||||
) -> FnSig<'a> {
|
||||
FnSig {
|
||||
unsafety: method_sig.unsafety,
|
||||
constness: method_sig.constness.node,
|
||||
defaultness: ast::Defaultness::Final,
|
||||
abi: method_sig.abi,
|
||||
decl: &*method_sig.decl,
|
||||
generics: &method_sig.generics,
|
||||
generics: generics,
|
||||
visibility: ast::Visibility::Inherited,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_fn_kind(
|
||||
fn_kind: &'a visit::FnKind,
|
||||
generics: &'a ast::Generics,
|
||||
decl: &'a ast::FnDecl,
|
||||
defualtness: ast::Defaultness,
|
||||
) -> FnSig<'a> {
|
||||
match *fn_kind {
|
||||
visit::FnKind::ItemFn(_, generics, unsafety, constness, abi, visibility, _) => FnSig {
|
||||
visit::FnKind::ItemFn(_, unsafety, constness, abi, visibility, _) => FnSig {
|
||||
decl: decl,
|
||||
generics: generics,
|
||||
abi: abi,
|
||||
@@ -212,7 +216,7 @@ pub fn from_fn_kind(
|
||||
visibility: visibility.clone(),
|
||||
},
|
||||
visit::FnKind::Method(_, ref method_sig, vis, _) => {
|
||||
let mut fn_sig = FnSig::from_method_sig(method_sig);
|
||||
let mut fn_sig = FnSig::from_method_sig(method_sig, generics);
|
||||
fn_sig.defaultness = defualtness;
|
||||
if let Some(vis) = vis {
|
||||
fn_sig.visibility = vis.clone();
|
||||
@@ -338,6 +342,7 @@ pub fn rewrite_required_fn(
|
||||
indent: Indent,
|
||||
ident: ast::Ident,
|
||||
sig: &ast::MethodSig,
|
||||
generics: &ast::Generics,
|
||||
span: Span,
|
||||
) -> Option<String> {
|
||||
// Drop semicolon or it will be interpreted as comment.
|
||||
@@ -348,7 +353,7 @@ pub fn rewrite_required_fn(
|
||||
&context,
|
||||
indent,
|
||||
ident,
|
||||
&FnSig::from_method_sig(sig),
|
||||
&FnSig::from_method_sig(sig, generics),
|
||||
span,
|
||||
false,
|
||||
false,
|
||||
|
||||
+10
-13
@@ -238,6 +238,7 @@ fn close_block(&mut self, unindent_comment: bool) {
|
||||
fn visit_fn(
|
||||
&mut self,
|
||||
fk: visit::FnKind,
|
||||
generics: &ast::Generics,
|
||||
fd: &ast::FnDecl,
|
||||
s: Span,
|
||||
_: ast::NodeId,
|
||||
@@ -247,12 +248,12 @@ fn visit_fn(
|
||||
let indent = self.block_indent;
|
||||
let block;
|
||||
let rewrite = match fk {
|
||||
visit::FnKind::ItemFn(ident, _, _, _, _, _, b) => {
|
||||
visit::FnKind::ItemFn(ident, _, _, _, _, b) => {
|
||||
block = b;
|
||||
self.rewrite_fn(
|
||||
indent,
|
||||
ident,
|
||||
&FnSig::from_fn_kind(&fk, fd, defaultness),
|
||||
&FnSig::from_fn_kind(&fk, generics, fd, defaultness),
|
||||
mk_sp(s.lo(), b.span.lo()),
|
||||
b,
|
||||
)
|
||||
@@ -262,7 +263,7 @@ fn visit_fn(
|
||||
self.rewrite_fn(
|
||||
indent,
|
||||
ident,
|
||||
&FnSig::from_fn_kind(&fk, fd, defaultness),
|
||||
&FnSig::from_fn_kind(&fk, generics, fd, defaultness),
|
||||
mk_sp(s.lo(), b.span.lo()),
|
||||
b,
|
||||
)
|
||||
@@ -420,15 +421,8 @@ pub fn visit_item(&mut self, item: &ast::Item) {
|
||||
}
|
||||
ast::ItemKind::Fn(ref decl, unsafety, constness, abi, ref generics, ref body) => {
|
||||
self.visit_fn(
|
||||
visit::FnKind::ItemFn(
|
||||
item.ident,
|
||||
generics,
|
||||
unsafety,
|
||||
constness,
|
||||
abi,
|
||||
&item.vis,
|
||||
body,
|
||||
),
|
||||
visit::FnKind::ItemFn(item.ident, unsafety, constness, abi, &item.vis, body),
|
||||
generics,
|
||||
decl,
|
||||
item.span,
|
||||
item.id,
|
||||
@@ -499,12 +493,14 @@ pub fn visit_trait_item(&mut self, ti: &ast::TraitItem) {
|
||||
}
|
||||
ast::TraitItemKind::Method(ref sig, None) => {
|
||||
let indent = self.block_indent;
|
||||
let rewrite = self.rewrite_required_fn(indent, ti.ident, sig, ti.span);
|
||||
let rewrite =
|
||||
self.rewrite_required_fn(indent, ti.ident, sig, &ti.generics, ti.span);
|
||||
self.push_rewrite(ti.span, rewrite);
|
||||
}
|
||||
ast::TraitItemKind::Method(ref sig, Some(ref body)) => {
|
||||
self.visit_fn(
|
||||
visit::FnKind::Method(ti.ident, sig, None, body),
|
||||
&ti.generics,
|
||||
&sig.decl,
|
||||
ti.span,
|
||||
ti.id,
|
||||
@@ -540,6 +536,7 @@ pub fn visit_impl_item(&mut self, ii: &ast::ImplItem) {
|
||||
ast::ImplItemKind::Method(ref sig, ref body) => {
|
||||
self.visit_fn(
|
||||
visit::FnKind::Method(ii.ident, sig, Some(&ii.vis), body),
|
||||
&ii.generics,
|
||||
&sig.decl,
|
||||
ii.span,
|
||||
ii.id,
|
||||
|
||||
Reference in New Issue
Block a user