mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-07 15:37:39 +00:00
Merge pull request #2864 from topecongiro/issue-2863
Modify the rule for reordering impl items
This commit is contained in:
commit
69ad879d52
14
src/items.rs
14
src/items.rs
@ -591,23 +591,31 @@ impl<'a> FmtVisitor<'a> {
|
|||||||
buffer.push((self.buffer.clone(), item.clone()));
|
buffer.push((self.buffer.clone(), item.clone()));
|
||||||
self.buffer.clear();
|
self.buffer.clear();
|
||||||
}
|
}
|
||||||
// type -> const -> macro -> method
|
// type -> existential -> const -> macro -> method
|
||||||
use ast::ImplItemKind::*;
|
use ast::ImplItemKind::*;
|
||||||
fn need_empty_line(a: &ast::ImplItemKind, b: &ast::ImplItemKind) -> bool {
|
fn need_empty_line(a: &ast::ImplItemKind, b: &ast::ImplItemKind) -> bool {
|
||||||
match (a, b) {
|
match (a, b) {
|
||||||
(Type(..), Type(..)) | (Const(..), Const(..)) => false,
|
(Type(..), Type(..))
|
||||||
|
| (Const(..), Const(..))
|
||||||
|
| (Existential(..), Existential(..)) => false,
|
||||||
_ => true,
|
_ => true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer.sort_by(|(_, a), (_, b)| match (&a.node, &b.node) {
|
buffer.sort_by(|(_, a), (_, b)| match (&a.node, &b.node) {
|
||||||
|
(Type(..), Type(..))
|
||||||
|
| (Const(..), Const(..))
|
||||||
|
| (Macro(..), Macro(..))
|
||||||
|
| (Existential(..), Existential(..)) => a.ident.as_str().cmp(&b.ident.as_str()),
|
||||||
|
(Method(..), Method(..)) => a.span.lo().cmp(&b.span.lo()),
|
||||||
(Type(..), _) => Ordering::Less,
|
(Type(..), _) => Ordering::Less,
|
||||||
(_, Type(..)) => Ordering::Greater,
|
(_, Type(..)) => Ordering::Greater,
|
||||||
|
(Existential(..), _) => Ordering::Less,
|
||||||
|
(_, Existential(..)) => Ordering::Greater,
|
||||||
(Const(..), _) => Ordering::Less,
|
(Const(..), _) => Ordering::Less,
|
||||||
(_, Const(..)) => Ordering::Greater,
|
(_, Const(..)) => Ordering::Greater,
|
||||||
(Macro(..), _) => Ordering::Less,
|
(Macro(..), _) => Ordering::Less,
|
||||||
(_, Macro(..)) => Ordering::Greater,
|
(_, Macro(..)) => Ordering::Greater,
|
||||||
_ => a.span.lo().cmp(&b.span.lo()),
|
|
||||||
});
|
});
|
||||||
let mut prev_kind = None;
|
let mut prev_kind = None;
|
||||||
for (buf, item) in buffer {
|
for (buf, item) in buffer {
|
||||||
|
25
tests/source/issue-2863.rs
Normal file
25
tests/source/issue-2863.rs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// rustfmt-reorder_impl_items: true
|
||||||
|
|
||||||
|
impl<T> IntoIterator for SafeVec<T> {
|
||||||
|
existential type F: Trait;
|
||||||
|
type IntoIter = self::IntoIter<T>;
|
||||||
|
type Item = T;
|
||||||
|
// comment on foo()
|
||||||
|
fn foo() {println!("hello, world");}
|
||||||
|
type Bar = u32;
|
||||||
|
fn foo1() {println!("hello, world");}
|
||||||
|
type FooBar = u32;
|
||||||
|
fn foo2() {println!("hello, world");}
|
||||||
|
fn foo3() {println!("hello, world");}
|
||||||
|
const SomeConst: i32 = 100;
|
||||||
|
fn foo4() {println!("hello, world");}
|
||||||
|
fn foo5() {println!("hello, world");}
|
||||||
|
// comment on FoooooBar
|
||||||
|
type FoooooBar = u32;
|
||||||
|
fn foo6() {println!("hello, world");}
|
||||||
|
fn foo7() {println!("hello, world");}
|
||||||
|
type BarFoo = u32;
|
||||||
|
existential type E: Trait;
|
||||||
|
const AnotherConst: i32 = 100;
|
||||||
|
fn foo8() {println!("hello, world");}
|
||||||
|
}
|
54
tests/target/issue-2863.rs
Normal file
54
tests/target/issue-2863.rs
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
// rustfmt-reorder_impl_items: true
|
||||||
|
|
||||||
|
impl<T> IntoIterator for SafeVec<T> {
|
||||||
|
type Bar = u32;
|
||||||
|
type BarFoo = u32;
|
||||||
|
type FooBar = u32;
|
||||||
|
// comment on FoooooBar
|
||||||
|
type FoooooBar = u32;
|
||||||
|
type IntoIter = self::IntoIter<T>;
|
||||||
|
type Item = T;
|
||||||
|
|
||||||
|
existential type E: Trait;
|
||||||
|
existential type F: Trait;
|
||||||
|
|
||||||
|
const AnotherConst: i32 = 100;
|
||||||
|
const SomeConst: i32 = 100;
|
||||||
|
|
||||||
|
// comment on foo()
|
||||||
|
fn foo() {
|
||||||
|
println!("hello, world");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn foo1() {
|
||||||
|
println!("hello, world");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn foo2() {
|
||||||
|
println!("hello, world");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn foo3() {
|
||||||
|
println!("hello, world");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn foo4() {
|
||||||
|
println!("hello, world");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn foo5() {
|
||||||
|
println!("hello, world");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn foo6() {
|
||||||
|
println!("hello, world");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn foo7() {
|
||||||
|
println!("hello, world");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn foo8() {
|
||||||
|
println!("hello, world");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user