diff --git a/src/items.rs b/src/items.rs index 28dfb718af6..12cdbadfd94 100644 --- a/src/items.rs +++ b/src/items.rs @@ -550,9 +550,13 @@ impl<'a> FmtVisitor<'a> { // make a span that starts right after `enum Foo` mk_sp(ident.span.hi(), body_start), last_line_width(&enum_header), - ) - .unwrap(); - self.push_str(&generics_str); + ); + + if let Some(generics_str) = generics_str { + self.push_str(&generics_str); + } else { + self.push_str(self.snippet(mk_sp(ident.span.hi(), body_start))); + } self.last_pos = body_start; diff --git a/tests/source/crash-on-enum-generics/issue_5738.rs b/tests/source/crash-on-enum-generics/issue_5738.rs new file mode 100644 index 00000000000..bdba3b10944 --- /dev/null +++ b/tests/source/crash-on-enum-generics/issue_5738.rs @@ -0,0 +1,13 @@ +enum Node where P::>>>>>>>>>>>>>>>>>>>>>>>: { + Cons, +} + +enum En6 +where + T: Tr1>>>>>>>>>>>>>>>>>>>>>>>, +{ + V0, + V1, + V2, + V3, +} diff --git a/tests/source/crash-on-enum-generics/issue_6137.rs b/tests/source/crash-on-enum-generics/issue_6137.rs new file mode 100644 index 00000000000..a8c75f8e179 --- /dev/null +++ b/tests/source/crash-on-enum-generics/issue_6137.rs @@ -0,0 +1,3 @@ +enum MZReaderType< + D: DeconvolutedCentroidLike + Default + From + BuildFromArrayMap=DeconvolutedPeak +> {} diff --git a/tests/source/crash-on-enum-generics/issue_6318.rs b/tests/source/crash-on-enum-generics/issue_6318.rs new file mode 100644 index 00000000000..787225f4aae --- /dev/null +++ b/tests/source/crash-on-enum-generics/issue_6318.rs @@ -0,0 +1,13 @@ +// rustfmt-max_width: 80 +fn my_fn() { + enum MyEnum + where + SomeTypeA___: SomeTrait__< + _A, + Archived = , + >>::Archived, + >, + { + } +} diff --git a/tests/target/crash-on-enum-generics/issue_5738.rs b/tests/target/crash-on-enum-generics/issue_5738.rs new file mode 100644 index 00000000000..4a9dd0d8a1c --- /dev/null +++ b/tests/target/crash-on-enum-generics/issue_5738.rs @@ -0,0 +1,13 @@ +enum Node where P::>>>>>>>>>>>>>>>>>>>>>>>: { + Cons, +} + +enum En6 +where + T: Tr1>>>>>>>>>>>>>>>>>>>>>>>, +{ + V0, + V1, + V2, + V3, +} diff --git a/tests/target/crash-on-enum-generics/issue_6137.rs b/tests/target/crash-on-enum-generics/issue_6137.rs new file mode 100644 index 00000000000..a8c75f8e179 --- /dev/null +++ b/tests/target/crash-on-enum-generics/issue_6137.rs @@ -0,0 +1,3 @@ +enum MZReaderType< + D: DeconvolutedCentroidLike + Default + From + BuildFromArrayMap=DeconvolutedPeak +> {} diff --git a/tests/target/crash-on-enum-generics/issue_6318.rs b/tests/target/crash-on-enum-generics/issue_6318.rs new file mode 100644 index 00000000000..6f3b9275349 --- /dev/null +++ b/tests/target/crash-on-enum-generics/issue_6318.rs @@ -0,0 +1,12 @@ +// rustfmt-max_width: 80 +fn my_fn() { + enum MyEnum + where + SomeTypeA___: SomeTrait__< + _A, + Archived = , + >>::Archived, + >, + {} +}