Skip to content

Commit 45e3b9f

Browse files
committed
Fix require-default-props quoted defaultProps detection (fix #1201)
1 parent 62daf82 commit 45e3b9f

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

lib/rules/require-default-props.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ var Components = require('../util/Components');
99
var variableUtil = require('../util/variable');
1010
var annotations = require('../util/annotations');
1111

12+
const QUOTES_REGEX = /^["']|["']$/g;
13+
1214
// ------------------------------------------------------------------------------
1315
// Rule Definition
1416
// ------------------------------------------------------------------------------
@@ -25,6 +27,8 @@ module.exports = {
2527

2628
create: Components.detect(function(context, components, utils) {
2729

30+
var sourceCode = context.getSourceCode();
31+
2832
/**
2933
* Get properties name
3034
* @param {Object} node - Property.
@@ -142,7 +146,7 @@ module.exports = {
142146

143147
return props.map(function(property) {
144148
return {
145-
name: property.key.name || property.key.value,
149+
name: sourceCode.getText(property.key).replace(QUOTES_REGEX, ''),
146150
isRequired: isRequiredPropType(property.value),
147151
node: property
148152
};
@@ -222,7 +226,7 @@ module.exports = {
222226
}
223227

224228
return objectExpression.properties.map(function(property) {
225-
return property.key.name;
229+
return sourceCode.getText(property.key).replace(QUOTES_REGEX, '');
226230
});
227231
}
228232

tests/lib/rules/require-default-props.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -720,6 +720,21 @@ ruleTester.run('require-default-props', rule, {
720720
'}'
721721
].join('\n'),
722722
parser: 'babel-eslint'
723+
},
724+
// make sure defaultProps are correctly detected with quoted properties
725+
{
726+
code: [
727+
'function Hello(props) {',
728+
' return <div>Hello {props.bar}</div>;',
729+
'}',
730+
'Hello.propTypes = {',
731+
' bar: PropTypes.string',
732+
'};',
733+
'Hello.defaultProps = {',
734+
' "bar": "bar"',
735+
'};'
736+
].join('\n'),
737+
parser: 'babel-eslint'
723738
}
724739
],
725740

0 commit comments

Comments
 (0)