Skip to content

Commit

Permalink
feat: support bigInt in numeric-separator transform (#12240)
Browse files Browse the repository at this point in the history
  • Loading branch information
JLHwung committed Oct 22, 2020
1 parent d6816f0 commit 8b579a2
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 6 deletions.
21 changes: 15 additions & 6 deletions 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<BigIntLiteral | NumericLiteral>} { node }: A Babel AST node path
*/
function remover({ node }: NodePath<BigIntLiteral | NumericLiteral>) {
const { extra } = node;
if (extra && extra.raw.includes("_")) {
extra.raw = extra.raw.replace(/_/g, "");
}
}

export default declare(api => {
api.assertVersion(7);

Expand All @@ -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,
},
};
});
@@ -0,0 +1 @@
expect(9_007_199_254_740_993n).toBe(9007199254740993n);
@@ -0,0 +1,4 @@
{
"plugins": ["proposal-numeric-separator"],
"minNodeVersion": "10.4.0"
}
@@ -0,0 +1 @@
9_007_199_254_740_993n;
@@ -0,0 +1 @@
9007199254740993n;

0 comments on commit 8b579a2

Please sign in to comment.