Skip to content

Commit 4e21d41

Browse files
committed
Remove babel-eslint workarounds for ClassProperty
Since the oldest supported version of `babel-eslint` (6.x) has the key property on ClassProperty nodes, the workarounds aren't needed.
1 parent f36b0fa commit 4e21d41

11 files changed

+6
-79
lines changed

lib/rules/boolean-prop-naming.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,18 +55,12 @@ module.exports = {
5555
* @returns {Boolean} True if node is `propTypes` declaration, false if not.
5656
*/
5757
function isPropTypesDeclaration(node) {
58-
// Special case for class properties
59-
// (babel-eslint does not expose property name so we have to rely on tokens)
6058
if (node && node.type === 'ClassProperty') {
61-
const tokens = context.getFirstTokens(node, 2);
62-
if (tokens[0].value === 'propTypes' || (tokens[1] && tokens[1].value === 'propTypes')) {
63-
return true;
64-
}
6559
// Flow support
6660
if (node.typeAnnotation && node.key.name === 'props') {
6761
return true;
6862
}
69-
return false;
63+
node = node.key;
7064
}
7165

7266
return Boolean(

lib/rules/default-props-match-prop-types.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,6 @@ module.exports = {
4848
return node.key.name;
4949
} else if (node.type === 'MemberExpression') {
5050
return node.property.name;
51-
// Special case for class properties
52-
// (babel-eslint@5 does not expose property name so we have to rely on tokens)
53-
} else if (node.type === 'ClassProperty') {
54-
const tokens = context.getFirstTokens(node, 2);
55-
return tokens[1] && tokens[1].type === 'Identifier' ? tokens[1].value : tokens[0].value;
5651
}
5752
return '';
5853
}

lib/rules/display-name.js

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ module.exports = {
3131
},
3232

3333
create: Components.detect((context, components, utils) => {
34-
const sourceCode = context.getSourceCode();
3534
const config = context.options[0] || {};
3635
const ignoreTranspilerName = config.ignoreTranspilerName || false;
3736

@@ -44,17 +43,8 @@ module.exports = {
4443
*/
4544
function isDisplayNameDeclaration(node) {
4645
switch (node.type) {
47-
// Special case for class properties
48-
// (babel-eslint does not expose property name so we have to rely on tokens)
4946
case 'ClassProperty':
50-
const tokens = sourceCode.getFirstTokens(node, 2);
51-
if (
52-
tokens[0].value === 'displayName' ||
53-
(tokens[1] && tokens[1].value === 'displayName')
54-
) {
55-
return true;
56-
}
57-
return false;
47+
return node.key && node.key.name === 'displayName';
5848
case 'Identifier':
5949
return node.name === 'displayName';
6050
case 'Literal':

lib/rules/forbid-prop-types.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,8 @@ module.exports = {
5353
* @returns {Boolean} True if node is `propTypes` declaration, false if not.
5454
*/
5555
function isPropTypesDeclaration(node) {
56-
// Special case for class properties
57-
// (babel-eslint does not expose property name so we have to rely on tokens)
5856
if (node.type === 'ClassProperty') {
59-
const tokens = context.getFirstTokens(node, 2);
60-
if (tokens[0].value === 'propTypes' || (tokens[1] && tokens[1].value === 'propTypes')) {
61-
return true;
62-
}
63-
return false;
57+
node = node.key;
6458
}
6559

6660
return Boolean(

lib/rules/no-redundant-should-component-update.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,6 @@ module.exports = {
3232
function getPropertyName(node) {
3333
if (node.key) {
3434
return node.key.name;
35-
} else if (node.type === 'ClassProperty') {
36-
// Special case for class properties
37-
// (babel-eslint does not expose property name so we have to rely on tokens)
38-
const tokens = context.getFirstTokens(node, 2);
39-
return tokens[1] && tokens[1].type === 'Identifier' ? tokens[1].value : tokens[0].value;
4035
}
4136
return '';
4237
}

lib/rules/no-unused-prop-types.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -182,17 +182,8 @@ module.exports = {
182182
* @returns {Boolean} True if we are declaring a prop, false if not.
183183
*/
184184
function isPropTypesDeclaration(node) {
185-
// Special case for class properties
186-
// (babel-eslint does not expose property name so we have to rely on tokens)
187185
if (node && node.type === 'ClassProperty') {
188-
const tokens = context.getFirstTokens(node, 2);
189-
if (
190-
tokens[0].value === 'propTypes' ||
191-
(tokens[1] && tokens[1].value === 'propTypes')
192-
) {
193-
return true;
194-
}
195-
return false;
186+
node = node.key;
196187
}
197188

198189
return Boolean(

lib/rules/prefer-stateless-function.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,6 @@ module.exports = {
4949
* @returns {String} Property name.
5050
*/
5151
function getPropertyName(node) {
52-
// Special case for class properties
53-
// (babel-eslint does not expose property name so we have to rely on tokens)
54-
if (node.type === 'ClassProperty') {
55-
const tokens = context.getFirstTokens(node, 2);
56-
return tokens[1] && tokens[1].type === 'Identifier' ? tokens[1].value : tokens[0].value;
57-
}
58-
5952
return node.key.name;
6053
}
6154

lib/rules/prop-types.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -188,17 +188,8 @@ module.exports = {
188188
* @returns {Boolean} True if we are declaring a prop, false if not.
189189
*/
190190
function isPropTypesDeclaration(node) {
191-
// Special case for class properties
192-
// (babel-eslint does not expose property name so we have to rely on tokens)
193191
if (node && node.type === 'ClassProperty') {
194-
const tokens = context.getFirstTokens(node, 2);
195-
if (
196-
tokens[0].value === 'propTypes' ||
197-
(tokens[1] && tokens[1].value === 'propTypes')
198-
) {
199-
return true;
200-
}
201-
return false;
192+
node = node.key;
202193
}
203194

204195
return Boolean(

lib/rules/require-default-props.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,6 @@ module.exports = {
3939
return node.key.name;
4040
} else if (node.type === 'MemberExpression') {
4141
return node.property.name;
42-
// Special case for class properties
43-
// (babel-eslint@5 does not expose property name so we have to rely on tokens)
44-
} else if (node.type === 'ClassProperty') {
45-
const tokens = context.getFirstTokens(node, 2);
46-
return tokens[1] && tokens[1].type === 'Identifier' ? tokens[1].value : tokens[0].value;
4742
}
4843
return '';
4944
}

lib/rules/sort-comp.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -195,13 +195,6 @@ module.exports = {
195195
* @returns {String} Property name.
196196
*/
197197
function getPropertyName(node) {
198-
// Special case for class properties
199-
// (babel-eslint does not expose property name so we have to rely on tokens)
200-
if (node.type === 'ClassProperty') {
201-
const tokens = context.getFirstTokens(node, 2);
202-
return tokens[1] && tokens[1].type === 'Identifier' ? tokens[1].value : tokens[0].value;
203-
}
204-
205198
if (node.kind === 'get') {
206199
return 'getter functions';
207200
}

0 commit comments

Comments
 (0)