diff --git a/.github/actions/clone-submodules/action.yml b/.github/actions/clone-submodules/action.yml index 708155ae1bb55..2c2c35d8b3136 100644 --- a/.github/actions/clone-submodules/action.yml +++ b/.github/actions/clone-submodules/action.yml @@ -38,4 +38,4 @@ runs: show-progress: false repository: oxc-project/acorn-test262 path: tasks/coverage/acorn-test262 - ref: ed8b455fd9775089444d53c09ea18fedf220da8b # Latest main at 21/2/24 + ref: 96faefa7644f16bb163484ee50fa13d6ecff7e72 # Latest main at 4/3/25 diff --git a/crates/oxc_ast/src/ast/js.rs b/crates/oxc_ast/src/ast/js.rs index 67a310e5ee7bb..6145005888432 100644 --- a/crates/oxc_ast/src/ast/js.rs +++ b/crates/oxc_ast/src/ast/js.rs @@ -2467,7 +2467,6 @@ pub enum ImportAttributeKey<'a> { #[ast(visit)] #[derive(Debug)] #[generate_derive(CloneIn, GetSpan, GetSpanMut, ContentEq, ESTree)] -#[estree(via = ExportNamedDeclarationConverter)] pub struct ExportNamedDeclaration<'a> { pub span: Span, pub declaration: Option>, diff --git a/crates/oxc_ast/src/generated/derive_estree.rs b/crates/oxc_ast/src/generated/derive_estree.rs index f07e82b41668d..8313d278b4492 100644 --- a/crates/oxc_ast/src/generated/derive_estree.rs +++ b/crates/oxc_ast/src/generated/derive_estree.rs @@ -1726,7 +1726,19 @@ impl ESTree for ImportAttributeKey<'_> { impl ESTree for ExportNamedDeclaration<'_> { fn serialize(&self, serializer: S) { - crate::serialize::ExportNamedDeclarationConverter(self).serialize(serializer) + let mut state = serializer.serialize_struct(); + state.serialize_field("type", &JsonSafeString("ExportNamedDeclaration")); + state.serialize_field("start", &self.span.start); + state.serialize_field("end", &self.span.end); + state.serialize_field("declaration", &self.declaration); + state.serialize_field("specifiers", &self.specifiers); + state.serialize_field("source", &self.source); + state.serialize_ts_field("exportKind", &self.export_kind); + state.serialize_field( + "attributes", + &crate::serialize::ExportNamedDeclarationWithClause(self), + ); + state.end(); } } diff --git a/crates/oxc_ast/src/serialize.rs b/crates/oxc_ast/src/serialize.rs index 930c69085607f..c9b205df99e4a 100644 --- a/crates/oxc_ast/src/serialize.rs +++ b/crates/oxc_ast/src/serialize.rs @@ -548,54 +548,6 @@ impl ESTree for ImportExpressionArguments<'_> { } } -/// Serialize `ExportNamedDeclaration`. -/// -/// Omit `with_clause` field (which is renamed to `attributes` in ESTree) -/// unless `source` field is `Some`. -#[ast_meta] -#[estree(raw_deser = " - const start = DESER[u32](POS_OFFSET.span.start), - end = DESER[u32](POS_OFFSET.span.end), - declaration = DESER[Option](POS_OFFSET.declaration), - specifiers = DESER[Vec](POS_OFFSET.specifiers), - source = DESER[Option](POS_OFFSET.source)/* IF_TS */, - exportKind = DESER[ImportOrExportKind](POS_OFFSET.export_kind) /* END_IF_TS */; - - if (source !== null) { - const withClause = deserializeOptionBoxWithClause(POS_OFFSET.with_clause); - return { - type: 'ExportNamedDeclaration', - start, end, declaration, specifiers, source, - /* IF_TS */ exportKind, /* END_IF_TS */ - attributes: withClause === null ? [] : withClause.withEntries - }; - } - - {type: 'ExportNamedDeclaration', start, end, declaration, specifiers, source /* IF_TS */ , exportKind /* END_IF_TS */ } -")] -pub struct ExportNamedDeclarationConverter<'a, 'b>(pub &'b ExportNamedDeclaration<'a>); - -impl ESTree for ExportNamedDeclarationConverter<'_, '_> { - fn serialize(&self, serializer: S) { - let decl = self.0; - let mut state = serializer.serialize_struct(); - state.serialize_field("type", &JsonSafeString("ExportNamedDeclaration")); - state.serialize_field("start", &decl.span.start); - state.serialize_field("end", &decl.span.end); - state.serialize_field("declaration", &decl.declaration); - state.serialize_field("specifiers", &decl.specifiers); - state.serialize_field("source", &decl.source); - state.serialize_ts_field("exportKind", &decl.export_kind); - if decl.source.is_some() { - state.serialize_field( - "attributes", - &crate::serialize::ExportNamedDeclarationWithClause(decl), - ); - } - state.end(); - } -} - // Serializers for `with_clause` field of `ImportDeclaration`, `ExportNamedDeclaration`, // and `ExportAllDeclaration` (which are renamed to `attributes` in ESTree AST). // diff --git a/justfile b/justfile index 36e8ce4e54856..384f79fe0dbde 100755 --- a/justfile +++ b/justfile @@ -40,7 +40,7 @@ submodules: just clone-submodule tasks/coverage/babel https://github.com/babel/babel.git 578ac4df1c8a05f01350553950dbfbbeaac013c2 just clone-submodule tasks/coverage/typescript https://github.com/microsoft/TypeScript.git 15392346d05045742e653eab5c87538ff2a3c863 just clone-submodule tasks/prettier_conformance/prettier https://github.com/prettier/prettier.git 7584432401a47a26943dd7a9ca9a8e032ead7285 - just clone-submodule tasks/coverage/acorn-test262 https://github.com/oxc-project/acorn-test262 ed8b455fd9775089444d53c09ea18fedf220da8b + just clone-submodule tasks/coverage/acorn-test262 https://github.com/oxc-project/acorn-test262 96faefa7644f16bb163484ee50fa13d6ecff7e72 just update-transformer-fixtures # Install git pre-commit to format files diff --git a/napi/parser/deserialize-js.js b/napi/parser/deserialize-js.js index 056c482f06979..2f3e4c686ec21 100644 --- a/napi/parser/deserialize-js.js +++ b/napi/parser/deserialize-js.js @@ -967,26 +967,16 @@ function deserializeImportAttribute(pos) { } function deserializeExportNamedDeclaration(pos) { - const start = deserializeU32(pos), - end = deserializeU32(pos + 4), - declaration = deserializeOptionDeclaration(pos + 8), - specifiers = deserializeVecExportSpecifier(pos + 24), - source = deserializeOptionStringLiteral(pos + 56); - - if (source !== null) { - const withClause = deserializeOptionBoxWithClause(pos + 104); - return { - type: 'ExportNamedDeclaration', - start, - end, - declaration, - specifiers, - source, - attributes: withClause === null ? [] : withClause.withEntries, - }; - } - - return { type: 'ExportNamedDeclaration', start, end, declaration, specifiers, source }; + const withClause = deserializeOptionBoxWithClause(pos + 104); + return { + type: 'ExportNamedDeclaration', + start: deserializeU32(pos), + end: deserializeU32(pos + 4), + declaration: deserializeOptionDeclaration(pos + 8), + specifiers: deserializeVecExportSpecifier(pos + 24), + source: deserializeOptionStringLiteral(pos + 56), + attributes: withClause === null ? [] : withClause.withEntries, + }; } function deserializeExportDefaultDeclaration(pos) { diff --git a/napi/parser/deserialize-ts.js b/napi/parser/deserialize-ts.js index 5ecf6c2629fdf..917e4a543a0ec 100644 --- a/napi/parser/deserialize-ts.js +++ b/napi/parser/deserialize-ts.js @@ -1016,28 +1016,17 @@ function deserializeImportAttribute(pos) { } function deserializeExportNamedDeclaration(pos) { - const start = deserializeU32(pos), - end = deserializeU32(pos + 4), - declaration = deserializeOptionDeclaration(pos + 8), - specifiers = deserializeVecExportSpecifier(pos + 24), - source = deserializeOptionStringLiteral(pos + 56), - exportKind = deserializeImportOrExportKind(pos + 96); - - if (source !== null) { - const withClause = deserializeOptionBoxWithClause(pos + 104); - return { - type: 'ExportNamedDeclaration', - start, - end, - declaration, - specifiers, - source, - exportKind, - attributes: withClause === null ? [] : withClause.withEntries, - }; - } - - return { type: 'ExportNamedDeclaration', start, end, declaration, specifiers, source, exportKind }; + const withClause = deserializeOptionBoxWithClause(pos + 104); + return { + type: 'ExportNamedDeclaration', + start: deserializeU32(pos), + end: deserializeU32(pos + 4), + declaration: deserializeOptionDeclaration(pos + 8), + specifiers: deserializeVecExportSpecifier(pos + 24), + source: deserializeOptionStringLiteral(pos + 56), + exportKind: deserializeImportOrExportKind(pos + 96), + attributes: withClause === null ? [] : withClause.withEntries, + }; } function deserializeExportDefaultDeclaration(pos) {