From 12ebfee2bea80bb2f93dfd24a240b6684e371933 Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Sun, 3 Mar 2019 19:06:40 +0100 Subject: [PATCH] Fix scopehositing with nested dynamic imports --- .../scope-hoisting/es6/dynamic-import-dynamic/a.js | 1 + .../scope-hoisting/es6/dynamic-import-dynamic/b.js | 1 + .../scope-hoisting/es6/dynamic-import-dynamic/c.js | 1 + .../core/integration-tests/test/scope-hoisting.js | 12 ++++++++++++ .../parcel-bundler/src/packagers/JSConcatPackager.js | 1 + 5 files changed, 16 insertions(+) create mode 100644 packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/a.js create mode 100644 packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/b.js create mode 100644 packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/c.js diff --git a/packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/a.js b/packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/a.js new file mode 100644 index 00000000000..0888e345bef --- /dev/null +++ b/packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/a.js @@ -0,0 +1 @@ +export default import("./b.js").then(b => b.default); diff --git a/packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/b.js b/packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/b.js new file mode 100644 index 00000000000..30628ea0fbe --- /dev/null +++ b/packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/b.js @@ -0,0 +1 @@ +export default import('./c.js').then(b => b.default + 1); diff --git a/packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/c.js b/packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/c.js new file mode 100644 index 00000000000..67d639a53f2 --- /dev/null +++ b/packages/core/integration-tests/test/integration/scope-hoisting/es6/dynamic-import-dynamic/c.js @@ -0,0 +1 @@ +export default 122; diff --git a/packages/core/integration-tests/test/scope-hoisting.js b/packages/core/integration-tests/test/scope-hoisting.js index d40a48f2ea2..00c4cf24f2c 100644 --- a/packages/core/integration-tests/test/scope-hoisting.js +++ b/packages/core/integration-tests/test/scope-hoisting.js @@ -264,6 +264,18 @@ describe('scope hoisting', function() { assert.equal(await output.default, 5); }); + it('supports nested dynamic imports', async function() { + let b = await bundle( + path.join( + __dirname, + '/integration/scope-hoisting/es6/dynamic-import-dynamic/a.js' + ) + ); + + let output = await run(b); + assert.equal(await output.default, 123); + }); + it('should not export function arguments', async function() { let b = await bundle( path.join( diff --git a/packages/core/parcel-bundler/src/packagers/JSConcatPackager.js b/packages/core/parcel-bundler/src/packagers/JSConcatPackager.js index bffd16ed9e8..2c26b52d22a 100644 --- a/packages/core/parcel-bundler/src/packagers/JSConcatPackager.js +++ b/packages/core/parcel-bundler/src/packagers/JSConcatPackager.js @@ -384,6 +384,7 @@ class JSConcatPackager extends Packager { if (this.bundle.assets.has(asset)) { return; } + this.assets.set(asset.id, asset); this.bundle.addAsset(asset); if (!asset.parentBundle) { asset.parentBundle = this.bundle;