From dfea5cfb18e5813be07d20108db1e76901713a88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Giovanni=20Cal=C3=B2?= Date: Sat, 22 Aug 2020 00:08:01 +0100 Subject: [PATCH 1/3] Added linting support for private class methods --- eslint/babel-eslint-plugin/src/rules/no-invalid-this.js | 6 +++++- eslint/babel-eslint-plugin/test/rules/no-invalid-this.js | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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..015654733635 100644 --- a/eslint/babel-eslint-plugin/src/rules/no-invalid-this.js +++ b/eslint/babel-eslint-plugin/src/rules/no-invalid-this.js @@ -8,7 +8,11 @@ export default ruleComposer.filterReports(noInvalidThisRule, problem => { let node = problem.node; while (node) { - if (node.type === "ClassProperty" || node.type === "ClassPrivateProperty") { + if ( + node.type === "ClassPrivateMethod" || + node.type === "ClassPrivateProperty" || + node.type === "ClassProperty" + ) { inClassProperty = true; return; } 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(); From 121dbe8d1b156e6da09b1e9623084dbf68acf9b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Giovanni=20Cal=C3=B2?= Date: Sat, 22 Aug 2020 14:15:34 +0100 Subject: [PATCH 2/3] Renamed variable --- eslint/babel-eslint-plugin/src/rules/no-invalid-this.js | 6 +++--- 1 file changed, 3 insertions(+), 3 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 015654733635..993239efc432 100644 --- a/eslint/babel-eslint-plugin/src/rules/no-invalid-this.js +++ b/eslint/babel-eslint-plugin/src/rules/no-invalid-this.js @@ -4,7 +4,7 @@ import eslint from "eslint"; const noInvalidThisRule = new eslint.Linter().getRules().get("no-invalid-this"); export default ruleComposer.filterReports(noInvalidThisRule, problem => { - let inClassProperty = false; + let inClassElement = false; let node = problem.node; while (node) { @@ -13,12 +13,12 @@ export default ruleComposer.filterReports(noInvalidThisRule, problem => { node.type === "ClassPrivateProperty" || node.type === "ClassProperty" ) { - inClassProperty = true; + inClassElement = true; return; } node = node.parent; } - return !inClassProperty; + return !inClassElement; }); From a136005c0dbb8ee3a98ac4481dc52cff88b22089 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Giovanni=20Cal=C3=B2?= Date: Mon, 24 Aug 2020 16:26:56 +0100 Subject: [PATCH 3/3] Renamed variable --- eslint/babel-eslint-plugin/src/rules/no-invalid-this.js | 6 +++--- 1 file changed, 3 insertions(+), 3 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 993239efc432..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,7 +4,7 @@ import eslint from "eslint"; const noInvalidThisRule = new eslint.Linter().getRules().get("no-invalid-this"); export default ruleComposer.filterReports(noInvalidThisRule, problem => { - let inClassElement = false; + let inClassMember = false; let node = problem.node; while (node) { @@ -13,12 +13,12 @@ export default ruleComposer.filterReports(noInvalidThisRule, problem => { node.type === "ClassPrivateProperty" || node.type === "ClassProperty" ) { - inClassElement = true; + inClassMember = true; return; } node = node.parent; } - return !inClassElement; + return !inClassMember; });