From 83d365acb60db2943279cb6f3914c55f52b5702d Mon Sep 17 00:00:00 2001 From: Zen <843968788@qq.com> Date: Sun, 26 Apr 2020 00:34:52 +0800 Subject: [PATCH] handle objectMethod in scope.isPure (#11482) --- packages/babel-traverse/src/scope/index.js | 2 +- packages/babel-traverse/test/scope.js | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/babel-traverse/src/scope/index.js b/packages/babel-traverse/src/scope/index.js index 45d3d7fc98..42581748bf 100644 --- a/packages/babel-traverse/src/scope/index.js +++ b/packages/babel-traverse/src/scope/index.js @@ -723,7 +723,7 @@ export default class Scope { if (!this.isPure(prop, constantsOnly)) return false; } return true; - } else if (t.isClassMethod(node)) { + } else if (t.isMethod(node)) { if (node.computed && !this.isPure(node.key, constantsOnly)) return false; if (node.kind === "get" || node.kind === "set") return false; return true; diff --git a/packages/babel-traverse/test/scope.js b/packages/babel-traverse/test/scope.js index 3777477273..d62675a5b5 100644 --- a/packages/babel-traverse/test/scope.js +++ b/packages/babel-traverse/test/scope.js @@ -203,11 +203,17 @@ describe("scope", () => { it("purity", function() { expect( - getPath("({ x: 1 })") + getPath("({ x: 1, foo() { return 1 } })") .get("body")[0] .get("expression") .isPure(), ).toBeTruthy(); + expect( + getPath("class X { get foo() { return 1 } }") + .get("body")[0] + .get("expression") + .isPure(), + ).toBeFalsy(); expect( getPath("`${a}`") .get("body")[0]