Sha256: 8e0880e3932fd0f92d7966f325668c5634b3fa56591073e7dac4243ad23fba28
Contents?: true
Size: 2 KB
Versions: 45
Compression:
Stored size: 2 KB
Contents
/** * @fileoverview Rule to flag labels that are the same as an identifier * @author Ian Christian Myers */ "use strict"; //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ var astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ module.exports = { meta: { docs: { description: "disallow labels that share a name with a variable", category: "Variables", recommended: false }, schema: [] }, create: function(context) { //-------------------------------------------------------------------------- // Helpers //-------------------------------------------------------------------------- /** * Check if the identifier is present inside current scope * @param {object} scope current scope * @param {string} name To evaluate * @returns {boolean} True if its present * @private */ function findIdentifier(scope, name) { return astUtils.getVariableByName(scope, name) !== null; } //-------------------------------------------------------------------------- // Public API //-------------------------------------------------------------------------- return { LabeledStatement: function(node) { // Fetch the innermost scope. var scope = context.getScope(); // Recursively find the identifier walking up the scope, starting // with the innermost scope. if (findIdentifier(scope, node.label.name)) { context.report(node, "Found identifier with same name as label."); } } }; } };
Version data entries
45 entries across 45 versions & 2 rubygems