/** * @fileoverview Rule to enforce `default` clauses in `switch` statements to be last * @author Milos Djermanovic */ "use strict"; //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ /** @type {import('../types').Rule.RuleModule} */ module.exports = { meta: { type: "suggestion", docs: { description: "Enforce `default` clauses in `switch` statements to be last", recommended: false, url: "https://eslint.org/docs/latest/rules/default-case-last", }, schema: [], messages: { notLast: "Default clause should be the last clause.", }, }, create(context) { return { SwitchStatement(node) { const cases = node.cases, indexOfDefault = cases.findIndex(c => c.test === null); if ( indexOfDefault !== -1 && indexOfDefault !== cases.length - 1 ) { const defaultClause = cases[indexOfDefault]; context.report({ node: defaultClause, messageId: "notLast", }); } }, }; }, };