diff --git a/packages/babel-traverse/src/scope/index.js b/packages/babel-traverse/src/scope/index.js index ce3303bbaf..747fbca3d3 100644 --- a/packages/babel-traverse/src/scope/index.js +++ b/packages/babel-traverse/src/scope/index.js @@ -593,7 +593,7 @@ export default class Scope { if (node.computed && !this.isPure(node.key, constantsOnly)) return false; if (node.kind === "get" || node.kind === "set") return false; return true; - } else if (t.isClassProperty(node)) { + } else if (t.isClassProperty(node) || t.isObjectProperty(node)) { if (node.computed && !this.isPure(node.key, constantsOnly)) return false; return this.isPure(node.value, constantsOnly); } else if (t.isUnaryExpression(node)) { diff --git a/packages/babel-traverse/test/scope.js b/packages/babel-traverse/test/scope.js index d58ccc1ae3..c119d6f5ac 100644 --- a/packages/babel-traverse/test/scope.js +++ b/packages/babel-traverse/test/scope.js @@ -34,5 +34,9 @@ suite("scope", function () { assert.ok(getPath("var [ foo ] = null;").scope.getBinding("foo").path.type === "VariableDeclarator"); assert.ok(getPath("var { bar: [ foo ] } = null;").scope.getBinding("foo").path.type === "VariableDeclarator"); }); + + test("purity", function () { + assert.ok(getPath("({ x: 1 })").get("body")[0].get("expression").isPure()); + }); }); });