From 490f4ea3f11ecc64081c0c0143e4ed4429956169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Sun, 15 Mar 2020 00:18:51 +0100 Subject: [PATCH] Add for-of fallback for arrays in browsers without symbol support --- packages/babel-helpers/src/helpers.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/babel-helpers/src/helpers.js b/packages/babel-helpers/src/helpers.js index 4d589f58e3a3..7868bec861e4 100644 --- a/packages/babel-helpers/src/helpers.js +++ b/packages/babel-helpers/src/helpers.js @@ -1043,8 +1043,24 @@ helpers.createForOfIteratorHelper = helper("7.9.0")` // f: finish (always called at the end) export default function _createForOfIteratorHelper(o) { - if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) + if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { + // Fallback for engines without symbol support + if (Array.isArray(o)) { + var i = 0; + var F = function(){}; + return { + s: F, + n: function() { + if (i >= o.length) return { done: true }; + return { done: false, value: o[i++] }; + }, + e: F, + f: F, + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } var it, normalCompletion = true, didErr = false, err; @@ -1077,6 +1093,7 @@ helpers.createForOfIteratorHelperLoose = helper("7.9.0")` var i = 0; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { + // Fallback for engines without symbol support if (Array.isArray(o)) return function() { if (i >= o.length) return { done: true };