Skip to content

Commit f588954

Browse files
authored
test: add edge case coverage for cjs require destructuring tree shaking (#20596)
1 parent e3298f1 commit f588954

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

test/cases/cjs-tree-shaking/require-destructuring/index.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,28 @@ it("should support require context destructuring assignment", () => {
1010
expect(a).toBe("a/a");
1111
expect(usedExports).toEqual(["a", "usedExports"]);
1212
});
13+
14+
it("should static analyze aliased require destructuring", () => {
15+
const { a: renamedA, usedExports } = require("./module");
16+
expect(renamedA).toBe("a");
17+
expect(usedExports).toEqual(["a", "usedExports"]);
18+
});
19+
20+
it("should support require context aliased destructuring assignment", () => {
21+
const file = "a";
22+
const { a: renamedA, usedExports } = require(`./dir/${file}.js`);
23+
expect(renamedA).toBe("a/a");
24+
expect(usedExports).toEqual(["a", "usedExports"]);
25+
});
26+
27+
it("should static analyze require destructuring with default values", () => {
28+
const { a = "fallback", usedExports } = require("./module");
29+
expect(a).toBe("a");
30+
expect(usedExports).toEqual(["a", "usedExports"]);
31+
});
32+
33+
it("should bail on rest element in require destructuring", () => {
34+
const { usedExports, ...rest } = require("./module-rest");
35+
expect(usedExports).toBe(true);
36+
expect(rest).toEqual({ a: "a", b: "b" });
37+
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
exports.a = "a";
2+
exports.b = "b";
3+
exports.usedExports = __webpack_exports_info__.usedExports;

0 commit comments

Comments
 (0)