Skip to content
This repository was archived by the owner on Mar 23, 2024. It is now read-only.

Commit 2cec97b

Browse files
committed
Prepare for version 1.5.2
1 parent 4a6491c commit 2cec97b

File tree

2 files changed

+103
-90
lines changed

2 files changed

+103
-90
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
Version 1.5.2
2+
* Improve binary rule (Oleg Gaidarenko)
3+
* Fix recursive descend, #445 (Oleg Gaidarenko)
4+
15
Version 1.5.1
26
* Version bump to address incorrectly published docs (Mike Sherov)
37

jscs-browser.js

Lines changed: 99 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,42 +1028,6 @@ module.exports.prototype = {
10281028
check: function(file, errors) {
10291029
var operators = this._operatorIndex;
10301030

1031-
// 2 + 2, 2 == 2
1032-
file.iterateNodesByType(
1033-
['BinaryExpression', 'AssignmentExpression', 'LogicalExpression'],
1034-
function(node) {
1035-
if (operators[node.operator]) {
1036-
var indent;
1037-
var range = node.right.range[0];
1038-
1039-
if (tokenHelper.isTokenParenthesis(file, range - 1, true)) {
1040-
indent = node.operator.length + 1;
1041-
} else {
1042-
indent = node.operator.length;
1043-
}
1044-
1045-
var part = tokenHelper.getTokenByRangeStartIfPunctuator(
1046-
file,
1047-
range - indent,
1048-
node.operator,
1049-
true
1050-
);
1051-
1052-
if (!part) {
1053-
var loc = tokenHelper.findOperatorByRangeStart(
1054-
file, node.right.range[0], node.operator, true
1055-
).loc.start;
1056-
1057-
errors.add(
1058-
'Operator ' + node.operator + ' should stick to following expression',
1059-
loc.line,
1060-
tokenHelper.getPointerEntities(loc.column, node.operator.length)
1061-
);
1062-
}
1063-
}
1064-
}
1065-
);
1066-
10671031
function errorIfApplicable(token, i, tokens, operator) {
10681032
var nextToken = tokens[i + 1];
10691033

@@ -1078,7 +1042,7 @@ module.exports.prototype = {
10781042
}
10791043
}
10801044

1081-
// ":" for object property only but not for ternar
1045+
// ":" for object property only but not for ternar
10821046
if (operators[':']) {
10831047
file.iterateNodesByType(['ObjectExpression'], function(node) {
10841048
node.properties.forEach(function(prop) {
@@ -1101,6 +1065,44 @@ module.exports.prototype = {
11011065
errorIfApplicable(token, i, tokens, operator);
11021066
});
11031067
}
1068+
1069+
// For everything else
1070+
file.iterateNodesByType(
1071+
['BinaryExpression', 'AssignmentExpression', 'VariableDeclarator', 'LogicalExpression'],
1072+
function(node) {
1073+
var isDec = node.type === 'VariableDeclarator';
1074+
var operator = isDec ? '=' : node.operator;
1075+
1076+
if (!operators[operator] || node.init === null) {
1077+
return;
1078+
}
1079+
1080+
var range = (isDec ? node.init : node.right).range[0];
1081+
1082+
var indent = tokenHelper.isTokenParenthesis(file, range - 1, true) ?
1083+
operator.length + 1 :
1084+
operator.length;
1085+
1086+
var part = tokenHelper.getTokenByRangeStartIfPunctuator(
1087+
file,
1088+
range - indent,
1089+
operator,
1090+
true
1091+
);
1092+
1093+
if (!part) {
1094+
var loc = tokenHelper.findOperatorByRangeStart(
1095+
file, range, operator, true
1096+
).loc.start;
1097+
1098+
errors.add(
1099+
'Operator ' + operator + ' should stick to following expression',
1100+
loc.line,
1101+
tokenHelper.getPointerEntities(loc.column, operator.length)
1102+
);
1103+
}
1104+
}
1105+
);
11041106
}
11051107

11061108
};
@@ -1335,23 +1337,26 @@ module.exports.prototype = {
13351337

13361338
// For everything else
13371339
file.iterateNodesByType(
1338-
['BinaryExpression', 'AssignmentExpression', 'LogicalExpression'],
1340+
['BinaryExpression', 'AssignmentExpression', 'VariableDeclarator', 'LogicalExpression'],
13391341
function(node) {
1340-
if (operators[node.operator]) {
1341-
var part = tokenHelper.getTokenByRangeStartIfPunctuator(
1342-
file,
1343-
node.left.range[1],
1344-
node.operator
1345-
);
1342+
var isDec = node.type === 'VariableDeclarator';
1343+
var operator = isDec ? '=' : node.operator;
13461344

1347-
if (!part) {
1348-
errors.add(
1349-
'Operator ' + node.operator + ' should stick to preceding expression',
1350-
tokenHelper.findOperatorByRangeStart(
1351-
file, node.right.range[0], node.operator, true
1352-
).loc.start
1353-
);
1354-
}
1345+
// !node.init is it's an empty assignment
1346+
if (!operators[operator] || node.init === null) {
1347+
return;
1348+
}
1349+
1350+
var range = (isDec ? node.id : node.left).range;
1351+
var part = tokenHelper.getTokenByRangeStartIfPunctuator(file, range[1], operator);
1352+
1353+
if (!part) {
1354+
errors.add(
1355+
'Operator ' + node.operator + ' should stick to preceding expression',
1356+
tokenHelper.findOperatorByRangeStart(
1357+
file, range[0], operator
1358+
).loc.start
1359+
);
13551360
}
13561361
}
13571362
);
@@ -3152,34 +3157,36 @@ module.exports.prototype = {
31523157

31533158
// For everything else
31543159
file.iterateNodesByType(
3155-
['BinaryExpression', 'AssignmentExpression', 'LogicalExpression'],
3160+
['BinaryExpression', 'AssignmentExpression', 'VariableDeclarator', 'LogicalExpression'],
31563161
function(node) {
3157-
if (operators[node.operator]) {
3158-
var indent;
3159-
var range = node.right.range[0];
3162+
var isDec = node.type === 'VariableDeclarator';
3163+
var operator = isDec ? '=' : node.operator;
31603164

3161-
if (tokenHelper.isTokenParenthesis(file, range - 1, true)) {
3162-
indent = node.operator.length + 1;
3163-
} else {
3164-
indent = node.operator.length;
3165-
}
3165+
if (!operators[operator] || node.init === null) {
3166+
return;
3167+
}
31663168

3167-
var part = tokenHelper.getTokenByRangeStartIfPunctuator(
3168-
file,
3169-
range - indent,
3170-
node.operator,
3171-
true
3172-
);
3169+
var range = (isDec ? node.init : node.right).range[0];
31733170

3174-
if (part) {
3175-
var loc = part.loc.start;
3171+
var indent = tokenHelper.isTokenParenthesis(file, range - 1, true) ?
3172+
operator.length + 1 :
3173+
operator.length;
31763174

3177-
errors.add(
3178-
'Operator ' + node.operator + ' should not stick to following expression',
3179-
loc.line,
3180-
tokenHelper.getPointerEntities(loc.column, node.operator.length)
3181-
);
3182-
}
3175+
var part = tokenHelper.getTokenByRangeStartIfPunctuator(
3176+
file,
3177+
range - indent,
3178+
operator,
3179+
true
3180+
);
3181+
3182+
if (part) {
3183+
var loc = part.loc.start;
3184+
3185+
errors.add(
3186+
'Operator ' + operator + ' should not stick to following expression',
3187+
loc.line,
3188+
tokenHelper.getPointerEntities(loc.column, operator.length)
3189+
);
31833190
}
31843191
}
31853192
);
@@ -3452,23 +3459,25 @@ module.exports.prototype = {
34523459

34533460
// For everything else
34543461
file.iterateNodesByType(
3455-
['BinaryExpression', 'AssignmentExpression', 'LogicalExpression'],
3462+
['BinaryExpression', 'AssignmentExpression', 'VariableDeclarator', 'LogicalExpression'],
34563463
function(node) {
3457-
if (operators[node.operator]) {
3458-
var part = tokenHelper.getTokenByRangeStartIfPunctuator(
3459-
file,
3460-
node.left.range[1],
3461-
node.operator
3462-
);
3464+
var isDec = node.type === 'VariableDeclarator';
3465+
var operator = isDec ? '=' : node.operator;
34633466

3464-
if (part) {
3465-
var loc = part.loc.start;
3466-
errors.add(
3467-
'Operator ' + node.operator + ' should not stick to following expression',
3468-
loc.line,
3469-
tokenHelper.getPointerEntities(loc.column, node.operator.length)
3470-
);
3471-
}
3467+
if (!operators[operator]) {
3468+
return;
3469+
}
3470+
3471+
var range = (isDec ? node.id : node.left).range[1];
3472+
var part = tokenHelper.getTokenByRangeStartIfPunctuator(file, range, operator);
3473+
3474+
if (part) {
3475+
var loc = part.loc.start;
3476+
errors.add(
3477+
'Operator ' + operator + ' should not stick to following expression',
3478+
loc.line,
3479+
tokenHelper.getPointerEntities(loc.column, operator.length)
3480+
);
34723481
}
34733482
}
34743483
);

0 commit comments

Comments
 (0)