feat: support bigInt in numeric-separator transform (#12240)

This commit is contained in:
Huáng Jùnliàng 2020-10-22 16:49:31 -04:00 committed by GitHub
parent d6816f0e6c
commit 8b579a27dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 22 additions and 6 deletions

View File

@ -1,6 +1,19 @@
import { declare } from "@babel/helper-plugin-utils"; import { declare } from "@babel/helper-plugin-utils";
import syntaxNumericSeparator from "@babel/plugin-syntax-numeric-separator"; 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 => { export default declare(api => {
api.assertVersion(7); api.assertVersion(7);
@ -9,12 +22,8 @@ export default declare(api => {
inherits: syntaxNumericSeparator, inherits: syntaxNumericSeparator,
visitor: { visitor: {
NumericLiteral({ node }) { NumericLiteral: remover,
const { extra } = node; BigIntLiteral: remover,
if (extra && /_/.test(extra.raw)) {
extra.raw = extra.raw.replace(/_/g, "");
}
},
}, },
}; };
}); });

View File

@ -0,0 +1 @@
expect(9_007_199_254_740_993n).toBe(9007199254740993n);

View File

@ -0,0 +1,4 @@
{
"plugins": ["proposal-numeric-separator"],
"minNodeVersion": "10.4.0"
}

View File

@ -0,0 +1 @@
9_007_199_254_740_993n;

View File

@ -0,0 +1 @@
9007199254740993n;