-  
-   Notifications  You must be signed in to change notification settings 
- Fork 2.7k
Closed
Labels
Description
I'm running into some unexpected behavior with the forbid-prop-types rule and nested prop types (e.g. arrayOf(object)). It looks like there's either a bug that manifests differently depending on how prop types are imported or there are two different bugs. Similar issues have been reported (#2657, #2662), but I'm re-reporting this because they're marked as fixed by 997a99f and this is still happening.
I'm including two examples along with my configuration below. The version of eslint is 7.20.0 and the version of eslint-plugin-react is 7.22.0.
Example 1
import React from './React'; import { arrayOf, object } from 'prop-types'; const App = ({ foo }) => ( <div> Hello world {foo} </div> ); App.propTypes = { foo: arrayOf(object) } export default App;/tmp/test/src/App.js 13:3 error Prop type `undefined` is forbidden react/forbid-prop-types ✖ 1 problem (1 error, 0 warnings) Here, eslint is correctly returning an error, but the description should say "Prop type `object`", not "Prop type `undefined`".
Example 2
import React from './React'; import PropTypes, { arrayOf } from 'prop-types'; const App = ({ foo }) => ( <div> Hello world {foo} </div> ); App.propTypes = { foo: arrayOf(PropTypes.object) } export default App;✨ Done in 0.77s. In this case, eslint is incorrectly returning no errors.
Configuration
 "rules": { "react/forbid-prop-types": ["error", { "forbid": ["object"] }] }, chiawendt