Index: lib/runtime/dart_runtime.js |
diff --git a/lib/runtime/dart_runtime.js b/lib/runtime/dart_runtime.js |
index d81ba2aa6ca13b7cc9a0c53437f9883aeb0331c1..b1d2f0012055b5bea48be84451d6563f56f32f10 100644 |
--- a/lib/runtime/dart_runtime.js |
+++ b/lib/runtime/dart_runtime.js |
@@ -9,6 +9,7 @@ var dart, _js_helper; |
let defineProperty = Object.defineProperty; |
let getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; |
let getOwnPropertyNames = Object.getOwnPropertyNames; |
+ let getOwnPropertySymbols = Object.getOwnPropertySymbols; |
// Adapted from Angular.js |
let FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m; |
@@ -614,11 +615,14 @@ var dart, _js_helper; |
* This operation is commonly called `mixin` in JS. |
*/ |
function copyProperties(to, from) { |
- let names = getOwnPropertyNames(from); |
- for (let i = 0; i < names.length; i++) { |
- let name = names[i]; |
- defineProperty(to, name, getOwnPropertyDescriptor(from, name)); |
+ function copyPropertiesHelper(names) { |
+ for (let i = 0; i < names.length; i++) { |
+ let name = names[i]; |
+ defineProperty(to, name, getOwnPropertyDescriptor(from, name)); |
+ } |
} |
+ copyPropertiesHelper(getOwnPropertyNames(from)); |
+ copyPropertiesHelper(getOwnPropertySymbols(from)); |
return to; |
} |
dart.copyProperties = copyProperties; |
@@ -804,6 +808,7 @@ var dart, _js_helper; |
dart.void = { toString() { return 'void'; } }; |
dart.bottom = { toString() { return 'bottom'; } }; |
+ dart.global = window || global; |
dart.JsSymbol = Symbol; |
// TODO(jmesserly): hack to bootstrap the SDK |