From ac1a5139a829142385ce649e149d970c12098c91 Mon Sep 17 00:00:00 2001 From: Ivan Kopeykin Date: Wed, 23 Feb 2022 14:54:21 +0300 Subject: [PATCH] fix HarmonyAcceptImportDependency --- lib/dependencies/HarmonyAcceptImportDependency.js | 8 +++++--- test/configCases/issues/issue-14974/defer.js | 2 ++ test/configCases/issues/issue-14974/index.js | 7 +++++++ test/configCases/issues/issue-14974/tla.js | 4 ++++ test/configCases/issues/issue-14974/webpack.config.js | 9 +++++++++ 5 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 test/configCases/issues/issue-14974/defer.js create mode 100644 test/configCases/issues/issue-14974/index.js create mode 100644 test/configCases/issues/issue-14974/tla.js create mode 100644 test/configCases/issues/issue-14974/webpack.config.js diff --git a/lib/dependencies/HarmonyAcceptImportDependency.js b/lib/dependencies/HarmonyAcceptImportDependency.js index 12040a4ee..9fbffac0f 100644 --- a/lib/dependencies/HarmonyAcceptImportDependency.js +++ b/lib/dependencies/HarmonyAcceptImportDependency.js @@ -7,6 +7,7 @@ const makeSerializable = require("../util/makeSerializable"); const HarmonyImportDependency = require("./HarmonyImportDependency"); +const NullDependency = require("./NullDependency"); /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */ /** @typedef {import("../Dependency")} Dependency */ @@ -28,8 +29,9 @@ makeSerializable( "webpack/lib/dependencies/HarmonyAcceptImportDependency" ); -HarmonyAcceptImportDependency.Template = class HarmonyAcceptImportDependencyTemplate extends ( - HarmonyImportDependency.Template -) {}; +HarmonyAcceptImportDependency.Template = + /** @type {typeof HarmonyImportDependency.Template} */ ( + NullDependency.Template + ); module.exports = HarmonyAcceptImportDependency; diff --git a/test/configCases/issues/issue-14974/defer.js b/test/configCases/issues/issue-14974/defer.js new file mode 100644 index 000000000..7e8bc9f78 --- /dev/null +++ b/test/configCases/issues/issue-14974/defer.js @@ -0,0 +1,2 @@ +import log from "./tla.js" +log(); diff --git a/test/configCases/issues/issue-14974/index.js b/test/configCases/issues/issue-14974/index.js new file mode 100644 index 000000000..9438a5893 --- /dev/null +++ b/test/configCases/issues/issue-14974/index.js @@ -0,0 +1,7 @@ +import "./tla.js" +const a = import("./defer.js") +import.meta.webpackHot.accept(["./defer.js"], () => {}) + +it("should compile", async () => { + expect(await a).toBeTruthy(); +}); diff --git a/test/configCases/issues/issue-14974/tla.js b/test/configCases/issues/issue-14974/tla.js new file mode 100644 index 000000000..e9a204b43 --- /dev/null +++ b/test/configCases/issues/issue-14974/tla.js @@ -0,0 +1,4 @@ +await Promise.resolve(); +export default function log() { + return 1; +} diff --git a/test/configCases/issues/issue-14974/webpack.config.js b/test/configCases/issues/issue-14974/webpack.config.js new file mode 100644 index 000000000..24a115726 --- /dev/null +++ b/test/configCases/issues/issue-14974/webpack.config.js @@ -0,0 +1,9 @@ +const { HotModuleReplacementPlugin } = require("../../../../"); + +/** @type {import("../../../../").Configuration} */ +module.exports = { + devtool: false, + experiments: { topLevelAwait: true }, + optimization: { usedExports: false, sideEffects: false }, + plugins: [new HotModuleReplacementPlugin()] +};