From 8affe9b6d9892fd567187057237f3d028adec825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 10 Dec 2020 12:58:27 +0100 Subject: [PATCH] Make unknown assumptions default to `undefined` --- packages/babel-core/src/config/helpers/config-api.js | 4 ++-- packages/babel-core/src/config/partial.js | 5 +---- packages/babel-core/src/config/validation/options.js | 1 - packages/babel-core/test/assumptions.js | 10 ++++------ packages/babel-core/test/config-chain.js | 2 +- packages/babel-helper-plugin-utils/src/index.js | 4 +--- 6 files changed, 9 insertions(+), 17 deletions(-) diff --git a/packages/babel-core/src/config/helpers/config-api.js b/packages/babel-core/src/config/helpers/config-api.js index a10ccbbde274..24dfedc9f817 100644 --- a/packages/babel-core/src/config/helpers/config-api.js +++ b/packages/babel-core/src/config/helpers/config-api.js @@ -26,7 +26,7 @@ type CallerFactory = ((CallerMetadata | void) => mixed) => SimpleType; type TargetsFunction = () => Targets; -type AssumptionFunction = (name: string) => boolean; +type AssumptionFunction = (name: string) => boolean | void; export type ConfigAPI = {| version: string, @@ -94,7 +94,7 @@ export function makePresetAPI( export function makePluginAPI( cache: CacheConfigurator, ): PluginAPI { - const assumption = name => cache.using(data => !!data.assumptions[name]); + const assumption = name => cache.using(data => data.assumptions[name]); return { ...makePresetAPI(cache), assumption }; } diff --git a/packages/babel-core/src/config/partial.js b/packages/babel-core/src/config/partial.js index ca610dce3587..5d74daa00ec0 100644 --- a/packages/babel-core/src/config/partial.js +++ b/packages/babel-core/src/config/partial.js @@ -118,10 +118,7 @@ export default function* loadPrivatePartialConfig( if (!configChain) return null; const merged: ValidatedOptions = { - // TODO(Babel 8): everything should default to false. Remove this object. - assumptions: { - newableArrowFunctions: true, - }, + assumptions: {}, }; configChain.options.forEach(opts => { mergeOptions((merged: any), opts); diff --git a/packages/babel-core/src/config/validation/options.js b/packages/babel-core/src/config/validation/options.js index 507b183fa07a..c5e99846b974 100644 --- a/packages/babel-core/src/config/validation/options.js +++ b/packages/babel-core/src/config/validation/options.js @@ -333,7 +333,6 @@ export type NestingPath = RootPath | OverridesPath | EnvPath; export const assumptionsNames = new Set([ "mutableTemplateObject", - "newableArrowFunctions", "setPublicClassFields", ]); diff --git a/packages/babel-core/test/assumptions.js b/packages/babel-core/test/assumptions.js index ad23adae50a7..3f6e58005eb1 100644 --- a/packages/babel-core/test/assumptions.js +++ b/packages/babel-core/test/assumptions.js @@ -39,8 +39,6 @@ describe("assumptions", () => { ).toEqual({ setPublicClassFields: true, mutableTemplateObject: true, - // This is enabled by default - newableArrowFunctions: true, }); }); @@ -58,9 +56,9 @@ describe("assumptions", () => { api => { setPublicClassFields = api.assumption("setPublicClassFields"); - // Unknown assumptions default to "false" and don't throw, so - // that plugins can keep compat with older @babel/core versions - // when they introduce support for a new assumption. + // Unknown assumptions don't throw, so that plugins can keep compat + // with older @babel/core versions when they introduce support for + // a new assumption. unknownAssumption = api.assumption("unknownAssumption"); return {}; @@ -69,7 +67,7 @@ describe("assumptions", () => { }); expect(setPublicClassFields).toBe(true); - expect(unknownAssumption).toBe(false); + expect(unknownAssumption).toBe(undefined); }); it("cannot be queried from presets", () => { diff --git a/packages/babel-core/test/config-chain.js b/packages/babel-core/test/config-chain.js index d99a6da63068..f710d347ed9e 100644 --- a/packages/babel-core/test/config-chain.js +++ b/packages/babel-core/test/config-chain.js @@ -985,7 +985,7 @@ describe("buildConfigChain", function () { presets: [], cloneInputAst: true, targets: {}, - assumptions: { newableArrowFunctions: true }, + assumptions: {}, }); const realEnv = process.env.NODE_ENV; const realBabelEnv = process.env.BABEL_ENV; diff --git a/packages/babel-helper-plugin-utils/src/index.js b/packages/babel-helper-plugin-utils/src/index.js index 8f90cae836e7..5347c2470fa7 100644 --- a/packages/babel-helper-plugin-utils/src/index.js +++ b/packages/babel-helper-plugin-utils/src/index.js @@ -28,9 +28,7 @@ const apiPolyfills = { }, // This is supported starting from Babel 7.13 // TODO(Babel 8): Remove this polyfill - assumption: () => () => { - return false; - }, + assumption: () => () => {}, }; function copyApiObject(api) {