File tree Expand file tree Collapse file tree 2 files changed +16
-5
lines changed Expand file tree Collapse file tree 2 files changed +16
-5
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ const variableUtil = require('./variable');
11
11
const pragmaUtil = require ( './pragma' ) ;
12
12
const astUtil = require ( './ast' ) ;
13
13
const propTypes = require ( './propTypes' ) ;
14
+ const jsxUtil = require ( './jsx' ) ;
14
15
15
16
function getId ( node ) {
16
17
return node && node . range . join ( ':' ) ;
@@ -349,12 +350,12 @@ function componentRule(rule, context) {
349
350
const returnsConditionalJSXConsequent =
350
351
node [ property ] &&
351
352
node [ property ] . type === 'ConditionalExpression' &&
352
- node [ property ] . consequent . type === 'JSXElement'
353
+ jsxUtil . isJSX ( node [ property ] . consequent )
353
354
;
354
355
const returnsConditionalJSXAlternate =
355
356
node [ property ] &&
356
357
node [ property ] . type === 'ConditionalExpression' &&
357
- node [ property ] . alternate . type === 'JSXElement'
358
+ jsxUtil . isJSX ( node [ property ] . alternate )
358
359
;
359
360
const returnsConditionalJSX =
360
361
strict ?
@@ -363,7 +364,7 @@ function componentRule(rule, context) {
363
364
364
365
const returnsJSX =
365
366
node [ property ] &&
366
- node [ property ] . type === 'JSXElement'
367
+ jsxUtil . isJSX ( node [ property ] )
367
368
;
368
369
const returnsReactCreateElement = this . isReactCreateElement ( node [ property ] ) ;
369
370
Original file line number Diff line number Diff line change @@ -9,7 +9,7 @@ const COMPAT_TAG_REGEX = /^[a-z]|\-/;
9
9
10
10
/**
11
11
* Checks if a node represents a DOM element.
12
- * @param {String } node - JSXOpeningElement to check.
12
+ * @param {object } node - JSXOpeningElement to check.
13
13
* @returns {boolean } Whether or not the node corresponds to a DOM element.
14
14
*/
15
15
function isDOMComponent ( node ) {
@@ -25,6 +25,16 @@ function isDOMComponent(node) {
25
25
return COMPAT_TAG_REGEX . test ( name ) ;
26
26
}
27
27
28
+ /**
29
+ * Checks if a node represents a JSX element or fragment.
30
+ * @param {object } node - node to check.
31
+ * @returns {boolean } Whether or not the node if a JSX element or fragment.
32
+ */
33
+ function isJSX ( node ) {
34
+ return [ 'JSXElement' , 'JSXFragment' ] . indexOf ( node . type ) >= 0 ;
35
+ }
36
+
28
37
module . exports = {
29
- isDOMComponent : isDOMComponent
38
+ isDOMComponent : isDOMComponent ,
39
+ isJSX : isJSX
30
40
} ;
You can’t perform that action at this time.
0 commit comments