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 = {
8484 inRender = false ;
8585 }
8686
87+ /**
88+ * Walk 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+
87101 /**
88102 * Left side of an assignment expr found
89103 *
90104 * @param {Rule.Node } node Node entered
91105 * @return {void }
92106 */
93107 function assignmentFound ( node : Rule . Node ) : void {
94- if ( ! inRender ) {
108+ if ( ! inRender || node . type !== 'MemberExpression' ) {
95109 return ;
96110 }
97111
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+ }
102120 }
103121
104122 return {
@@ -112,7 +130,7 @@ const rule: Rule.RuleModule = {
112130 methodEnter ( node as ESTree . MethodDefinition ) ,
113131 'MethodDefinition:exit' : methodExit ,
114132 // eslint-disable-next-line max-len
115- 'AssignmentExpression > .left:has(ThisExpression:not(:matches(.property ThisExpression, CallExpression ThisExpression)) )' : (
133+ 'AssignmentExpression > .left:has(ThisExpression)' : (
116134 node : Rule . Node
117135 ) : void => assignmentFound ( node )
118136 } ;
You can’t perform that action at this time.
0 commit comments