2 * @fileoverview Rule to flag use of alert, confirm, prompt
3 * @author Nicholas C. Zakas
7 //------------------------------------------------------------------------------
9 //------------------------------------------------------------------------------
11 function matchProhibited(name) {
12 return name.match(/^(alert|confirm|prompt)$/);
15 function report(context, node, result) {
16 context.report(node, "Unexpected {{name}}.", { name: result[1] });
20 //------------------------------------------------------------------------------
22 //------------------------------------------------------------------------------
24 module.exports = function(context) {
28 "CallExpression": function(node) {
33 if (node.callee.type === "Identifier") {
35 result = matchProhibited(node.callee.name);
38 report(context, node, result);
41 } else if (node.callee.type === "MemberExpression" && node.callee.property.type === "Identifier") {
43 result = matchProhibited(node.callee.property.name);
45 if (result && node.callee.object.name === "window") {
46 report(context, node, result);