Skip to content

Commit 593053c

Browse files
author
Alexej Yaroshevich
committed
split returns to separated rules
1 parent a3ecd83 commit 593053c

File tree

5 files changed

+57
-67
lines changed

5 files changed

+57
-67
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
module.exports = checkReturnTypes;
2+
module.exports.tags = ['return', 'returns'];
3+
module.exports.scopes = ['function'];
4+
module.exports.options = {
5+
checkRedundantReturns: {allowedValues: [true]}
6+
};
7+
8+
/**
9+
* checking returns types
10+
* @param {(FunctionDeclaration|FunctionExpression)} node
11+
* @param {DocTag} tag
12+
* @param {Function} err
13+
*/
14+
function checkReturnTypes(node, tag, err) {
15+
// checking consistency
16+
if (!tag.type) {
17+
return;
18+
}
19+
20+
// checking redundant: invalid or not return statements in code
21+
var redundant = !tag.type.valid || !this._getReturnStatementsForNode(node).length;
22+
23+
if (redundant) {
24+
err('redundant returns statement');
25+
}
26+
}

lib/rules/validate-jsdoc/check-return-types.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,15 @@ module.exports.options = {
1212
* @param {Function} err
1313
*/
1414
function checkReturnTypes(node, tag, err) {
15-
/* var option = this._options.checkReturnTypes;
16-
if (!node.jsdoc) {
15+
// try to check returns types
16+
if (!tag.type || !tag.type.valid) {
1717
return;
1818
}
1919

20-
console.log(node.jsdoc);
21-
22-
if (node.jsdoc) {
23-
24-
}*/
25-
if (node) { err(); }
26-
return tag;
20+
var returnsArgumentStatements = this._getReturnStatementsForNode(node);
21+
returnsArgumentStatements.forEach(function(argument) {
22+
if (!tag.type.match(argument)) {
23+
err('Wrong returns value', argument.loc.start);
24+
}
25+
});
2726
}

lib/rules/validate-jsdoc/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ var validatorsByName = module.exports = {
77
checkRedundantParams: require('./check-redundant-params'),
88
requireParamTypes: require('./require-param-types'),
99

10-
returns: require('./returns'),
10+
checkReturnTypes: require('./check-return-types'),
11+
requireReturnTypes: require('./require-return-types'),
12+
checkRedundantReturns: require('./check-redundant-returns'),
13+
14+
//returns: require('./returns'),
1115
checkRedundantAccess: require('./check-redundant-access'),
1216
enforceExistence: require('./enforce-existence'),
1317
leadingUnderscoreAccess: require('./leading-underscore-access')
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
module.exports = requireReturnTypes;
2+
module.exports.tags = ['return', 'returns'];
3+
module.exports.scopes = ['function'];
4+
module.exports.options = {
5+
requireReturnTypes: {allowedValues: [true]}
6+
};
7+
8+
/**
9+
* requiring returns types (?)
10+
* @param {(FunctionDeclaration|FunctionExpression)} node
11+
* @param {DocTag} tag
12+
* @param {Function} err
13+
*/
14+
function requireReturnTypes(node, tag, err) {
15+
if (!tag.type) {
16+
err('Missing type in @returns statement');
17+
}
18+
}

lib/rules/validate-jsdoc/returns.js

Lines changed: 0 additions & 57 deletions
This file was deleted.

0 commit comments

Comments
 (0)