@@ -133,19 +133,27 @@ function componentRule(rule, context) {
133
133
* @returns {Boolean } True if the node is returning JSX, false if not
134
134
*/
135
135
isReturningJSX : function ( node ) {
136
- if ( node . type !== 'ReturnStatement' ) {
137
- return false ;
136
+ var property ;
137
+ switch ( node . type ) {
138
+ case 'ReturnStatement' :
139
+ property = 'argument' ;
140
+ break ;
141
+ case 'ArrowFunctionExpression' :
142
+ property = 'body' ;
143
+ break ;
144
+ default :
145
+ return false ;
138
146
}
139
147
140
148
var returnsJSX =
141
- node . argument &&
142
- node . argument . type === 'JSXElement'
149
+ node [ property ] &&
150
+ node [ property ] . type === 'JSXElement'
143
151
;
144
152
var returnsReactCreateElement =
145
- node . argument &&
146
- node . argument . callee &&
147
- node . argument . callee . property &&
148
- node . argument . callee . property . name === 'createElement'
153
+ node [ property ] &&
154
+ node [ property ] . callee &&
155
+ node [ property ] . callee . property &&
156
+ node [ property ] . callee . property . name === 'createElement'
149
157
;
150
158
151
159
return Boolean ( returnsJSX || returnsReactCreateElement ) ;
@@ -339,8 +347,12 @@ function componentRule(rule, context) {
339
347
if ( ! node ) {
340
348
return ;
341
349
}
342
- var component = components . get ( node ) ;
343
- components . add ( node , { confident : component && component . confident || false } ) ;
350
+ if ( node . expression && context . react . isReturningJSX ( node ) ) {
351
+ components . add ( node , { confident : true } ) ;
352
+ } else {
353
+ var component = components . get ( node ) ;
354
+ components . add ( node , { confident : component && component . confident || false } ) ;
355
+ }
344
356
} ,
345
357
346
358
ReturnStatement : function ( node ) {
0 commit comments