diff --git a/packages/babel-plugin-proposal-numeric-separator/src/index.js b/packages/babel-plugin-proposal-numeric-separator/src/index.js index 915088dffe..9b16a62675 100644 --- a/packages/babel-plugin-proposal-numeric-separator/src/index.js +++ b/packages/babel-plugin-proposal-numeric-separator/src/index.js @@ -1,6 +1,19 @@ import { declare } from "@babel/helper-plugin-utils"; import syntaxNumericSeparator from "@babel/plugin-syntax-numeric-separator"; +/** + * Given a bigIntLiteral or NumericLiteral, remove numeric + * separator `_` from its raw representation + * + * @param {NodePath} { node }: A Babel AST node path + */ +function remover({ node }: NodePath) { + const { extra } = node; + if (extra && extra.raw.includes("_")) { + extra.raw = extra.raw.replace(/_/g, ""); + } +} + export default declare(api => { api.assertVersion(7); @@ -9,12 +22,8 @@ export default declare(api => { inherits: syntaxNumericSeparator, visitor: { - NumericLiteral({ node }) { - const { extra } = node; - if (extra && /_/.test(extra.raw)) { - extra.raw = extra.raw.replace(/_/g, ""); - } - }, + NumericLiteral: remover, + BigIntLiteral: remover, }, }; }); diff --git a/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint-exec/exec.js b/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint-exec/exec.js new file mode 100644 index 0000000000..829e285623 --- /dev/null +++ b/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint-exec/exec.js @@ -0,0 +1 @@ +expect(9_007_199_254_740_993n).toBe(9007199254740993n); diff --git a/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint-exec/options.json b/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint-exec/options.json new file mode 100644 index 0000000000..ec80ea0aff --- /dev/null +++ b/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint-exec/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["proposal-numeric-separator"], + "minNodeVersion": "10.4.0" +} diff --git a/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint/input.js b/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint/input.js new file mode 100644 index 0000000000..b56a08a58a --- /dev/null +++ b/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint/input.js @@ -0,0 +1 @@ +9_007_199_254_740_993n; diff --git a/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint/output.js b/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint/output.js new file mode 100644 index 0000000000..df6e6fd25d --- /dev/null +++ b/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/bigint/output.js @@ -0,0 +1 @@ +9007199254740993n; diff --git a/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/exec.js b/packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/numeric/exec.js similarity index 100% rename from packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/exec.js rename to packages/babel-plugin-proposal-numeric-separator/test/fixtures/removal/numeric/exec.js