From f3e2752df3f9815c494cbbc38b04d99b626d8ab9 Mon Sep 17 00:00:00 2001 From: fergald Date: Sat, 24 Aug 2019 17:12:15 +0900 Subject: [PATCH] Support private properties in no-invalid-this (babel/eslint-plugin-babel#183) * add failing test * support ClassPrivateProperty --- .../babel-eslint-plugin/rules/no-invalid-this.js | 7 ++++--- .../tests/rules/no-invalid-this.js | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/eslint/babel-eslint-plugin/rules/no-invalid-this.js b/eslint/babel-eslint-plugin/rules/no-invalid-this.js index ab12ca5320..994499eaad 100644 --- a/eslint/babel-eslint-plugin/rules/no-invalid-this.js +++ b/eslint/babel-eslint-plugin/rules/no-invalid-this.js @@ -5,17 +5,18 @@ const eslint = require('eslint'); const noInvalidThisRule = new eslint.Linter().getRules().get('no-invalid-this'); module.exports = ruleComposer.filterReports( - noInvalidThisRule, + noInvalidThisRule, (problem, metadata) => { let inClassProperty = false; let node = problem.node; while (node) { - if (node.type === "ClassProperty") { + if (node.type === "ClassProperty" || + node.type === "ClassPrivateProperty") { inClassProperty = true; return; } - + node = node.parent; } diff --git a/eslint/babel-eslint-plugin/tests/rules/no-invalid-this.js b/eslint/babel-eslint-plugin/tests/rules/no-invalid-this.js index 3ab5da59c9..e28c77aa5e 100644 --- a/eslint/babel-eslint-plugin/tests/rules/no-invalid-this.js +++ b/eslint/babel-eslint-plugin/tests/rules/no-invalid-this.js @@ -602,6 +602,21 @@ const patterns = [ valid: [NORMAL, USE_STRICT, IMPLIED_STRICT, MODULES], invalid: [] }, + + // Class Private Instance Properties. + { + code: "class A {#a = this.b;};", + parserOptions: { ecmaVersion: 6 }, + 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();