diff --git a/lib/rules/prop-types.js b/lib/rules/prop-types.js index b04d5539ed..421ff96cd9 100644 --- a/lib/rules/prop-types.js +++ b/lib/rules/prop-types.js @@ -126,6 +126,10 @@ module.exports = function(context) { switch (type) { case 'direct': + // Ignore Object methods + if (Object.prototype[node.parent.property.name]) { + break; + } usedPropTypes.push({ name: node.parent.property.name, node: node.parent.property diff --git a/tests/lib/rules/prop-types.js b/tests/lib/rules/prop-types.js index 3d63a42677..f51fdaf311 100644 --- a/tests/lib/rules/prop-types.js +++ b/tests/lib/rules/prop-types.js @@ -235,6 +235,24 @@ eslintTester.addRuleTest('lib/rules/prop-types', { classes: true, jsx: true } + }, { + code: [ + 'class Hello extends React.Component {', + ' render() {', + ' if (this.props.hasOwnProperty(\'firstname\')) {', + ' return
Hello {this.props.firstname}
;', + ' }', + ' return
Hello
;', + ' }', + '}', + 'Hello.propTypes = {', + ' \'firstname\': React.PropTypes.string', + '};' + ].join('\n'), + ecmaFeatures: { + classes: true, + jsx: true + } } ],