From 2c31587aa1cd4ca9dc699b8c2b24d6e54e568301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 2 Apr 2020 17:52:50 +0200 Subject: [PATCH] Fix createSuper in Babel <7.5.5 (#11341) * Fix createSuper in Babel <7.5.5 In Babel <7.5.5, addHelper only throws when called for the first time. This was fixed by babel/babel#10208, but since we are already adding a workaround for <7.9.0, we may as well fix <7.5.5 * Use 7.0.0 in "babel-old-version" test --- .../src/inline-createSuper-helpers.js | 12 ++++++------ scripts/integration-tests/e2e-babel-old-version.sh | 9 +++------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/packages/babel-plugin-transform-classes/src/inline-createSuper-helpers.js b/packages/babel-plugin-transform-classes/src/inline-createSuper-helpers.js index 14ea844ed502..d0a8b592a359 100644 --- a/packages/babel-plugin-transform-classes/src/inline-createSuper-helpers.js +++ b/packages/babel-plugin-transform-classes/src/inline-createSuper-helpers.js @@ -3,18 +3,18 @@ import { template, types as t } from "@babel/core"; const helperIDs = new WeakMap(); export default function addCreateSuperHelper(file) { - try { - return file.addHelper("createSuper"); - } catch { - // Babel <7.9.0 doesn't support the helper. - } - if (helperIDs.has(file)) { // TODO: Only use t.cloneNode in Babel 8 // t.cloneNode isn't supported in every version return (t.cloneNode || t.clone)(helperIDs.get(file)); } + try { + return file.addHelper("createSuper"); + } catch { + // Babel <7.9.0 doesn't support the helper. + } + const id = file.scope.generateUidIdentifier("createSuper"); helperIDs.set(file, id); diff --git a/scripts/integration-tests/e2e-babel-old-version.sh b/scripts/integration-tests/e2e-babel-old-version.sh index ce3391af47f8..1f72a237582d 100755 --- a/scripts/integration-tests/e2e-babel-old-version.sh +++ b/scripts/integration-tests/e2e-babel-old-version.sh @@ -23,15 +23,12 @@ cd ../.. startLocalRegistry "$PWD"/scripts/integration-tests/verdaccio-config.yml yarn upgrade --scope @babel -# We use @babel/core 7.5.5 instead of 7.0.0 because without babel/babel#10208 -# our @babel/standalone build fails. - node -e "\ var pkg = require('./package.json');\ - pkg.devDependencies['@babel/core'] = '7.5.5';\ + pkg.devDependencies['@babel/core'] = '7.0.0';\ Object.assign(pkg.resolutions, {\ - '@babel/core': '7.5.5',\ - '@babel/helpers': '7.5.5',\ + '@babel/core': '7.0.0',\ + '@babel/helpers': '7.0.0',\ '@babel/traverse': '7.0.0'\ });\ fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2));\