summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2018-02-22 19:19:08 +0100
committerJose <jose@zeroc.com>2018-02-22 19:19:08 +0100
commit5e76c93f1b5e1ffd87a98e44df0e97b6b798764a (patch)
tree6b2628711b55ec466f0841c4d93dc30b1e3063e8
parentNDEBUG not defined in UWP builds (diff)
downloadice-5e76c93f1b5e1ffd87a98e44df0e97b6b798764a.tar.bz2
ice-5e76c93f1b5e1ffd87a98e44df0e97b6b798764a.tar.xz
ice-5e76c93f1b5e1ffd87a98e44df0e97b6b798764a.zip
Fix JavaScript wrapper to support import from non global scope
The generated code wrapper used `this` assuming it was always imported from the global scoped but that breaks when you import the scripts using WebPack or similar tools that wraps the imports in its own functions
-rw-r--r--cpp/src/slice2js/Gen.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/cpp/src/slice2js/Gen.cpp b/cpp/src/slice2js/Gen.cpp
index 69c88b0f513..8be0d6111af 100644
--- a/cpp/src/slice2js/Gen.cpp
+++ b/cpp/src/slice2js/Gen.cpp
@@ -441,8 +441,10 @@ Slice::Gen::generate(const UnitPtr& p)
_out << eb;
_out << nl << "(typeof(global) !== \"undefined\" && typeof(global.process) !== \"undefined\" ? module : undefined,"
- << nl << " typeof(global) !== \"undefined\" && typeof(global.process) !== \"undefined\" ? require : this.Ice._require,"
- << nl << " typeof(global) !== \"undefined\" && typeof(global.process) !== \"undefined\" ? exports : this));";
+ << nl << " typeof(global) !== \"undefined\" && typeof(global.process) !== \"undefined\" ? require :"
+ << nl << " (typeof WorkerGlobalScope !== \"undefined\" && self instanceof WorkerGlobalScope) ? self.Ice._require : window.Ice._require,"
+ << nl << " typeof(global) !== \"undefined\" && typeof(global.process) !== \"undefined\" ? exports :"
+ << nl << " (typeof WorkerGlobalScope !== \"undefined\" && self instanceof WorkerGlobalScope) ? self : window));";
if(icejs)
{