Skip to content

Commit

Permalink
Merge pull request #1112 from ethanjgoldberg/method-annotations-are-n…
Browse files Browse the repository at this point in the history
…ot-prop-types

Fix required prop types for classes with annotated methods.
  • Loading branch information
ljharb committed May 27, 2017
2 parents ccb213d + 6e8f543 commit dc03975
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
7 changes: 6 additions & 1 deletion lib/rules/prop-types.js
Expand Up @@ -868,7 +868,12 @@ module.exports = {

ArrowFunctionExpression: handleStatelessComponent,

FunctionExpression: handleStatelessComponent,
FunctionExpression: function(node) {
if (node.parent.type === 'MethodDefinition') {
return;
}
handleStatelessComponent(node);
},

MemberExpression: function(node) {
var type;
Expand Down
33 changes: 33 additions & 0 deletions tests/lib/rules/prop-types.js
Expand Up @@ -1115,6 +1115,20 @@ ruleTester.run('prop-types', rule, {
'}'
].join('\n'),
parser: 'babel-eslint'
}, {
code: [
'type Props = {',
' name: string,',
'};',
'class Hello extends React.Component {',
' props: Props;',
' render() {',
' const {name} = this.props;',
' return name;',
' }',
'}'
].join('\n'),
parser: 'babel-eslint'
}, {
code: [
'Card.propTypes = {',
Expand Down Expand Up @@ -1405,6 +1419,25 @@ ruleTester.run('prop-types', rule, {

invalid: [
{
code: [
'type Props = {',
' name: string,',
'};',
'class Hello extends React.Component {',
' foo(props: Props) {}',
' render() {',
' return this.props.name;',
' }',
'}'
].join('\n'),
errors: [{
message: '\'name\' is missing in props validation',
line: 7,
column: 23,
type: 'Identifier'
}],
parser: 'babel-eslint'
}, {
code: [
'var Hello = createReactClass({',
' render: function() {',
Expand Down

0 comments on commit dc03975

Please sign in to comment.