diff --git a/src/babel/transformation/helpers/name-method.js b/src/babel/transformation/helpers/name-method.js index 680fd26fd7..78174301c0 100644 --- a/src/babel/transformation/helpers/name-method.js +++ b/src/babel/transformation/helpers/name-method.js @@ -111,8 +111,7 @@ export function property(node, file, scope) { var key = t.toComputedKey(node, node.key); if (!t.isLiteral(key)) return; // we can't set a function id with this - var name = t.toIdentifier(key.value); - if (name === "eval" || name === "arguments") name = "_" + name; + var name = t.toBindingIdentifierName(key.value); var id = t.identifier(name); var method = node.value; @@ -153,7 +152,7 @@ export function bare(node, parent, scope) { return; } - name = t.toIdentifier(name); + name = t.toBindingIdentifierName(name); id = t.identifier(name); var state = visit(node, name, scope); diff --git a/src/babel/types/converters.js b/src/babel/types/converters.js index 2932e49158..1130c9078d 100644 --- a/src/babel/types/converters.js +++ b/src/babel/types/converters.js @@ -154,6 +154,17 @@ export function toIdentifier(name: string): string { return name || "_"; } +/* + * Description + */ + +export function toBindingIdentifierName(name) { + name = toIdentifier(name); + if (name === "eval" || name === "arguments") name = "_" + name; + return name; +} + + /** * Description * diff --git a/test/core/fixtures/transformation/spec.function-name/eval/actual.js b/test/core/fixtures/transformation/spec.function-name/eval/actual.js new file mode 100644 index 0000000000..81c171ff4b --- /dev/null +++ b/test/core/fixtures/transformation/spec.function-name/eval/actual.js @@ -0,0 +1,5 @@ +var a = { + eval(){ + return eval; + } +}; diff --git a/test/core/fixtures/transformation/spec.function-name/eval/expected.js b/test/core/fixtures/transformation/spec.function-name/eval/expected.js new file mode 100644 index 0000000000..20d5311d9b --- /dev/null +++ b/test/core/fixtures/transformation/spec.function-name/eval/expected.js @@ -0,0 +1,7 @@ +"use strict"; + +var a = { + eval: function _eval() { + return eval; + } +};