@@ -200,39 +200,6 @@ module.exports = {
200
200
} ) ;
201
201
}
202
202
203
- /**
204
- * Extracts a DefaultProp from an ObjectExpression node.
205
- * @param {ASTNode } objectExpression ObjectExpression node.
206
- * @returns {Object|string } Object representation of a defaultProp, to be consumed by
207
- * `addDefaultPropsToComponent`, or string "unresolved", if the defaultProps
208
- * from this ObjectExpression can't be resolved.
209
- */
210
- function getDefaultPropsFromObjectExpression ( objectExpression ) {
211
- const hasSpread = objectExpression . properties . find ( property => property . type === 'ExperimentalSpreadProperty' || property . type === 'SpreadElement' ) ;
212
-
213
- if ( hasSpread ) {
214
- return 'unresolved' ;
215
- }
216
-
217
- return objectExpression . properties . map ( defaultProp => ( {
218
- name : defaultProp . key . name ,
219
- node : defaultProp
220
- } ) ) ;
221
- }
222
-
223
- /**
224
- * Marks a component's DefaultProps declaration as "unresolved". A component's DefaultProps is
225
- * marked as "unresolved" if we cannot safely infer the values of its defaultProps declarations
226
- * without risking false negatives.
227
- * @param {Object } component The component to mark.
228
- * @returns {void }
229
- */
230
- function markDefaultPropsAsUnresolved ( component ) {
231
- components . set ( component . node , {
232
- defaultProps : 'unresolved'
233
- } ) ;
234
- }
235
-
236
203
/**
237
204
* Adds propTypes to the component passed in.
238
205
* @param {ASTNode } component The component to add the propTypes to.
@@ -247,31 +214,6 @@ module.exports = {
247
214
} ) ;
248
215
}
249
216
250
- /**
251
- * Adds defaultProps to the component passed in.
252
- * @param {ASTNode } component The component to add the defaultProps to.
253
- * @param {String[]|String } defaultProps defaultProps to add to the component or the string "unresolved"
254
- * if this component has defaultProps that can't be resolved.
255
- * @returns {void }
256
- */
257
- function addDefaultPropsToComponent ( component , defaultProps ) {
258
- // Early return if this component's defaultProps is already marked as "unresolved".
259
- if ( component . defaultProps === 'unresolved' ) {
260
- return ;
261
- }
262
-
263
- if ( defaultProps === 'unresolved' ) {
264
- markDefaultPropsAsUnresolved ( component ) ;
265
- return ;
266
- }
267
-
268
- const defaults = component . defaultProps || [ ] ;
269
-
270
- components . set ( component . node , {
271
- defaultProps : defaults . concat ( defaultProps )
272
- } ) ;
273
- }
274
-
275
217
/**
276
218
* Tries to find a props type annotation in a stateless component.
277
219
* @param {ASTNode } node The AST node to look for a props type annotation.
@@ -352,9 +294,8 @@ module.exports = {
352
294
return {
353
295
MemberExpression : function ( node ) {
354
296
const isPropType = propsUtil . isPropTypesDeclaration ( node ) ;
355
- const isDefaultProp = propsUtil . isDefaultPropsDeclaration ( node ) ;
356
297
357
- if ( ! isPropType && ! isDefaultProp ) {
298
+ if ( ! isPropType ) {
358
299
return ;
359
300
}
360
301
@@ -375,21 +316,8 @@ module.exports = {
375
316
// MyComponent.propTypes = myPropTypes;
376
317
if ( node . parent . type === 'AssignmentExpression' ) {
377
318
const expression = resolveNodeValue ( node . parent . right ) ;
378
- if ( ! expression || expression . type !== 'ObjectExpression' ) {
379
- // If a value can't be found, we mark the defaultProps declaration as "unresolved", because
380
- // we should ignore this component and not report any errors for it, to avoid false-positives
381
- // with e.g. external defaultProps declarations.
382
- if ( isDefaultProp ) {
383
- markDefaultPropsAsUnresolved ( component ) ;
384
- }
385
-
386
- return ;
387
- }
388
-
389
- if ( isPropType ) {
319
+ if ( expression && expression . type === 'ObjectExpression' ) {
390
320
addPropTypesToComponent ( component , getPropTypesFromObjectExpression ( expression ) ) ;
391
- } else {
392
- addDefaultPropsToComponent ( component , getDefaultPropsFromObjectExpression ( expression ) ) ;
393
321
}
394
322
395
323
return ;
@@ -399,20 +327,11 @@ module.exports = {
399
327
// MyComponent.propTypes.baz = React.PropTypes.string;
400
328
if ( node . parent . type === 'MemberExpression' && node . parent . parent &&
401
329
node . parent . parent . type === 'AssignmentExpression' ) {
402
- if ( isPropType ) {
403
- addPropTypesToComponent ( component , [ {
404
- name : node . parent . property . name ,
405
- isRequired : propsUtil . isRequiredPropType ( node . parent . parent . right ) ,
406
- node : node . parent . parent
407
- } ] ) ;
408
- } else {
409
- addDefaultPropsToComponent ( component , [ {
410
- name : node . parent . property . name ,
411
- node : node . parent . parent
412
- } ] ) ;
413
- }
414
-
415
- return ;
330
+ addPropTypesToComponent ( component , [ {
331
+ name : node . parent . property . name ,
332
+ isRequired : propsUtil . isRequiredPropType ( node . parent . parent . right ) ,
333
+ node : node . parent . parent
334
+ } ] ) ;
416
335
}
417
336
} ,
418
337
@@ -438,9 +357,8 @@ module.exports = {
438
357
}
439
358
440
359
const isPropType = propsUtil . isPropTypesDeclaration ( node ) ;
441
- const isDefaultProp = propsUtil . isDefaultPropsDeclaration ( node ) ;
442
360
443
- if ( ! isPropType && ! isDefaultProp ) {
361
+ if ( ! isPropType ) {
444
362
return ;
445
363
}
446
364
@@ -460,11 +378,7 @@ module.exports = {
460
378
return ;
461
379
}
462
380
463
- if ( isPropType ) {
464
- addPropTypesToComponent ( component , getPropTypesFromObjectExpression ( expression ) ) ;
465
- } else {
466
- addDefaultPropsToComponent ( component , getDefaultPropsFromObjectExpression ( expression ) ) ;
467
- }
381
+ addPropTypesToComponent ( component , getPropTypesFromObjectExpression ( expression ) ) ;
468
382
} ,
469
383
470
384
// e.g.:
@@ -495,9 +409,8 @@ module.exports = {
495
409
496
410
const propName = astUtil . getPropertyName ( node ) ;
497
411
const isPropType = propName === 'propTypes' ;
498
- const isDefaultProp = propName === 'defaultProps' || propName === 'getDefaultProps' ;
499
412
500
- if ( ! isPropType && ! isDefaultProp ) {
413
+ if ( ! isPropType ) {
501
414
return ;
502
415
}
503
416
@@ -512,11 +425,7 @@ module.exports = {
512
425
return ;
513
426
}
514
427
515
- if ( isPropType ) {
516
- addPropTypesToComponent ( component , getPropTypesFromObjectExpression ( expression ) ) ;
517
- } else {
518
- addDefaultPropsToComponent ( component , getDefaultPropsFromObjectExpression ( expression ) ) ;
519
- }
428
+ addPropTypesToComponent ( component , getPropTypesFromObjectExpression ( expression ) ) ;
520
429
} ,
521
430
522
431
// e.g.:
@@ -547,25 +456,11 @@ module.exports = {
547
456
}
548
457
549
458
const isPropType = propsUtil . isPropTypesDeclaration ( property ) ;
550
- const isDefaultProp = propsUtil . isDefaultPropsDeclaration ( property ) ;
551
-
552
- if ( ! isPropType && ! isDefaultProp ) {
553
- return ;
554
- }
555
459
556
460
if ( isPropType && property . value . type === 'ObjectExpression' ) {
557
461
addPropTypesToComponent ( component , getPropTypesFromObjectExpression ( property . value ) ) ;
558
462
return ;
559
463
}
560
-
561
- if ( isDefaultProp && property . value . type === 'FunctionExpression' ) {
562
- const returnStatement = utils . findReturnStatement ( property ) ;
563
- if ( ! returnStatement || returnStatement . argument . type !== 'ObjectExpression' ) {
564
- return ;
565
- }
566
-
567
- addDefaultPropsToComponent ( component , getDefaultPropsFromObjectExpression ( returnStatement . argument ) ) ;
568
- }
569
464
} ) ;
570
465
} ,
571
466
0 commit comments