/** * @fileoverview Rule to flag bitwise identifiers * @author Nicholas C. Zakas */ "use strict"; //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ module.exports = function(context) { var BITWISE_OPERATORS = [ "^", "|", "&", "<<", ">>", ">>>", "^=", "|=", "&=", "<<=", ">>=", ">>>=", "~" ]; /** * Reports an unexpected use of a bitwise operator. * @param {ASTNode} node Node which contains the bitwise operator. * @returns {void} */ function report(node) { context.report(node, "Unexpected use of '{{operator}}'.", { operator: node.operator }); } /** * Checks if the given node has a bitwise operator. * @param {ASTNode} node The node to check. * @returns {boolean} Whether or not the node has a bitwise operator. */ function hasBitwiseOperator(node) { return BITWISE_OPERATORS.indexOf(node.operator) !== -1; } /** * Report if the given node contains a bitwise operator. * @param {ASTNode} node The node to check. * @returns {void} */ function checkNodeForBitwiseOperator(node) { if (hasBitwiseOperator(node)) { report(node); } } return { "AssignmentExpression": checkNodeForBitwiseOperator, "BinaryExpression": checkNodeForBitwiseOperator, "UnaryExpression": checkNodeForBitwiseOperator }; }; module.exports.schema = [];