ast::HasImpls -> ast::AbilityImpls

This commit is contained in:
Bryce Miller 2023-05-20 08:24:02 -04:00
parent ebbdae6c28
commit 413ccb24ad
No known key found for this signature in database
GPG key ID: F1E97BF8DF152350
4 changed files with 42 additions and 38 deletions

View file

@ -4,7 +4,7 @@ use crate::{
Buf,
};
use roc_parse::ast::{
AssignedField, Collection, Expr, ExtractSpaces, HasAbilities, HasAbility, HasImpls,
AbilityImpls, AssignedField, Collection, Expr, ExtractSpaces, HasAbilities, HasAbility,
ImplementsClause, RecordBuilderField, Tag, TypeAnnotation, TypeHeader,
};
use roc_parse::ident::UppercaseIdent;
@ -668,30 +668,30 @@ impl<'a> Formattable for ImplementsClause<'a> {
}
}
impl<'a> Formattable for HasImpls<'a> {
impl<'a> Formattable for AbilityImpls<'a> {
fn is_multiline(&self) -> bool {
match self {
HasImpls::SpaceBefore(_, _) | HasImpls::SpaceAfter(_, _) => true,
HasImpls::HasImpls(impls) => is_collection_multiline(impls),
AbilityImpls::SpaceBefore(_, _) | AbilityImpls::SpaceAfter(_, _) => true,
AbilityImpls::AbilityImpls(impls) => is_collection_multiline(impls),
}
}
fn format_with_options(&self, buf: &mut Buf, parens: Parens, newlines: Newlines, indent: u16) {
match self {
HasImpls::HasImpls(impls) => {
AbilityImpls::AbilityImpls(impls) => {
if newlines == Newlines::Yes {
buf.newline();
buf.indent(indent);
}
fmt_collection(buf, indent, Braces::Curly, *impls, Newlines::No);
}
HasImpls::SpaceBefore(impls, spaces) => {
AbilityImpls::SpaceBefore(impls, spaces) => {
buf.newline();
buf.indent(indent);
fmt_comments_only(buf, spaces.iter(), NewlineAt::Bottom, indent);
impls.format_with_options(buf, parens, Newlines::No, indent);
}
HasImpls::SpaceAfter(impls, spaces) => {
AbilityImpls::SpaceAfter(impls, spaces) => {
impls.format_with_options(buf, parens, newlines, indent);
fmt_comments_only(buf, spaces.iter(), NewlineAt::Bottom, indent);
}

View file

@ -3,8 +3,8 @@ use bumpalo::Bump;
use roc_module::called_via::{BinOp, UnaryOp};
use roc_parse::{
ast::{
AbilityMember, AssignedField, Collection, CommentOrNewline, Defs, Expr, HasAbilities,
HasAbility, HasImpls, Header, Implements, ImplementsClause, Module, Pattern,
AbilityImpls, AbilityMember, AssignedField, Collection, CommentOrNewline, Defs, Expr,
HasAbilities, HasAbility, Header, Implements, ImplementsClause, Module, Pattern,
RecordBuilderField, Spaced, Spaces, StrLiteral, StrSegment, Tag, TypeAnnotation, TypeDef,
TypeHeader, ValueDef, WhenBranch,
},
@ -885,11 +885,13 @@ impl<'a> RemoveSpaces<'a> for Tag<'a> {
}
}
impl<'a> RemoveSpaces<'a> for HasImpls<'a> {
impl<'a> RemoveSpaces<'a> for AbilityImpls<'a> {
fn remove_spaces(&self, arena: &'a Bump) -> Self {
match *self {
HasImpls::HasImpls(impls) => HasImpls::HasImpls(impls.remove_spaces(arena)),
HasImpls::SpaceBefore(has, _) | HasImpls::SpaceAfter(has, _) => {
AbilityImpls::AbilityImpls(impls) => {
AbilityImpls::AbilityImpls(impls.remove_spaces(arena))
}
AbilityImpls::SpaceBefore(has, _) | AbilityImpls::SpaceAfter(has, _) => {
has.remove_spaces(arena)
}
}