1/** 2 * @fileoverview Rule to enforce default clauses in switch statements to be last 3 * @author Milos Djermanovic 4 */ 5 6"use strict"; 7 8//------------------------------------------------------------------------------ 9// Rule Definition 10//------------------------------------------------------------------------------ 11 12module.exports = { 13 meta: { 14 type: "suggestion", 15 16 docs: { 17 description: "enforce default clauses in switch statements to be last", 18 category: "Best Practices", 19 recommended: false, 20 url: "https://eslint.org/docs/rules/default-case-last" 21 }, 22 23 schema: [], 24 25 messages: { 26 notLast: "Default clause should be the last clause." 27 } 28 }, 29 30 create(context) { 31 return { 32 SwitchStatement(node) { 33 const cases = node.cases, 34 indexOfDefault = cases.findIndex(c => c.test === null); 35 36 if (indexOfDefault !== -1 && indexOfDefault !== cases.length - 1) { 37 const defaultClause = cases[indexOfDefault]; 38 39 context.report({ node: defaultClause, messageId: "notLast" }); 40 } 41 } 42 }; 43 } 44}; 45