Fix unstable formatting on opaque unions

This commit is contained in:
Richard Feldman 2022-07-08 15:29:08 -04:00
parent 1d07d9efa1
commit 5f0e3c72c5
No known key found for this signature in database
GPG Key ID: 7E4127D1E4241798
2 changed files with 19 additions and 18 deletions

View File

@ -95,8 +95,6 @@ impl<'a> Formattable for TypeDef<'a> {
let ann_is_where_clause =
matches!(ann.extract_spaces().item, TypeAnnotation::Where(..));
let ann_has_spaces_before = matches!(&ann.value, TypeAnnotation::SpaceBefore(..));
// Always put the has-derived clause on a newline if it is itself multiline, or
// the annotation has a where-has clause.
let derived_multiline = if let Some(derived) = derived {
@ -107,12 +105,6 @@ impl<'a> Formattable for TypeDef<'a> {
let make_multiline = ann.is_multiline() || derived_multiline;
// If the annotation has spaces before, a newline will already be printed.
if make_multiline && !ann_has_spaces_before {
buf.newline();
buf.indent(indent + INDENT);
}
ann.format(buf, indent);
if let Some(derived) = derived {

View File

@ -5028,15 +5028,25 @@ mod test_fmt {
"#
));
expr_formats_same(indoc!(
r#"
A :=
U8
has [Eq, Hash]
expr_formats_to(
indoc!(
r#"
A :=
U8
has [Eq, Hash]
0
"#
));
0
"#
),
indoc!(
r#"
A := U8
has [Eq, Hash]
0
"#
),
);
expr_formats_to(
indoc!(
@ -5048,8 +5058,7 @@ mod test_fmt {
),
indoc!(
r#"
A :=
a | a has Hash
A := a | a has Hash
has [Eq, Hash]
0