@@ -47,6 +47,20 @@ ruleTester.run("no-extra-bind", rule, {
4747 code : "var a = function() { return () => this; }.bind(b)" ,
4848 languageOptions : { ecmaVersion : 6 } ,
4949 } ,
50+
51+ // Class fields and static blocks
52+ {
53+ code : "var a = function() { return class { [this.foo] = 5; }; }.bind(b);" ,
54+ languageOptions : { ecmaVersion : 2022 } ,
55+ } ,
56+ {
57+ code : "class C { field = function() { this; }.bind(b); }" ,
58+ languageOptions : { ecmaVersion : 2022 } ,
59+ } ,
60+ {
61+ code : "class C { static { var a = function() { this; }.bind(b); } }" ,
62+ languageOptions : { ecmaVersion : 2022 } ,
63+ } ,
5064 ] ,
5165 invalid : [
5266 {
@@ -253,5 +267,25 @@ ruleTester.run("no-extra-bind", rule, {
253267 languageOptions : { ecmaVersion : 2020 } ,
254268 errors : [ { messageId : "unexpected" } ] ,
255269 } ,
270+
271+ // Class fields and static blocks
272+ {
273+ code : "var a = function() { class C { field = this.x; } }.bind(b)" ,
274+ output : "var a = function() { class C { field = this.x; } }" ,
275+ languageOptions : { ecmaVersion : 2022 } ,
276+ errors,
277+ } ,
278+ {
279+ code : "var a = function() { class C { static field = this.x; } }.bind(b)" ,
280+ output : "var a = function() { class C { static field = this.x; } }" ,
281+ languageOptions : { ecmaVersion : 2022 } ,
282+ errors,
283+ } ,
284+ {
285+ code : "var a = function() { class C { static { this.x = 1; } } }.bind(b)" ,
286+ output : "var a = function() { class C { static { this.x = 1; } } }" ,
287+ languageOptions : { ecmaVersion : 2022 } ,
288+ errors,
289+ } ,
256290 ] ,
257291} ) ;
0 commit comments