From bddda1c3cc2fc987a20ac2a3bc00d2e8bba8d246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Fri, 4 Feb 2022 14:49:24 +0100 Subject: [PATCH] Add test for 14233 --- packages/babel-core/package.json | 1 + .../babel-core/test/external-dependencies.js | 25 +++++++++++++++++++ yarn.lock | 1 + 3 files changed, 27 insertions(+) diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index b70f7ffc7597..925f7395f950 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -67,6 +67,7 @@ "devDependencies": { "@babel/helper-transform-fixture-test-runner": "workspace:^", "@babel/plugin-transform-modules-commonjs": "workspace:^", + "@babel/plugin-transform-runtime": "workspace:^", "@types/convert-source-map": "^1.5.1", "@types/debug": "^4.1.0", "@types/resolve": "^1.3.2", diff --git a/packages/babel-core/test/external-dependencies.js b/packages/babel-core/test/external-dependencies.js index fe041e054484..24555a9f3355 100644 --- a/packages/babel-core/test/external-dependencies.js +++ b/packages/babel-core/test/external-dependencies.js @@ -1,6 +1,7 @@ import path from "path"; import { fileURLToPath } from "url"; import { transformSync } from "../lib/index.js"; +import transformRuntime from "@babel/plugin-transform-runtime"; const cwd = path.dirname(fileURLToPath(import.meta.url)); @@ -230,4 +231,28 @@ describe("externalDependencies", () => { ).not.toThrow(); }); }); + + describe("regressions", () => { + it("#14233", () => { + const code = `let a = 1`; + + expect(() => { + // TODO: Understand why transform-runtime makes it crash. + // Two important reaons are that: + // - It uses api.caller(), so it gets reinstantiated when it changes + // - It extends another plugin that does not need to be reinstantiated + // However, a very simple plugin that mets those conditions does not + // crash; there is something else going on. + transform(code, { + plugins: [transformRuntime], + caller: { name: "caller-1" }, + }); + + transform(code, { + plugins: [transformRuntime], + caller: { name: "caller-2" }, + }); + }).not.toThrow(); + }); + }); }); diff --git a/yarn.lock b/yarn.lock index bd558cd6df86..49da6d2128b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -332,6 +332,7 @@ __metadata: "@babel/helpers": "workspace:^" "@babel/parser": "workspace:^" "@babel/plugin-transform-modules-commonjs": "workspace:^" + "@babel/plugin-transform-runtime": "workspace:^" "@babel/template": "workspace:^" "@babel/traverse": "workspace:^" "@babel/types": "workspace:^"