From 52f2a409901a22e7cd84a77ca3c2ef04ebb1f026 Mon Sep 17 00:00:00 2001 From: Dunqing <29533304+Dunqing@users.noreply.github.com> Date: Thu, 3 Apr 2025 16:47:07 +0000 Subject: [PATCH] fix(span/estree): skip `ModuleKind::Unambiguous` varient for `estree` (#10146) close: #10139 The `ModuleKind::Unambiguous` can only occur in the parser stage, after being parsed, the `ModuleKind` certainly changes to `ModuleKind::Script` or `ModuleKind::Module`; otherwise is a bug in the parser. --- crates/oxc_span/src/generated/derive_estree.rs | 2 +- crates/oxc_span/src/source_type/mod.rs | 1 + napi/parser/deserialize-js.js | 2 -- napi/parser/deserialize-ts.js | 2 -- npm/oxc-types/types.d.ts | 2 +- 5 files changed, 3 insertions(+), 6 deletions(-) diff --git a/crates/oxc_span/src/generated/derive_estree.rs b/crates/oxc_span/src/generated/derive_estree.rs index d2756653b6fc9..da8ce81793474 100644 --- a/crates/oxc_span/src/generated/derive_estree.rs +++ b/crates/oxc_span/src/generated/derive_estree.rs @@ -33,7 +33,7 @@ impl ESTree for ModuleKind { match self { Self::Script => JsonSafeString("script").serialize(serializer), Self::Module => JsonSafeString("module").serialize(serializer), - Self::Unambiguous => JsonSafeString("unambiguous").serialize(serializer), + Self::Unambiguous => unreachable!("This enum variant is skipped."), } } } diff --git a/crates/oxc_span/src/source_type/mod.rs b/crates/oxc_span/src/source_type/mod.rs index 14bd87601c4be..e672488e5c36a 100644 --- a/crates/oxc_span/src/source_type/mod.rs +++ b/crates/oxc_span/src/source_type/mod.rs @@ -58,6 +58,7 @@ pub enum ModuleKind { /// Note2: Dynamic import expression is not ESM syntax. /// /// See + #[estree(skip)] Unambiguous = 2, } diff --git a/napi/parser/deserialize-js.js b/napi/parser/deserialize-js.js index 757716a1259f4..b5126a530a99b 100644 --- a/napi/parser/deserialize-js.js +++ b/napi/parser/deserialize-js.js @@ -4122,8 +4122,6 @@ function deserializeModuleKind(pos) { return 'script'; case 1: return 'module'; - case 2: - return 'unambiguous'; default: throw new Error(`Unexpected discriminant ${uint8[pos]} for ModuleKind`); } diff --git a/napi/parser/deserialize-ts.js b/napi/parser/deserialize-ts.js index 6b31c8c8e95cc..801167e953e7a 100644 --- a/napi/parser/deserialize-ts.js +++ b/napi/parser/deserialize-ts.js @@ -4197,8 +4197,6 @@ function deserializeModuleKind(pos) { return 'script'; case 1: return 'module'; - case 2: - return 'unambiguous'; default: throw new Error(`Unexpected discriminant ${uint8[pos]} for ModuleKind`); } diff --git a/npm/oxc-types/types.d.ts b/npm/oxc-types/types.d.ts index 5b9f7d625ead5..264877d12e4b3 100644 --- a/npm/oxc-types/types.d.ts +++ b/npm/oxc-types/types.d.ts @@ -1484,7 +1484,7 @@ export interface Span { end: number; } -export type ModuleKind = 'script' | 'module' | 'unambiguous'; +export type ModuleKind = 'script' | 'module'; export interface Pattern extends Span { type: 'Pattern';