diff --git a/crates/oxc_ast/src/ast/ts.rs b/crates/oxc_ast/src/ast/ts.rs index d5a9c47f9f227..be1ff8eea7974 100644 --- a/crates/oxc_ast/src/ast/ts.rs +++ b/crates/oxc_ast/src/ast/ts.rs @@ -824,6 +824,12 @@ pub enum TSModuleDeclarationKind { Namespace, } +impl TSModuleDeclarationKind { + pub fn is_global(self) -> bool { + matches!(self, TSModuleDeclarationKind::Global) + } +} + #[visited_node] #[derive(Debug, Hash)] #[cfg_attr(feature = "serialize", derive(Serialize, Tsify))] diff --git a/crates/oxc_isolated_declarations/src/lib.rs b/crates/oxc_isolated_declarations/src/lib.rs index b736e8ddbba1a..b6796334e42b1 100644 --- a/crates/oxc_isolated_declarations/src/lib.rs +++ b/crates/oxc_isolated_declarations/src/lib.rs @@ -142,6 +142,11 @@ impl<'a> IsolatedDeclarations<'a> { ); variable_transformed_indexes.push_back(Vec::default()); } + Declaration::TSModuleDeclaration(decl) => { + if decl.kind.is_global() { + transformed_indexes.push(new_stmts.len()); + } + } _ => {} } new_stmts.push(stmt); diff --git a/crates/oxc_isolated_declarations/tests/fixtures/declare-global.ts b/crates/oxc_isolated_declarations/tests/fixtures/declare-global.ts new file mode 100644 index 0000000000000..c271fa55e7a99 --- /dev/null +++ b/crates/oxc_isolated_declarations/tests/fixtures/declare-global.ts @@ -0,0 +1,4 @@ +declare global { +} + +export {} \ No newline at end of file diff --git a/crates/oxc_isolated_declarations/tests/snapshots/declare-global.snap b/crates/oxc_isolated_declarations/tests/snapshots/declare-global.snap new file mode 100644 index 0000000000000..3b9bfaca72c1c --- /dev/null +++ b/crates/oxc_isolated_declarations/tests/snapshots/declare-global.snap @@ -0,0 +1,8 @@ +--- +source: crates/oxc_isolated_declarations/tests/mod.rs +input_file: crates/oxc_isolated_declarations/tests/fixtures/declare-global.ts +--- +==================== .D.TS ==================== + +declare module global {} +export {};