File tree Expand file tree Collapse file tree 1 file changed +24
-6
lines changed Expand file tree Collapse file tree 1 file changed +24
-6
lines changed Original file line number Diff line number Diff line change @@ -84,21 +84,39 @@ const rule: Rule.RuleModule = {
84
84
inRender = false ;
85
85
}
86
86
87
+ /**
88
+ * Walk left side assignment members and return first non-member
89
+ *
90
+ * @param {ESTree.MemberExpression } member Member entered
91
+ * @return {ESTree.Node }
92
+ */
93
+ function walkMembers ( member : ESTree . MemberExpression ) : ESTree . Node {
94
+ if ( member . object . type === 'MemberExpression' ) {
95
+ return walkMembers ( member . object ) ;
96
+ } else {
97
+ return member . object ;
98
+ }
99
+ }
100
+
87
101
/**
88
102
* Left side of an assignment expr found
89
103
*
90
104
* @param {Rule.Node } node Node entered
91
105
* @return {void }
92
106
*/
93
107
function assignmentFound ( node : Rule . Node ) : void {
94
- if ( ! inRender ) {
108
+ if ( ! inRender || node . type !== 'MemberExpression' ) {
95
109
return ;
96
110
}
97
111
98
- context . report ( {
99
- node : node . parent ,
100
- messageId : 'noThis'
101
- } ) ;
112
+ const nonMember = walkMembers ( node ) ;
113
+
114
+ if ( nonMember . type === 'ThisExpression' ) {
115
+ context . report ( {
116
+ node : node . parent ,
117
+ messageId : 'noThis'
118
+ } ) ;
119
+ }
102
120
}
103
121
104
122
return {
@@ -112,7 +130,7 @@ const rule: Rule.RuleModule = {
112
130
methodEnter ( node as ESTree . MethodDefinition ) ,
113
131
'MethodDefinition:exit' : methodExit ,
114
132
// eslint-disable-next-line max-len
115
- 'AssignmentExpression > .left:has(ThisExpression:not(:matches(.property ThisExpression, CallExpression ThisExpression)) )' : (
133
+ 'AssignmentExpression > .left:has(ThisExpression)' : (
116
134
node : Rule . Node
117
135
) : void => assignmentFound ( node )
118
136
} ;
You can’t perform that action at this time.
0 commit comments