From f62632e7a6f38ad9cbdc2e61d636768161dbaa7b Mon Sep 17 00:00:00 2001 From: N0zoM1z0 <161784452+N0zoM1z0@users.noreply.github.com> Date: Wed, 14 Oct 2026 09:17:25 +0000 Subject: [PATCH] test(javascript): assert wrapper ownership in the correct source mode Fixes #3341 Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com> --- ...ascriptSemanticAnalysis.require_links.test.ts | 16 ++++++++++++++++ .../javascriptStaticAnalysisModuleIndex.test.ts | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/domain/javascript/javascriptSemanticAnalysis.require_links.test.ts b/src/domain/javascript/javascriptSemanticAnalysis.require_links.test.ts index 831c9ebc41..9fca4e7392 100644 --- a/src/domain/javascript/javascriptSemanticAnalysis.require_links.test.ts +++ b/src/domain/javascript/javascriptSemanticAnalysis.require_links.test.ts @@ -62,6 +62,22 @@ describe("TypeScript import-equals links", () => { }); describe("CommonJS wrapper parameter redeclarations", () => { + it("keeps a top-level wrapper require redeclaration", () => { + const path = "app/main.cjs"; + const parsed = parseJavaScriptSource( + 'var require; require("./wrapper.cjs");', + path, + ); + expect(parsed).not.toBeNull(); + const ir = analyzeParsedJavaScriptSemantics( + parsed!, + moduleResolutionModeForJavaScriptReference(path, "static-import"), + ); + expect(ir.moduleLinks).toContainEqual( + expect.objectContaining({ kind: "require", specifier: "./wrapper.cjs" }), + ); + }); + it("retains ambient exports and require through uninitialized top-level vars", () => { const path = "app/main.cjs"; const parsed = parseJavaScriptSource( diff --git a/src/domain/javascript/javascriptStaticAnalysisModuleIndex.test.ts b/src/domain/javascript/javascriptStaticAnalysisModuleIndex.test.ts index f22aa55f2d..8881138662 100644 --- a/src/domain/javascript/javascriptStaticAnalysisModuleIndex.test.ts +++ b/src/domain/javascript/javascriptStaticAnalysisModuleIndex.test.ts @@ -78,12 +78,12 @@ it("does not resolve a parameter named require as a module dependency", () => { ); }); -it("keeps a top-level wrapper require redeclaration", () => { +it("keeps a formatless top-level require redeclaration unresolved", () => { const analysis = analyzeJavaScriptStaticSource( `var require; require("./wrapper.cjs");`, ); expect(analysis.references).toContainEqual( - expect.objectContaining({ specifier: "./wrapper.cjs" }), + expect.objectContaining({ kind: "require", specifier: null }), ); });