diff --git a/packages/babel-helpers/src/helpers.js b/packages/babel-helpers/src/helpers.js index b4b8c203a2..24e796a48c 100644 --- a/packages/babel-helpers/src/helpers.js +++ b/packages/babel-helpers/src/helpers.js @@ -278,6 +278,20 @@ helpers.defineEnumerableProperties = template(` if ("value" in desc) desc.writable = true; Object.defineProperty(obj, key, desc); } + + // Symbols are not enumerated over by for-in loops. If native + // Symbols are available, fetch all of the descs object's own + // symbol properties and define them on our target object too. + if (Object.getOwnPropertySymbols) { + var objectSymbols = Object.getOwnPropertySymbols(descs); + for (var idx in objectSymbols) { + var sym = objectSymbols[idx]; + var desc = descs[sym]; + desc.configurable = desc.enumerable = true; + if ("value" in desc) desc.writable = true; + Object.defineProperty(obj, sym, desc); + } + } return obj; }) `);