Skip to content

Commit 1b5d007

Browse files
committed
Merge pull request #324 from lukekarrys/master
Fix crash with ESLint 1.10.0 (fixes #323)
2 parents 25e05b8 + 886a09a commit 1b5d007

File tree

6 files changed

+29
-29
lines changed

6 files changed

+29
-29
lines changed

lib/rules/display-name.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ var Components = require('../util/Components');
1010
// Rule Definition
1111
// ------------------------------------------------------------------------------
1212

13-
module.exports = Components.detect(function(context, components) {
13+
module.exports = Components.detect(function(context, components, utils) {
1414

1515
var config = context.options[0] || {};
1616
var acceptTranspilerName = config.acceptTranspilerName || false;
@@ -131,7 +131,7 @@ module.exports = Components.detect(function(context, components) {
131131
if (!isDisplayNameDeclaration(node.property)) {
132132
return;
133133
}
134-
var component = context.react.getRelatedComponent(node);
134+
var component = utils.getRelatedComponent(node);
135135
if (!component) {
136136
return;
137137
}

lib/rules/no-direct-mutation-state.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ var Components = require('../util/Components');
1010
// Rule Definition
1111
// ------------------------------------------------------------------------------
1212

13-
module.exports = Components.detect(function(context, components) {
13+
module.exports = Components.detect(function(context, components, utils) {
1414

1515
/**
1616
* Checks if the component is valid
@@ -51,7 +51,7 @@ module.exports = Components.detect(function(context, components) {
5151
item.object.type === 'ThisExpression' &&
5252
item.property.name === 'state'
5353
) {
54-
var component = components.get(context.react.getParentComponent());
54+
var component = components.get(utils.getParentComponent());
5555
var mutations = component && component.mutations || [];
5656
mutations.push(node.left.object);
5757
components.set(node, {

lib/rules/prefer-es6-class.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ var Components = require('../util/Components');
1010
// Rule Definition
1111
// ------------------------------------------------------------------------------
1212

13-
module.exports = Components.detect(function(context) {
13+
module.exports = Components.detect(function(context, components, utils) {
1414

1515
return {
1616
ObjectExpression: function(node) {
17-
if (context.react.isES5Component(node)) {
17+
if (utils.isES5Component(node)) {
1818
context.report(node, 'Component should use es6 class instead of createClass');
1919
}
2020
}

lib/rules/prop-types.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var Components = require('../util/Components');
1313
// Rule Definition
1414
// ------------------------------------------------------------------------------
1515

16-
module.exports = Components.detect(function(context, components) {
16+
module.exports = Components.detect(function(context, components, utils) {
1717

1818
var configuration = context.options[0] || {};
1919
var ignored = configuration.ignore || [];
@@ -28,7 +28,7 @@ module.exports = Components.detect(function(context, components) {
2828
*/
2929
function isPropTypesUsage(node) {
3030
var isClassUsage = (
31-
(context.react.getParentES6Component() || context.react.getParentES5Component()) &&
31+
(utils.getParentES6Component() || utils.getParentES5Component()) &&
3232
node.object.type === 'ThisExpression' && node.property.name === 'props'
3333
);
3434
var isStatelessFunctionUsage = node.object.name === 'props';
@@ -328,7 +328,7 @@ module.exports = Components.detect(function(context, components) {
328328
*/
329329
function getPropertyName(node) {
330330
var isDirectProp = /^props(\.|\[)/.test(context.getSource(node));
331-
var isInClassComponent = context.react.getParentES6Component() || context.react.getParentES5Component();
331+
var isInClassComponent = utils.getParentES6Component() || utils.getParentES5Component();
332332
var isNotInConstructor = !inConstructor(node);
333333
if (isDirectProp && isInClassComponent && isNotInConstructor) {
334334
return void 0;
@@ -408,7 +408,7 @@ module.exports = Components.detect(function(context, components) {
408408
throw new Error(node.type + ' ASTNodes are not handled by markPropTypesAsUsed');
409409
}
410410

411-
var component = components.get(context.react.getParentComponent());
411+
var component = components.get(utils.getParentComponent());
412412
var usedPropTypes = component && component.usedPropTypes || [];
413413

414414
switch (type) {
@@ -569,7 +569,7 @@ module.exports = Components.detect(function(context, components) {
569569
markPropTypesAsUsed(node);
570570
break;
571571
case 'declaration':
572-
var component = context.react.getRelatedComponent(node);
572+
var component = utils.getRelatedComponent(node);
573573
if (!component) {
574574
return;
575575
}

lib/util/Components.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ function componentRule(rule, context) {
108108
var components = new Components();
109109

110110
// Utilities for component detection
111-
context.react = {
111+
var utils = {
112112

113113
/**
114114
* Check if the node is a React ES5 component
@@ -176,9 +176,9 @@ function componentRule(rule, context) {
176176
*/
177177
getParentComponent: function() {
178178
return (
179-
context.react.getParentES6Component() ||
180-
context.react.getParentES5Component() ||
181-
context.react.getParentStatelessComponent()
179+
utils.getParentES6Component() ||
180+
utils.getParentES5Component() ||
181+
utils.getParentStatelessComponent()
182182
);
183183
},
184184

@@ -191,7 +191,7 @@ function componentRule(rule, context) {
191191
var scope = context.getScope();
192192
while (scope) {
193193
var node = scope.block && scope.block.parent && scope.block.parent.parent;
194-
if (node && context.react.isES5Component(node)) {
194+
if (node && utils.isES5Component(node)) {
195195
return node;
196196
}
197197
scope = scope.upper;
@@ -210,7 +210,7 @@ function componentRule(rule, context) {
210210
scope = scope.upper;
211211
}
212212
var node = scope && scope.block;
213-
if (!node || !context.react.isES6Component(node)) {
213+
if (!node || !utils.isES6Component(node)) {
214214
return null;
215215
}
216216
return node;
@@ -316,57 +316,57 @@ function componentRule(rule, context) {
316316
// Component detection instructions
317317
var detectionInstructions = {
318318
ClassDeclaration: function(node) {
319-
if (!context.react.isES6Component(node)) {
319+
if (!utils.isES6Component(node)) {
320320
return;
321321
}
322322
components.add(node, 2);
323323
},
324324

325325
ClassProperty: function(node) {
326-
node = context.react.getParentComponent();
326+
node = utils.getParentComponent();
327327
if (!node) {
328328
return;
329329
}
330330
components.add(node, 2);
331331
},
332332

333333
ObjectExpression: function(node) {
334-
if (!context.react.isES5Component(node)) {
334+
if (!utils.isES5Component(node)) {
335335
return;
336336
}
337337
components.add(node, 2);
338338
},
339339

340340
FunctionExpression: function(node) {
341-
node = context.react.getParentComponent();
341+
node = utils.getParentComponent();
342342
if (!node) {
343343
return;
344344
}
345345
components.add(node, 1);
346346
},
347347

348348
FunctionDeclaration: function(node) {
349-
node = context.react.getParentComponent();
349+
node = utils.getParentComponent();
350350
if (!node) {
351351
return;
352352
}
353353
components.add(node, 1);
354354
},
355355

356356
ArrowFunctionExpression: function(node) {
357-
node = context.react.getParentComponent();
357+
node = utils.getParentComponent();
358358
if (!node) {
359359
return;
360360
}
361-
if (node.expression && context.react.isReturningJSX(node)) {
361+
if (node.expression && utils.isReturningJSX(node)) {
362362
components.add(node, 2);
363363
} else {
364364
components.add(node, 1);
365365
}
366366
},
367367

368368
ThisExpression: function(node) {
369-
node = context.react.getParentComponent();
369+
node = utils.getParentComponent();
370370
if (!node || !/Function/.test(node.type)) {
371371
return;
372372
}
@@ -375,10 +375,10 @@ function componentRule(rule, context) {
375375
},
376376

377377
ReturnStatement: function(node) {
378-
if (!context.react.isReturningJSX(node)) {
378+
if (!utils.isReturningJSX(node)) {
379379
return;
380380
}
381-
node = context.react.getParentComponent();
381+
node = utils.getParentComponent();
382382
if (!node) {
383383
return;
384384
}
@@ -387,7 +387,7 @@ function componentRule(rule, context) {
387387
};
388388

389389
// Update the provided rule instructions to add the component detection
390-
var ruleInstructions = rule(context, components);
390+
var ruleInstructions = rule(context, components, utils);
391391
var updatedRuleInstructions = util._extend({}, ruleInstructions);
392392
Object.keys(detectionInstructions).forEach(function(instruction) {
393393
updatedRuleInstructions[instruction] = function(node) {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"devDependencies": {
2626
"babel-eslint": "4.1.5",
2727
"coveralls": "2.11.4",
28-
"eslint": "1.9.0",
28+
"eslint": "1.10.0",
2929
"istanbul": "0.4.0",
3030
"mocha": "2.3.4"
3131
},

0 commit comments

Comments
 (0)