@@ -133,19 +133,27 @@ function componentRule(rule, context) {
133133 * @returns {Boolean } True if the node is returning JSX, false if not
134134 */
135135 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 ;
138146 }
139147
140148 var returnsJSX =
141- node . argument &&
142- node . argument . type === 'JSXElement'
149+ node [ property ] &&
150+ node [ property ] . type === 'JSXElement'
143151 ;
144152 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'
149157 ;
150158
151159 return Boolean ( returnsJSX || returnsReactCreateElement ) ;
@@ -339,8 +347,12 @@ function componentRule(rule, context) {
339347 if ( ! node ) {
340348 return ;
341349 }
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+ }
344356 } ,
345357
346358 ReturnStatement : function ( node ) {
0 commit comments