Skip to content

Commit a2883b1

Browse files
committed
fix(ast): estree compat Function (#8972)
Part of #2854 diff of estree_test262.snap ```diff -Positive Passed: 6233/44293 (14.07%) +Positive Passed: 13042/44293 (29.44%) ```
1 parent f2d28f3 commit a2883b1

File tree

5 files changed

+16
-6817
lines changed

5 files changed

+16
-6817
lines changed

crates/oxc_ast/src/ast/js.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1557,7 +1557,11 @@ pub struct BindingRestElement<'a> {
15571557
#[generate_derive(CloneIn, GetSpan, GetSpanMut, ContentEq, ESTree)]
15581558
// https://github.com/estree/estree/blob/master/es5.md#patterns
15591559
// https://github.com/DefinitelyTyped/DefinitelyTyped/blob/cd61c555bfc93e985b313263a42ed78074570d08/types/estree/index.d.ts#L411
1560-
#[estree(add_ts_def = "type ParamPattern = FormalParameter | FormalParameterRest")]
1560+
#[estree(
1561+
add_ts_def = "type ParamPattern = FormalParameter | FormalParameterRest",
1562+
add_fields(expression = false),
1563+
add_ts = "expression: false"
1564+
)]
15611565
pub struct Function<'a> {
15621566
pub span: Span,
15631567
pub r#type: FunctionType,
@@ -1695,9 +1699,11 @@ pub enum FormalParameterKind {
16951699
#[ast(visit)]
16961700
#[derive(Debug)]
16971701
#[generate_derive(CloneIn, GetSpan, GetSpanMut, ContentEq, ESTree)]
1702+
#[estree(rename = "BlockStatement")]
16981703
pub struct FunctionBody<'a> {
16991704
pub span: Span,
17001705
pub directives: Vec<'a, Directive<'a>>,
1706+
#[estree(rename = "body")]
17011707
pub statements: Vec<'a, Statement<'a>>,
17021708
}
17031709

crates/oxc_ast/src/generated/derive_estree.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,6 +1334,7 @@ impl Serialize for Function<'_> {
13341334
map.serialize_entry("params", &self.params)?;
13351335
map.serialize_entry("returnType", &self.return_type)?;
13361336
map.serialize_entry("body", &self.body)?;
1337+
map.serialize_entry("expression", &false)?;
13371338
map.end()
13381339
}
13391340
}
@@ -1399,11 +1400,11 @@ impl Serialize for FormalParameterKind {
13991400
impl Serialize for FunctionBody<'_> {
14001401
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
14011402
let mut map = serializer.serialize_map(None)?;
1402-
map.serialize_entry("type", "FunctionBody")?;
1403+
map.serialize_entry("type", "BlockStatement")?;
14031404
map.serialize_entry("start", &self.span.start)?;
14041405
map.serialize_entry("end", &self.span.end)?;
14051406
map.serialize_entry("directives", &self.directives)?;
1406-
map.serialize_entry("statements", &self.statements)?;
1407+
map.serialize_entry("body", &self.statements)?;
14071408
map.end()
14081409
}
14091410
}

npm/oxc-types/types.d.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,7 @@ export interface Function extends Span {
540540
params: ParamPattern[];
541541
returnType: TSTypeAnnotation | null;
542542
body: FunctionBody | null;
543+
expression: false;
543544
}
544545

545546
export type ParamPattern = FormalParameter | FormalParameterRest;
@@ -576,9 +577,9 @@ export type FormalParameter =
576577
export type FormalParameterKind = 'FormalParameter' | 'UniqueFormalParameters' | 'ArrowFormalParameters' | 'Signature';
577578

578579
export interface FunctionBody extends Span {
579-
type: 'FunctionBody';
580+
type: 'BlockStatement';
580581
directives: Array<Directive>;
581-
statements: Array<Statement>;
582+
body: Array<Statement>;
582583
}
583584

584585
export interface ArrowFunctionExpression extends Span {

0 commit comments

Comments
 (0)