Skip to content

Commit ff6ebd3

Browse files
committed
fix panic on failure to format generics in enum
- related issues: rust-lang#5738, rust-lang#6137, rust-lang#6318, rust-lang#6378 - instead of calling unwrap(), restore original snippet when we fail to format generics in enum - we need to propagate this rewrite failure later
1 parent 0a32a02 commit ff6ebd3

File tree

7 files changed

+64
-3
lines changed

7 files changed

+64
-3
lines changed

src/items.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -550,9 +550,13 @@ impl<'a> FmtVisitor<'a> {
550550
// make a span that starts right after `enum Foo`
551551
mk_sp(ident.span.hi(), body_start),
552552
last_line_width(&enum_header),
553-
)
554-
.unwrap();
555-
self.push_str(&generics_str);
553+
);
554+
555+
if let Some(generics_str) = generics_str {
556+
self.push_str(&generics_str);
557+
} else {
558+
self.push_str(self.snippet(mk_sp(ident.span.hi(), body_start)));
559+
}
556560

557561
self.last_pos = body_start;
558562

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
enum Node where P::<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S>>>>>>>>>>>>>>>>>>>>>>>>: {
2+
Cons,
3+
}
4+
5+
enum En6
6+
where
7+
T: Tr1<En2<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S>>>>>>>>>>>>>>>>>>>>>>>>,
8+
{
9+
V0,
10+
V1,
11+
V2,
12+
V3,
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
enum MZReaderType<
2+
D: DeconvolutedCentroidLike + Default + From<DeconvolutedPeak> + BuildFromArrayMap=DeconvolutedPeak
3+
> {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// rustfmt-max_width: 80
2+
fn my_fn() {
3+
enum MyEnum
4+
where
5+
SomeTypeA___: SomeTrait__<
6+
_A,
7+
Archived = <SomeTypeB____ as SomeTrait__<
8+
Option<[u8; 4]>,
9+
>>::Archived,
10+
>,
11+
{
12+
}
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
enum Node where P::<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S>>>>>>>>>>>>>>>>>>>>>>>>: {
2+
Cons,
3+
}
4+
5+
enum En6
6+
where
7+
T: Tr1<En2<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S<S>>>>>>>>>>>>>>>>>>>>>>>>,
8+
{
9+
V0,
10+
V1,
11+
V2,
12+
V3,
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
enum MZReaderType<
2+
D: DeconvolutedCentroidLike + Default + From<DeconvolutedPeak> + BuildFromArrayMap=DeconvolutedPeak
3+
> {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// rustfmt-max_width: 80
2+
fn my_fn() {
3+
enum MyEnum
4+
where
5+
SomeTypeA___: SomeTrait__<
6+
_A,
7+
Archived = <SomeTypeB____ as SomeTrait__<
8+
Option<[u8; 4]>,
9+
>>::Archived,
10+
>,
11+
{}
12+
}

0 commit comments

Comments
 (0)