feat(prettier) print array pattern (#1382)

This commit is contained in:
Cameron 2023-11-17 13:56:41 +00:00 committed by GitHub
parent 6d0e647c13
commit 001a8d8fe9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 1 deletions

View file

@ -6,10 +6,12 @@ use oxc_allocator::Vec;
use super::Format;
#[allow(clippy::enum_variant_names)]
pub enum Array<'a, 'b> {
ArrayExpression(&'b ArrayExpression<'a>),
#[allow(unused)]
TSTupleType(&'b TSTupleType<'a>),
ArrayPattern(&'b ArrayPattern<'a>),
}
impl<'a, 'b> Array<'a, 'b> {
@ -17,6 +19,7 @@ impl<'a, 'b> Array<'a, 'b> {
match self {
Self::ArrayExpression(array) => array.elements.len(),
Self::TSTupleType(tuple) => tuple.element_types.len(),
Self::ArrayPattern(array) => array.elements.len(),
}
}
}
@ -64,6 +67,24 @@ fn print_elements<'a>(p: &mut Prettier<'a>, array: &Array<'a, '_>) -> Vec<'a, Do
parts.push(element.format(p));
}
}
Array::ArrayPattern(array_pat) => {
for (i, element) in array_pat.elements.iter().enumerate() {
if i > 0 && i < array_pat.elements.len() {
parts.push(ss!(","));
parts.push(Doc::Line);
}
if let Some(binding_pat) = element {
parts.push(binding_pat.format(p));
}
}
if let Some(rest) = &array_pat.rest {
parts.push(ss!(","));
parts.push(Doc::Line);
parts.push(rest.format(p));
}
}
}
parts

View file

@ -1632,7 +1632,7 @@ impl<'a> Format<'a> for RestElement<'a> {
impl<'a> Format<'a> for ArrayPattern<'a> {
fn format(&self, p: &mut Prettier<'a>) -> Doc<'a> {
Doc::Line
array::print_array(p, &Array::ArrayPattern(self))
}
}