@@ -35,19 +35,15 @@ module.exports = {
35
35
}
36
36
37
37
/**
38
- * Check if a given AST node has a render method
39
- * @param {ASTNode } node The AST node being checked .
40
- * @returns {Boolean } True if there is a render method, false if not
38
+ * Find render method in a given AST node
39
+ * @param {ASTNode } node The component to find render method .
40
+ * @returns {ASTNode } Method node if found, undefined if not.
41
41
*/
42
- function hasRenderMethod ( node ) {
42
+ function findRenderMethod ( node ) {
43
43
const properties = astUtil . getComponentProperties ( node ) ;
44
- for ( let i = 0 , j = properties . length ; i < j ; i ++ ) {
45
- if ( astUtil . getPropertyName ( properties [ i ] ) !== 'render' || ! properties [ i ] . value ) {
46
- continue ;
47
- }
48
- return astUtil . isFunctionLikeExpression ( properties [ i ] . value ) ;
49
- }
50
- return false ;
44
+ return properties
45
+ . filter ( property => astUtil . getPropertyName ( property ) === 'render' && property . value )
46
+ . find ( property => astUtil . isFunctionLikeExpression ( property . value ) ) ;
51
47
}
52
48
53
49
return {
@@ -80,14 +76,14 @@ module.exports = {
80
76
const list = components . list ( ) ;
81
77
Object . keys ( list ) . forEach ( component => {
82
78
if (
83
- ! hasRenderMethod ( list [ component ] . node ) ||
79
+ ! findRenderMethod ( list [ component ] . node ) ||
84
80
list [ component ] . hasReturnStatement ||
85
81
( ! utils . isES5Component ( list [ component ] . node ) && ! utils . isES6Component ( list [ component ] . node ) )
86
82
) {
87
83
return ;
88
84
}
89
85
context . report ( {
90
- node : list [ component ] . node ,
86
+ node : findRenderMethod ( list [ component ] . node ) ,
91
87
message : 'Your render method should have return statement'
92
88
} ) ;
93
89
} ) ;
0 commit comments