Skip to content

Commit 159d0e5

Browse files
committed
Update rules to match changes in comments attachement in ESLint 4.0.0
1 parent 1b5743f commit 159d0e5

File tree

6 files changed

+30
-38
lines changed

6 files changed

+30
-38
lines changed

lib/rules/jsx-curly-spacing.js

+18-11
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,9 @@ module.exports = {
127127
message: `There should be no space after '${token.value}'`,
128128
fix: function(fixer) {
129129
var nextToken = sourceCode.getTokenAfter(token);
130-
var leadingComments = sourceCode.getNodeByRangeIndex(nextToken.range[0]).leadingComments;
131-
var rangeEndRef = leadingComments ? leadingComments[0] : nextToken;
130+
var nextNode = sourceCode.getNodeByRangeIndex(nextToken.range[0]);
131+
var leadingComments = sourceCode.getComments(nextNode).leading;
132+
var rangeEndRef = leadingComments.length ? leadingComments[0] : nextToken;
132133
return fixer.removeRange([token.range[1], rangeEndRef.range[0]]);
133134
}
134135
});
@@ -147,8 +148,9 @@ module.exports = {
147148
message: `There should be no space before '${token.value}'`,
148149
fix: function(fixer) {
149150
var previousToken = sourceCode.getTokenBefore(token);
150-
var trailingComments = sourceCode.getNodeByRangeIndex(previousToken.range[0]).trailingComments;
151-
var rangeStartRef = trailingComments ? trailingComments[trailingComments.length - 1] : previousToken;
151+
var previousNode = sourceCode.getNodeByRangeIndex(previousToken.range[0]);
152+
var trailingComments = sourceCode.getComments(previousNode).trailing;
153+
var rangeStartRef = trailingComments.length ? trailingComments[trailingComments.length - 1] : previousToken;
152154
return fixer.removeRange([rangeStartRef.range[1], token.range[0]]);
153155
}
154156
});
@@ -200,14 +202,19 @@ module.exports = {
200202
}
201203
var first = context.getFirstToken(node);
202204
var last = sourceCode.getLastToken(node);
203-
var second = context.getTokenAfter(first);
204-
var penultimate = sourceCode.getTokenBefore(last);
205+
var second = context.getTokenAfter(first, {includeComments: true});
206+
var penultimate = sourceCode.getTokenBefore(last, {includeComments: true});
205207

206-
var leadingComments = sourceCode.getNodeByRangeIndex(second.range[0]).leadingComments;
207-
second = leadingComments ? leadingComments[0] : second;
208-
209-
var trailingComments = sourceCode.getNodeByRangeIndex(penultimate.range[0]).trailingComments;
210-
penultimate = trailingComments ? trailingComments[trailingComments.length - 1] : penultimate;
208+
if (!second) {
209+
second = context.getTokenAfter(first);
210+
var leadingComments = sourceCode.getNodeByRangeIndex(second.range[0]).leadingComments;
211+
second = leadingComments ? leadingComments[0] : second;
212+
}
213+
if (!penultimate) {
214+
penultimate = sourceCode.getTokenBefore(last);
215+
var trailingComments = sourceCode.getNodeByRangeIndex(penultimate.range[0]).trailingComments;
216+
penultimate = trailingComments ? trailingComments[trailingComments.length - 1] : penultimate;
217+
}
211218

212219
var isObjectLiteral = first.value === second.value;
213220
if (isObjectLiteral) {

lib/rules/jsx-uses-react.js

-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,6 @@ module.exports = {
3232

3333
JSXOpeningElement: function() {
3434
context.markVariableAsUsed(pragma);
35-
},
36-
37-
BlockComment: function(node) {
38-
pragma = pragmaUtil.getFromNode(node) || pragma;
3935
}
4036

4137
};

lib/rules/no-deprecated.js

-4
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,6 @@ module.exports = {
159159
node.id.properties.forEach(function(property) {
160160
checkDeprecation(node, `${reactModuleName || pragma}.${property.key.name}`);
161161
});
162-
},
163-
164-
BlockComment: function(node) {
165-
pragma = pragmaUtil.getFromNode(node) || pragma;
166162
}
167163

168164
};

lib/rules/react-in-jsx-scope.js

-4
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@ module.exports = {
4040
name: pragma
4141
}
4242
});
43-
},
44-
45-
BlockComment: function(node) {
46-
pragma = pragmaUtil.getFromNode(node) || pragma;
4743
}
4844

4945
};

lib/util/Components.js

-4
Original file line numberDiff line numberDiff line change
@@ -598,10 +598,6 @@ function componentRule(rule, context) {
598598
components.add(node, 0);
599599
},
600600

601-
BlockComment: function(node) {
602-
pragma = pragmaUtil.getFromNode(node) || pragma;
603-
},
604-
605601
ReturnStatement: function(node) {
606602
if (!utils.isReturningJSX(node)) {
607603
return;

lib/util/pragma.js

+12-11
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,27 @@ function getCreateClassFromContext(context) {
2323

2424
function getFromContext(context) {
2525
var pragma = 'React';
26+
27+
var sourceCode = context.getSourceCode();
28+
var pragmaNode = sourceCode.getAllComments().find(function(node) {
29+
return JSX_ANNOTATION_REGEX.test(node.value);
30+
});
31+
32+
if (pragmaNode) {
33+
var matches = JSX_ANNOTATION_REGEX.exec(pragmaNode.value);
34+
pragma = matches[1].split('.')[0];
2635
// .eslintrc shared settings (http://eslint.org/docs/user-guide/configuring#adding-shared-settings)
27-
if (context.settings.react && context.settings.react.pragma) {
36+
} else if (context.settings.react && context.settings.react.pragma) {
2837
pragma = context.settings.react.pragma;
2938
}
39+
3040
if (!JS_IDENTIFIER_REGEX.test(pragma)) {
3141
throw new Error(`React pragma ${pragma} is not a valid identifier`);
3242
}
3343
return pragma;
3444
}
3545

36-
function getFromNode(node) {
37-
var matches = JSX_ANNOTATION_REGEX.exec(node.value);
38-
if (!matches) {
39-
return false;
40-
}
41-
return matches[1].split('.')[0];
42-
}
43-
4446
module.exports = {
4547
getCreateClassFromContext: getCreateClassFromContext,
46-
getFromContext: getFromContext,
47-
getFromNode: getFromNode
48+
getFromContext: getFromContext
4849
};

0 commit comments

Comments
 (0)