feat(ast): serialize BindingPattern to estree (#2610)

This commit is contained in:
Boshen 2024-03-05 13:48:43 +08:00 committed by GitHub
parent 97aa9cfd54
commit 1db307abbf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1595,9 +1595,15 @@ pub struct DebuggerStatement {
/// Destructuring Binding Patterns
/// * <https://tc39.es/ecma262/#prod-BindingPattern>
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize), serde(tag = "type", rename_all = "camelCase"))]
#[cfg_attr(feature = "serde", derive(Serialize), serde(rename_all = "camelCase"))]
#[cfg_attr(all(feature = "serde", feature = "wasm"), derive(tsify::Tsify))]
pub struct BindingPattern<'a> {
// Flatten the attributes because estree has no `BindingPattern`
#[cfg_attr(feature = "serde", serde(flatten))]
#[cfg_attr(
all(feature = "serde", feature = "wasm"),
tsify(type = "(BindingIdentifier | ObjectPattern | ArrayPattern | AssignmentPattern)")
)]
pub kind: BindingPatternKind<'a>,
pub type_annotation: Option<Box<'a, TSTypeAnnotation<'a>>>,
pub optional: bool,
@ -1611,7 +1617,6 @@ impl<'a> BindingPattern<'a> {
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize), serde(untagged))]
#[cfg_attr(all(feature = "serde", feature = "wasm"), derive(tsify::Tsify))]
pub enum BindingPatternKind<'a> {
/// `const a = 1`
BindingIdentifier(Box<'a, BindingIdentifier<'a>>),