Skip to content

Commit fe1ef9b

Browse files
committed
Fix wrong prop-types detection (fixes #255)
1 parent 3cc654d commit fe1ef9b

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

lib/rules/prop-types.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ module.exports = function(context) {
3131
* @returns {Boolean} True if we are using a prop, false if not.
3232
*/
3333
function isPropTypesUsage(node) {
34-
var isClassUsage = node.object.type === 'ThisExpression' && node.property.name === 'props';
34+
var isClassUsage = (
35+
componentUtil.getNode(context, node) &&
36+
node.object.type === 'ThisExpression' && node.property.name === 'props'
37+
);
3538
var isStatelessFunctionUsage = node.object.name === 'props';
3639
return isClassUsage || isStatelessFunctionUsage;
3740
}

tests/lib/rules/prop-types.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,16 @@ ruleTester.run('prop-types', rule, {
795795
'}'
796796
].join('\n'),
797797
parser: 'babel-eslint'
798+
}, {
799+
// Should not be detected as a component
800+
code: [
801+
'HelloJohn.prototype.render = function() {',
802+
' return React.createElement(Hello, {',
803+
' name: this.props.firstname',
804+
' });',
805+
'};'
806+
].join('\n'),
807+
parser: 'babel-eslint'
798808
}
799809
],
800810

0 commit comments

Comments
 (0)