From 304eea41333cb9df6998901a18eaecfab7f9cef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Giovanni=20Cal=C3=B2?= Date: Mon, 24 Aug 2020 19:57:17 +0100 Subject: [PATCH] Added linting support for private class methods (#11993) * Added linting support for private class methods * Renamed variable * Renamed variable --- .../babel-eslint-plugin/src/rules/no-invalid-this.js | 12 ++++++++---- .../test/rules/no-invalid-this.js | 7 +++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/eslint/babel-eslint-plugin/src/rules/no-invalid-this.js b/eslint/babel-eslint-plugin/src/rules/no-invalid-this.js index 4c6434235c2a..d420faa5c18f 100644 --- a/eslint/babel-eslint-plugin/src/rules/no-invalid-this.js +++ b/eslint/babel-eslint-plugin/src/rules/no-invalid-this.js @@ -4,17 +4,21 @@ import eslint from "eslint"; const noInvalidThisRule = new eslint.Linter().getRules().get("no-invalid-this"); export default ruleComposer.filterReports(noInvalidThisRule, problem => { - let inClassProperty = false; + let inClassMember = false; let node = problem.node; while (node) { - if (node.type === "ClassProperty" || node.type === "ClassPrivateProperty") { - inClassProperty = true; + if ( + node.type === "ClassPrivateMethod" || + node.type === "ClassPrivateProperty" || + node.type === "ClassProperty" + ) { + inClassMember = true; return; } node = node.parent; } - return !inClassProperty; + return !inClassMember; }); diff --git a/eslint/babel-eslint-plugin/test/rules/no-invalid-this.js b/eslint/babel-eslint-plugin/test/rules/no-invalid-this.js index 7faa3bd745f5..925e8357cbcb 100644 --- a/eslint/babel-eslint-plugin/test/rules/no-invalid-this.js +++ b/eslint/babel-eslint-plugin/test/rules/no-invalid-this.js @@ -107,6 +107,13 @@ const patterns = [ valid: [NORMAL, USE_STRICT, IMPLIED_STRICT, MODULES], invalid: [], }, + + { + code: "class A {#a() {return this.b;};};", + parserOptions: { ecmaVersion: 6 }, + valid: [NORMAL, USE_STRICT, IMPLIED_STRICT, MODULES], + invalid: [], + }, ]; const ruleTester = new RuleTester();