From c6edce115cb20c851f478a6c1f6dfd8fdacfc4a4 Mon Sep 17 00:00:00 2001 From: Justin Ridgewell Date: Thu, 20 Jul 2017 11:35:53 -0400 Subject: [PATCH] Fix numeric-separator transform (#5968) --- .../src/index.js | 20 ++++++++----------- packages/babel-types/test/validators.js | 2 +- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/packages/babel-plugin-transform-numeric-separator/src/index.js b/packages/babel-plugin-transform-numeric-separator/src/index.js index 37c26e529c..07f2f91fc1 100644 --- a/packages/babel-plugin-transform-numeric-separator/src/index.js +++ b/packages/babel-plugin-transform-numeric-separator/src/index.js @@ -1,33 +1,29 @@ import syntaxNumericSeparator from "babel-plugin-syntax-numeric-separator"; export default function({ types: t }) { - function replacer(value) { - return value.replace(/_/g, ""); - } - function replaceNumberArg({ node }) { if (node.callee.name !== "Number") { return; } + const arg = node.arguments[0]; if (!t.isStringLiteral(arg)) { return; } - arg.value = replacer(arg.value); - } - const CallExpression = replaceNumberArg; - const NewExpression = replaceNumberArg; + arg.value = arg.value.replace(/_/g, ""); + } return { inherits: syntaxNumericSeparator, visitor: { - CallExpression, - NewExpression, + CallExpression: replaceNumberArg, + NewExpression: replaceNumberArg, NumericLiteral({ node }) { - if (node.extra && /_/.test(node.extra.raw)) { - node.value = replacer(node.extra.raw); + const { extra } = node; + if (extra && /_/.test(extra.raw)) { + extra.raw = extra.raw.replace(/_/g, ""); } }, }, diff --git a/packages/babel-types/test/validators.js b/packages/babel-types/test/validators.js index 8b15edb25f..5b6fcaf543 100644 --- a/packages/babel-types/test/validators.js +++ b/packages/babel-types/test/validators.js @@ -38,7 +38,7 @@ suite("validators", function() { t.objectProperty( t.identifier("a"), t.objectPattern([ - t.objectProperty(t.identifier("b"), t.stringLiteral("foo")), + t.objectProperty(t.identifier("b"), t.identifier("foo")), t.objectProperty( t.identifier("c"), t.arrayPattern([t.identifier("value")]),