.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / eslint / lib / rules / no-throw-literal.js
1 /**
2  * @fileoverview Rule to restrict what can be thrown as an exception.
3  * @author Dieter Oberkofler
4  */
5
6 "use strict";
7
8 const astUtils = require("./utils/ast-utils");
9
10 //------------------------------------------------------------------------------
11 // Rule Definition
12 //------------------------------------------------------------------------------
13
14 module.exports = {
15     meta: {
16         type: "suggestion",
17
18         docs: {
19             description: "disallow throwing literals as exceptions",
20             category: "Best Practices",
21             recommended: false,
22             url: "https://eslint.org/docs/rules/no-throw-literal"
23         },
24
25         schema: [],
26
27         messages: {
28             object: "Expected an error object to be thrown.",
29             undef: "Do not throw undefined."
30         }
31     },
32
33     create(context) {
34
35         return {
36
37             ThrowStatement(node) {
38                 if (!astUtils.couldBeError(node.argument)) {
39                     context.report({ node, messageId: "object" });
40                 } else if (node.argument.type === "Identifier") {
41                     if (node.argument.name === "undefined") {
42                         context.report({ node, messageId: "undef" });
43                     }
44                 }
45
46             }
47
48         };
49
50     }
51 };