From 8874c5c4819794b1fe7ea43725193dd6177ab7ce Mon Sep 17 00:00:00 2001 From: Jarda Snajdr Date: Tue, 21 Aug 2018 20:53:11 +0200 Subject: [PATCH] Add missing es7.promise.finally polyfill when using useBuiltIns: usage (#8500) Usage of a `finally` instance method should trigger import of the `es7.promise.finally` polyfill, but it doesn't. This PR adds the missing definition and a test. --- .../babel-preset-env/src/built-in-definitions.js | 1 + .../promise-finally/input.mjs | 4 ++++ .../promise-finally/options.json | 14 ++++++++++++++ .../promise-finally/output.mjs | 6 ++++++ 4 files changed, 25 insertions(+) create mode 100644 packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/input.mjs create mode 100644 packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/options.json create mode 100644 packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/output.mjs diff --git a/packages/babel-preset-env/src/built-in-definitions.js b/packages/babel-preset-env/src/built-in-definitions.js index 121ffc84f8..bcad0d8651 100644 --- a/packages/babel-preset-env/src/built-in-definitions.js +++ b/packages/babel-preset-env/src/built-in-definitions.js @@ -46,6 +46,7 @@ export const definitions = { every: ["es6.array.is-array"], fill: ["es6.array.fill"], filter: ["es6.array.filter"], + finally: ["es7.promise.finally"], find: ["es6.array.find"], findIndex: ["es6.array.find-index"], fixed: ["es6.string.fixed"], diff --git a/packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/input.mjs b/packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/input.mjs new file mode 100644 index 0000000000..bb634febe9 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/input.mjs @@ -0,0 +1,4 @@ +var p = Promise.resolve(0); +p.finally(() => { + alert("OK"); +}); diff --git a/packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/options.json b/packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/options.json new file mode 100644 index 0000000000..eeb3ed89dd --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/options.json @@ -0,0 +1,14 @@ +{ + "presets": [ + [ + "../../../../lib", + { + "targets": { + "browsers": ["ie > 10"] + }, + "useBuiltIns": "usage", + "modules": false + } + ] + ] +} diff --git a/packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/output.mjs b/packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/output.mjs new file mode 100644 index 0000000000..966401f6c6 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options-add-used-built-ins/promise-finally/output.mjs @@ -0,0 +1,6 @@ +import "core-js/modules/es7.promise.finally"; +import "core-js/modules/es6.promise"; +var p = Promise.resolve(0); +p.finally(function () { + alert("OK"); +});