Skip to content

Commit 8eccdec

Browse files
committed
fix(ast): estree compat CatchClause (#8975)
Part of #2854 ```diff -Positive Passed: 28924/44293 (65.30%) +Positive Passed: 30446/44293 (68.74%) ```
1 parent 2ee1d6c commit 8eccdec

File tree

5 files changed

+13
-1529
lines changed

5 files changed

+13
-1529
lines changed

crates/oxc_ast/src/ast/js.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1401,6 +1401,7 @@ pub struct CatchClause<'a> {
14011401
pub struct CatchParameter<'a> {
14021402
pub span: Span,
14031403
/// The bound error
1404+
#[estree(flatten)]
14041405
pub pattern: BindingPattern<'a>,
14051406
}
14061407

crates/oxc_ast/src/generated/derive_estree.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1222,7 +1222,9 @@ impl Serialize for CatchParameter<'_> {
12221222
map.serialize_entry("type", "CatchParameter")?;
12231223
map.serialize_entry("start", &self.span.start)?;
12241224
map.serialize_entry("end", &self.span.end)?;
1225-
map.serialize_entry("pattern", &self.pattern)?;
1225+
self.pattern.kind.serialize(FlatMapSerializer(&mut map))?;
1226+
map.serialize_entry("typeAnnotation", &self.pattern.type_annotation)?;
1227+
map.serialize_entry("optional", &self.pattern.optional)?;
12261228
map.end()
12271229
}
12281230
}

npm/oxc-types/types.d.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -483,10 +483,12 @@ export interface CatchClause extends Span {
483483
body: BlockStatement;
484484
}
485485

486-
export interface CatchParameter extends Span {
487-
type: 'CatchParameter';
488-
pattern: BindingPattern;
489-
}
486+
export type CatchParameter =
487+
& ({
488+
type: 'CatchParameter';
489+
})
490+
& Span
491+
& BindingPattern;
490492

491493
export interface DebuggerStatement extends Span {
492494
type: 'DebuggerStatement';

tasks/ast_tools/src/generators/typescript.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,8 @@ fn generate_ts_type_def_for_struct_field<'s>(
220220
}
221221
}
222222

223-
if field_type_name.contains('|') {
223+
// need `type` instead of `interface` when flattening BindingPattern
224+
if field_type_name.contains('|') || field_type_name == "BindingPattern" {
224225
*output_as_type = true;
225226
}
226227
extends.push(field_type_name);

0 commit comments

Comments
 (0)