From f17b268a71d20751ee425fd08a0b33f63af67618 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 7 May 2015 16:23:33 +0100 Subject: [PATCH] do member expression and property literal conversion to computed on exit rather than on entrance --- .../es3/member-expression-literals.js | 16 +++++++++------- .../transformers/es3/property-literals.js | 14 ++++++++------ .../minification/member-expression-literals.js | 16 +++++++++------- .../minification/property-literals.js | 16 +++++++++------- 4 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/babel/transformation/transformers/es3/member-expression-literals.js b/src/babel/transformation/transformers/es3/member-expression-literals.js index 9b6b30bff7..1665d20b25 100644 --- a/src/babel/transformation/transformers/es3/member-expression-literals.js +++ b/src/babel/transformation/transformers/es3/member-expression-literals.js @@ -1,10 +1,12 @@ import * as t from "../../../types"; -export function MemberExpression(node) { - var prop = node.property; - if (!node.computed && t.isIdentifier(prop) && !t.isValidIdentifier(prop.name)) { - // foo.default -> foo["default"] - node.property = t.literal(prop.name); - node.computed = true; +export var MemberExpression = { + exit(node) { + var prop = node.property; + if (!node.computed && t.isIdentifier(prop) && !t.isValidIdentifier(prop.name)) { + // foo.default -> foo["default"] + node.property = t.literal(prop.name); + node.computed = true; + } } -} +}; diff --git a/src/babel/transformation/transformers/es3/property-literals.js b/src/babel/transformation/transformers/es3/property-literals.js index 0c9b26a9cd..f70a81661b 100644 --- a/src/babel/transformation/transformers/es3/property-literals.js +++ b/src/babel/transformation/transformers/es3/property-literals.js @@ -1,9 +1,11 @@ import * as t from "../../../types"; -export function Property(node) { - var key = node.key; - if (!node.computed && t.isIdentifier(key) && !t.isValidIdentifier(key.name)) { - // default: "bar" -> "default": "bar" - node.key = t.literal(key.name); +export var Property = { + exit(node) { + var key = node.key; + if (!node.computed && t.isIdentifier(key) && !t.isValidIdentifier(key.name)) { + // default: "bar" -> "default": "bar" + node.key = t.literal(key.name); + } } -} +}; diff --git a/src/babel/transformation/transformers/minification/member-expression-literals.js b/src/babel/transformation/transformers/minification/member-expression-literals.js index 2038c70d4b..fe8862dc8c 100644 --- a/src/babel/transformation/transformers/minification/member-expression-literals.js +++ b/src/babel/transformation/transformers/minification/member-expression-literals.js @@ -4,11 +4,13 @@ export var metadata = { optional: true }; -export function MemberExpression(node) { - var prop = node.property; - if (node.computed && t.isLiteral(prop) && t.isValidIdentifier(prop.value)) { - // foo["bar"] => foo.bar - node.property = t.identifier(prop.value); - node.computed = false; +export var MemberExpression = { + exit(node) { + var prop = node.property; + if (node.computed && t.isLiteral(prop) && t.isValidIdentifier(prop.value)) { + // foo["bar"] => foo.bar + node.property = t.identifier(prop.value); + node.computed = false; + } } -} +}; diff --git a/src/babel/transformation/transformers/minification/property-literals.js b/src/babel/transformation/transformers/minification/property-literals.js index 84902d2b94..c85769a4e8 100644 --- a/src/babel/transformation/transformers/minification/property-literals.js +++ b/src/babel/transformation/transformers/minification/property-literals.js @@ -4,11 +4,13 @@ export var metadata = { optional: true }; -export function Property(node) { - var key = node.key; - if (t.isLiteral(key) && t.isValidIdentifier(key.value)) { - // "foo": "bar" -> foo: "bar" - node.key = t.identifier(key.value); - node.computed = false; +export var Property = { + exit(node) { + var key = node.key; + if (t.isLiteral(key) && t.isValidIdentifier(key.value)) { + // "foo": "bar" -> foo: "bar" + node.key = t.identifier(key.value); + node.computed = false; + } } -} +};