Skip to content

Commit 4817c7e

Browse files
committed
fix(ast/estree): add fields to AssignmentTargetPattern in TS-ESTree AST (oxc-project#10423)
Add missing fields to `ArrayAssignmentTarget` and `ObjectAssignmentTarget` in TS-ESTree AST.
1 parent f9fd666 commit 4817c7e

File tree

5 files changed

+27
-58
lines changed

5 files changed

+27
-58
lines changed

crates/oxc_ast/src/ast/js.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -870,7 +870,10 @@ pub use match_assignment_target_pattern;
870870
#[ast(visit)]
871871
#[derive(Debug)]
872872
#[generate_derive(CloneIn, Dummy, TakeIn, GetSpan, GetSpanMut, ContentEq, ESTree)]
873-
#[estree(rename = "ArrayPattern")]
873+
#[estree(
874+
rename = "ArrayPattern",
875+
add_fields(decorators = TsEmptyArray, optional = TsFalse, typeAnnotation = TsNull),
876+
)]
874877
pub struct ArrayAssignmentTarget<'a> {
875878
pub span: Span,
876879
pub elements: Vec<'a, Option<AssignmentTargetMaybeDefault<'a>>>,
@@ -886,7 +889,10 @@ pub struct ArrayAssignmentTarget<'a> {
886889
#[ast(visit)]
887890
#[derive(Debug)]
888891
#[generate_derive(CloneIn, Dummy, TakeIn, GetSpan, GetSpanMut, ContentEq, ESTree)]
889-
#[estree(rename = "ObjectPattern")]
892+
#[estree(
893+
rename = "ObjectPattern",
894+
add_fields(decorators = TsEmptyArray, optional = TsFalse, typeAnnotation = TsNull),
895+
)]
890896
pub struct ObjectAssignmentTarget<'a> {
891897
pub span: Span,
892898
pub properties: Vec<'a, AssignmentTargetProperty<'a>>,

crates/oxc_ast/src/generated/derive_estree.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,9 @@ impl ESTree for ArrayAssignmentTarget<'_> {
636636
state.serialize_field("start", &self.span.start);
637637
state.serialize_field("end", &self.span.end);
638638
state.serialize_field("elements", &AppendTo { array: &self.elements, after: &self.rest });
639+
state.serialize_ts_field("decorators", &crate::serialize::TsEmptyArray(self));
640+
state.serialize_ts_field("optional", &crate::serialize::TsFalse(self));
641+
state.serialize_ts_field("typeAnnotation", &crate::serialize::TsNull(self));
639642
state.end();
640643
}
641644
}
@@ -650,6 +653,9 @@ impl ESTree for ObjectAssignmentTarget<'_> {
650653
"properties",
651654
&AppendTo { array: &self.properties, after: &self.rest },
652655
);
656+
state.serialize_ts_field("decorators", &crate::serialize::TsEmptyArray(self));
657+
state.serialize_ts_field("optional", &crate::serialize::TsFalse(self));
658+
state.serialize_ts_field("typeAnnotation", &crate::serialize::TsNull(self));
653659
state.end();
654660
}
655661
}

napi/parser/deserialize-ts.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,9 @@ function deserializeArrayAssignmentTarget(pos) {
347347
start: deserializeU32(pos),
348348
end: deserializeU32(pos + 4),
349349
elements,
350+
decorators: [],
351+
optional: false,
352+
typeAnnotation: null,
350353
};
351354
}
352355

@@ -359,6 +362,9 @@ function deserializeObjectAssignmentTarget(pos) {
359362
start: deserializeU32(pos),
360363
end: deserializeU32(pos + 4),
361364
properties,
365+
decorators: [],
366+
optional: false,
367+
typeAnnotation: null,
362368
};
363369
}
364370

npm/oxc-types/types.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,11 +258,17 @@ export type AssignmentTargetPattern = ArrayAssignmentTarget | ObjectAssignmentTa
258258
export interface ArrayAssignmentTarget extends Span {
259259
type: 'ArrayPattern';
260260
elements: Array<AssignmentTargetMaybeDefault | AssignmentTargetRest | null>;
261+
decorators?: [];
262+
optional?: false;
263+
typeAnnotation?: null;
261264
}
262265

263266
export interface ObjectAssignmentTarget extends Span {
264267
type: 'ObjectPattern';
265268
properties: Array<AssignmentTargetProperty | AssignmentTargetRest>;
269+
decorators?: [];
270+
optional?: false;
271+
typeAnnotation?: null;
266272
}
267273

268274
export interface AssignmentTargetRest extends Span {

0 commit comments

Comments
 (0)