diff options
Diffstat (limited to 'tools/eslint/lib/rules/no-ex-assign.js')
-rw-r--r-- | tools/eslint/lib/rules/no-ex-assign.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tools/eslint/lib/rules/no-ex-assign.js b/tools/eslint/lib/rules/no-ex-assign.js new file mode 100644 index 0000000000..6ea5a22360 --- /dev/null +++ b/tools/eslint/lib/rules/no-ex-assign.js @@ -0,0 +1,40 @@ +/** + * @fileoverview Rule to flag assignment of the exception parameter + * @author Stephen Murray <spmurrayzzz> + */ + +"use strict"; + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ + +module.exports = function(context) { + + var catchStack = []; + + return { + + "CatchClause": function(node) { + catchStack.push(node.param.name); + }, + + "CatchClause:exit": function() { + catchStack.pop(); + }, + + "AssignmentExpression": function(node) { + + if (catchStack.length > 0) { + + var exceptionName = catchStack[catchStack.length - 1]; + + if (node.left.name && node.left.name === exceptionName) { + context.report(node, "Do not assign to the exception parameter."); + } + } + } + + }; + +}; |