Skip to content

Commit 228548f

Browse files
committed
Fix crash if a ClassProperty has only one token (fixes #125)
1 parent deb0447 commit 228548f

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

lib/rules/display-name.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ module.exports = function(context) {
4242
// (babel-eslint does not expose property name so we have to rely on tokens)
4343
if (node.type === 'ClassProperty') {
4444
var tokens = context.getFirstTokens(node, 2);
45-
if (tokens[0].value === 'displayName' || tokens[1].value === 'displayName') {
45+
if (
46+
tokens[0].value === 'displayName' ||
47+
(tokens[1] && tokens[1].value === 'displayName')
48+
) {
4649
return true;
4750
}
4851
return false;

lib/rules/prop-types.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@ module.exports = function(context) {
4747
// (babel-eslint does not expose property name so we have to rely on tokens)
4848
if (node.type === 'ClassProperty') {
4949
var tokens = context.getFirstTokens(node, 2);
50-
if (tokens[0].value === 'propTypes' || tokens[1].value === 'propTypes') {
50+
if (
51+
tokens[0].value === 'propTypes' ||
52+
(tokens[1] && tokens[1].value === 'propTypes')
53+
) {
5154
return true;
5255
}
5356
return false;

tests/lib/rules/display-name.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,17 @@ eslintTester.addRuleTest('lib/rules/display-name', {
5757
classes: true,
5858
jsx: true
5959
}
60+
}, {
61+
code: [
62+
'class Hello {',
63+
' method',
64+
'}'
65+
].join('\n'),
66+
parser: 'babel-eslint',
67+
ecmaFeatures: {
68+
classes: true,
69+
jsx: true
70+
}
6071
}, {
6172
code: [
6273
'class Hello extends React.Component {',

tests/lib/rules/prop-types.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,17 @@ eslintTester.addRuleTest('lib/rules/prop-types', {
167167
classes: true,
168168
jsx: true
169169
}
170+
}, {
171+
code: [
172+
'class Hello {',
173+
' method',
174+
'}'
175+
].join('\n'),
176+
parser: 'babel-eslint',
177+
ecmaFeatures: {
178+
classes: true,
179+
jsx: true
180+
}
170181
}, {
171182
code: [
172183
'class Hello extends React.Component {',

0 commit comments

Comments
 (0)