diff --git a/lib/dependencies/AMDDefineDependency.js b/lib/dependencies/AMDDefineDependency.js index 0255a148d..1a0816ae8 100644 --- a/lib/dependencies/AMDDefineDependency.js +++ b/lib/dependencies/AMDDefineDependency.js @@ -68,7 +68,7 @@ const DEFINITIONS = { lf: { definition: "var XXX, XXXmodule;", content: - "!(XXXmodule = { id: YYY, exports: {}, loaded: false }, XXX = #.call(XXXmodule.exports, __webpack_require__, XXXmodule.exports, XXXmodule), XXXmodule.loaded = true, XXX === undefined && (XXX = XXXmodule.exports))", + "!(XXXmodule = { id: YYY, exports: {}, loaded: false }, XXX = (#).call(XXXmodule.exports, __webpack_require__, XXXmodule.exports, XXXmodule), XXXmodule.loaded = true, XXX === undefined && (XXX = XXXmodule.exports))", requests: [RuntimeGlobals.require, RuntimeGlobals.module] }, lo: { diff --git a/lib/dependencies/AMDDefineDependencyParserPlugin.js b/lib/dependencies/AMDDefineDependencyParserPlugin.js index 6ae14110e..7d1c7e9e0 100644 --- a/lib/dependencies/AMDDefineDependencyParserPlugin.js +++ b/lib/dependencies/AMDDefineDependencyParserPlugin.js @@ -276,6 +276,10 @@ class AMDDefineDependencyParserPlugin { } parser.scope.inTry = inTry; if (fn.body.type === "BlockStatement") { + parser.detectMode(fn.body.body); + const prev = parser.prevStatement; + parser.preWalkStatement(fn.body); + parser.prevStatement = prev; parser.walkStatement(fn.body); } else { parser.walkExpression(fn.body); @@ -293,6 +297,10 @@ class AMDDefineDependencyParserPlugin { } parser.scope.inTry = inTry; if (fn.callee.object.body.type === "BlockStatement") { + parser.detectMode(fn.callee.object.body.body); + const prev = parser.prevStatement; + parser.preWalkStatement(fn.callee.object.body); + parser.prevStatement = prev; parser.walkStatement(fn.callee.object.body); } else { parser.walkExpression(fn.callee.object.body); diff --git a/test/cases/parsing/declared-api/index.js b/test/cases/parsing/declared-api/index.js new file mode 100644 index 000000000..520779abb --- /dev/null +++ b/test/cases/parsing/declared-api/index.js @@ -0,0 +1,3 @@ +it("should not replace declared variables", () => { + expect(require("./module")).toBe(42 + 42); +}); diff --git a/test/cases/parsing/declared-api/module.js b/test/cases/parsing/declared-api/module.js new file mode 100644 index 000000000..8cbf2f878 --- /dev/null +++ b/test/cases/parsing/declared-api/module.js @@ -0,0 +1,11 @@ +define("local", () => { + var __webpack_modules__ = 42; + + return __webpack_modules__; +}); + +define(["local"], l => { + var __webpack_modules__ = 42 + l; + + return __webpack_modules__; +});