diff --git a/frontend_tests/node_tests/components.js b/frontend_tests/node_tests/components.js
index 223a74f1d9..081ff02fa5 100644
--- a/frontend_tests/node_tests/components.js
+++ b/frontend_tests/node_tests/components.js
@@ -106,7 +106,7 @@ run_test("basics", () => {
case ".ind-tab":
return ind_tab;
default:
- throw Error("unknown selector: " + sel);
+ throw new Error("unknown selector: " + sel);
}
};
@@ -131,7 +131,7 @@ run_test("basics", () => {
case "
translated: Search operators
":
return make_tab(2);
default:
- throw Error("unknown selector: " + sel);
+ throw new Error("unknown selector: " + sel);
}
});
diff --git a/frontend_tests/node_tests/composebox_typeahead.js b/frontend_tests/node_tests/composebox_typeahead.js
index 3232d29227..e3cdba609a 100644
--- a/frontend_tests/node_tests/composebox_typeahead.js
+++ b/frontend_tests/node_tests/composebox_typeahead.js
@@ -405,7 +405,7 @@ run_test("content_typeahead_selected", () => {
// silent mention
fake_this.completing = "silent_mention";
compose.warn_if_mentioning_unsubscribed_user = () => {
- throw Error("unexpected call for silent mentions");
+ throw new Error("unexpected call for silent mentions");
};
fake_this.query = "@_kin";
@@ -434,7 +434,7 @@ run_test("content_typeahead_selected", () => {
// user group mention
compose.warn_if_mentioning_unsubscribed_user = () => {
- throw Error("unexpected call for user groups");
+ throw new Error("unexpected call for user groups");
};
fake_this.query = "@back";
diff --git a/frontend_tests/node_tests/general.js b/frontend_tests/node_tests/general.js
index 16b8e7bc33..82ecdbc98c 100644
--- a/frontend_tests/node_tests/general.js
+++ b/frontend_tests/node_tests/general.js
@@ -641,7 +641,7 @@ function make_jquery_helper() {
case "#stream_filters":
return stream_filters;
default:
- throw Error("unknown selector: " + selector);
+ throw new Error("unknown selector: " + selector);
}
}
diff --git a/frontend_tests/node_tests/keydown_util.js b/frontend_tests/node_tests/keydown_util.js
index 274612723e..a31d2edf74 100644
--- a/frontend_tests/node_tests/keydown_util.js
+++ b/frontend_tests/node_tests/keydown_util.js
@@ -10,7 +10,7 @@ run_test("test_early_returns", () => {
elem: stub,
handlers: {
left_arrow: () => {
- throw Error("do not dispatch this with alt key");
+ throw new Error("do not dispatch this with alt key");
},
},
};
diff --git a/frontend_tests/node_tests/list_render.js b/frontend_tests/node_tests/list_render.js
index 90f00e800d..2f4380497d 100644
--- a/frontend_tests/node_tests/list_render.js
+++ b/frontend_tests/node_tests/list_render.js
@@ -257,7 +257,7 @@ function sort_button(opts) {
case "sort-prop":
return opts.prop_name;
default:
- throw Error("unknown selector: " + sel);
+ throw new Error("unknown selector: " + sel);
}
}
@@ -685,7 +685,7 @@ run_test("render item", () => {
};
};
- const list = [...Array(100).keys()];
+ const list = [...new Array(100).keys()];
let text = "initial";
const get_item = (item) => ({text: `${text}: ${item}`, value: item});
diff --git a/frontend_tests/node_tests/people.js b/frontend_tests/node_tests/people.js
index 64c990eb19..b02711793b 100644
--- a/frontend_tests/node_tests/people.js
+++ b/frontend_tests/node_tests/people.js
@@ -749,7 +749,7 @@ run_test("extract_people_from_message", () => {
// Get line coverage
people.__Rewire__("report_late_add", () => {
- throw Error("unexpected late add");
+ throw new Error("unexpected late add");
});
message = {
diff --git a/frontend_tests/node_tests/pm_list.js b/frontend_tests/node_tests/pm_list.js
index 18ee47e29f..e0108114af 100644
--- a/frontend_tests/node_tests/pm_list.js
+++ b/frontend_tests/node_tests/pm_list.js
@@ -279,7 +279,7 @@ run_test("ensure coverage", () => {
// where functions early exit.
narrow_state.active = () => false;
pm_list.rebuild_recent = () => {
- throw Error("we should not call rebuild_recent");
+ throw new Error("we should not call rebuild_recent");
};
pm_list.update_private_messages();
});
diff --git a/frontend_tests/node_tests/popovers.js b/frontend_tests/node_tests/popovers.js
index 5509881c0d..f38a57666e 100644
--- a/frontend_tests/node_tests/popovers.js
+++ b/frontend_tests/node_tests/popovers.js
@@ -181,7 +181,7 @@ run_test("sender_hover", (override) => {
return "content-html";
default:
- throw Error("unrecognized template: " + fn);
+ throw new Error("unrecognized template: " + fn);
}
});
@@ -247,7 +247,7 @@ run_test("actions_popover", (override) => {
);
return "actions-content";
default:
- throw Error("unrecognized template: " + fn);
+ throw new Error("unrecognized template: " + fn);
}
});
diff --git a/frontend_tests/node_tests/server_events.js b/frontend_tests/node_tests/server_events.js
index 31cb1a6019..8c88c23369 100644
--- a/frontend_tests/node_tests/server_events.js
+++ b/frontend_tests/node_tests/server_events.js
@@ -72,15 +72,15 @@ const setup = function () {
server_events.home_view_loaded();
set_global("message_events", {
insert_new_messages() {
- throw Error("insert error");
+ throw new Error("insert error");
},
update_messages() {
- throw Error("update error");
+ throw new Error("update error");
},
});
set_global("stream_events", {
update_property() {
- throw Error("subs update error");
+ throw new Error("subs update error");
},
});
};
diff --git a/frontend_tests/node_tests/stream_topic_history.js b/frontend_tests/node_tests/stream_topic_history.js
index 593ff8001a..ddbbcb17a9 100644
--- a/frontend_tests/node_tests/stream_topic_history.js
+++ b/frontend_tests/node_tests/stream_topic_history.js
@@ -318,7 +318,7 @@ run_test("server_history_end_to_end", () => {
// Try getting server history for a second time.
channel.get = () => {
- throw Error("We should not get more data.");
+ throw new Error("We should not get more data.");
};
on_success_called = false;
diff --git a/frontend_tests/node_tests/upgrade.js b/frontend_tests/node_tests/upgrade.js
index 67fc85c20c..7aa4be0d24 100644
--- a/frontend_tests/node_tests/upgrade.js
+++ b/frontend_tests/node_tests/upgrade.js
@@ -58,7 +58,7 @@ run_test("initialize", () => {
assert.equal(numeric_inputs, undefined);
assert.equal(redirect_to, "/");
} else {
- throw Error("Unhandled case");
+ throw new Error("Unhandled case");
}
};
diff --git a/frontend_tests/node_tests/upload.js b/frontend_tests/node_tests/upload.js
index a3c71caeb5..5370c554b8 100644
--- a/frontend_tests/node_tests/upload.js
+++ b/frontend_tests/node_tests/upload.js
@@ -266,7 +266,7 @@ run_test("upload_files", () => {
uppy.addFile = (file) => {
assert.equal(file.name, "budapest.png");
add_file_counter += 1;
- throw Error();
+ throw new Error("some error");
};
upload.upload_files(uppy, config, files);
assert.equal(add_file_counter, 1);
diff --git a/frontend_tests/node_tests/vdom.js b/frontend_tests/node_tests/vdom.js
index 4f84a83d2d..f64899d9b6 100644
--- a/frontend_tests/node_tests/vdom.js
+++ b/frontend_tests/node_tests/vdom.js
@@ -182,7 +182,7 @@ run_test("partial updates", () => {
);
replace_content = () => {
- throw Error("should not replace entire html");
+ throw new Error("should not replace entire html");
};
let patched_html;
@@ -216,7 +216,7 @@ run_test("partial updates", () => {
run_test("eq_array easy cases", () => {
const bogus_eq = () => {
- throw Error("we should not be comparing elements");
+ throw new Error("we should not be comparing elements");
};
assert.equal(vdom.eq_array(undefined, undefined, bogus_eq), true);
diff --git a/frontend_tests/zjsunit/zblueslip.js b/frontend_tests/zjsunit/zblueslip.js
index ea74ade7e2..b51e2e46ea 100644
--- a/frontend_tests/zjsunit/zblueslip.js
+++ b/frontend_tests/zjsunit/zblueslip.js
@@ -16,7 +16,7 @@ exports.make_zblueslip = function () {
// For fatal messages, we should use assert.throws
lib.fatal = (msg) => {
- throw Error(msg);
+ throw new Error(msg);
};
// Store valid test data for options.
@@ -30,10 +30,10 @@ exports.make_zblueslip = function () {
lib.expect = (name, message, count = 1) => {
if (opts[name] === undefined) {
- throw Error("unexpected arg for expect: " + name);
+ throw new Error("unexpected arg for expect: " + name);
}
if (count <= 0 && Number.isInteger(count)) {
- throw Error("expected count should be a positive integer");
+ throw new Error("expected count should be a positive integer");
}
const obj = {message, count, expected_count: count};
lib.test_data[name].push(obj);
@@ -48,7 +48,7 @@ exports.make_zblueslip = function () {
// Only throw this for message types we want to explicitly track.
// For example, we do not want to throw here for debug messages.
if (opts[name]) {
- throw Error(`Unexpected '${name}' message: ${message}`);
+ throw new Error(`Unexpected '${name}' message: ${message}`);
}
continue;
}
@@ -58,11 +58,11 @@ exports.make_zblueslip = function () {
for (const obj of lib.test_data[name]) {
const message = obj.message;
if (obj.count > 0) {
- throw Error(
+ throw new Error(
`We did not see expected ${obj.expected_count} of '${name}': ${message}`,
);
} else if (obj.count < 0) {
- throw Error(
+ throw new Error(
`We saw ${obj.expected_count - obj.count} (expected ${
obj.expected_count
}) of '${name}': ${message}`,
@@ -101,14 +101,14 @@ exports.make_zblueslip = function () {
if (message.toString().includes("exception")) {
message = message.toString();
} else {
- throw Error("message should be string: " + message);
+ throw new Error("message should be string: " + message);
}
}
lib.test_logs[name].push({message, more_info, stack});
const matched_error_message = lib.test_data[name].find((x) => x.message === message);
const exact_match_fail = !matched_error_message;
if (exact_match_fail) {
- const error = Error(`Invalid ${name} message: "${message}".`);
+ const error = new Error(`Invalid ${name} message: "${message}".`);
error.blueslip = true;
throw error;
}
diff --git a/frontend_tests/zjsunit/zjquery.js b/frontend_tests/zjsunit/zjquery.js
index a9911b57a7..8e4945473e 100644
--- a/frontend_tests/zjsunit/zjquery.js
+++ b/frontend_tests/zjsunit/zjquery.js
@@ -34,7 +34,7 @@ exports.make_event_store = (selector) => {
if (child_selector === undefined) {
handler = on_functions.get(name);
if (!handler) {
- throw Error("no " + name + " handler for " + selector);
+ throw new Error("no " + name + " handler for " + selector);
}
return handler;
}
@@ -45,7 +45,7 @@ exports.make_event_store = (selector) => {
}
if (!handler) {
- throw Error("no " + name + " handler for " + selector + " " + child_selector);
+ throw new Error("no " + name + " handler for " + selector + " " + child_selector);
}
return handler;
@@ -61,7 +61,7 @@ exports.make_event_store = (selector) => {
// .off in code that we test: $(...).off('click', child_sel);
//
// So we don't support this for now.
- throw Error("zjquery does not support this call sequence");
+ throw new Error("zjquery does not support this call sequence");
},
on(event_name, ...args) {
@@ -73,7 +73,7 @@ exports.make_event_store = (selector) => {
if (on_functions.has(event_name)) {
console.info("\nEither the app or the test can be at fault here..");
console.info("(sometimes you just want to call $.clear_all_elements();)\n");
- throw Error("dup " + event_name + " handler for " + selector);
+ throw new Error("dup " + event_name + " handler for " + selector);
}
on_functions.set(event_name, handler);
@@ -81,7 +81,7 @@ exports.make_event_store = (selector) => {
}
if (args.length !== 2) {
- throw Error("wrong number of arguments passed in");
+ throw new Error("wrong number of arguments passed in");
}
const [sel, handler] = args;
@@ -95,7 +95,7 @@ exports.make_event_store = (selector) => {
const child_on = child_on_functions.get(sel);
if (child_on.has(event_name)) {
- throw Error("dup " + event_name + " handler for " + selector + " " + sel);
+ throw new Error("dup " + event_name + " handler for " + selector + " " + sel);
}
child_on.set(event_name, handler);
@@ -213,7 +213,7 @@ exports.make_new_elem = function (selector, opts) {
if (opts.silent) {
return self;
}
- throw Error("Cannot find " + child_selector + " in " + selector);
+ throw new Error("Cannot find " + child_selector + " in " + selector);
},
get(idx) {
// We have some legacy code that does $('foo').get(0).
@@ -408,7 +408,7 @@ exports.make_zjquery = function (opts) {
const error =
"\nInstead of doing equality checks on a full object, " +
'do `assert_equal(foo.selector, ".some_class")\n';
- throw Error(error);
+ throw new Error(error);
}
const val = target[key];
@@ -417,7 +417,7 @@ exports.make_zjquery = function (opts) {
// For undefined values, we'll throw errors to devs saying
// they need to create stubs. We ignore certain keys that
// are used for simply printing out the object.
- throw Error('You must create a stub for $("' + selector + '").' + key);
+ throw new Error('You must create a stub for $("' + selector + '").' + key);
}
return val;
@@ -457,14 +457,14 @@ exports.make_zjquery = function (opts) {
}
if (arg2 !== undefined) {
- throw Error("We only use one-argument variations of $(...) in Zulip code.");
+ throw new Error("We only use one-argument variations of $(...) in Zulip code.");
}
const selector = arg;
if (typeof selector !== "string") {
console.info(arg);
- throw Error("zjquery does not know how to wrap this object yet");
+ throw new Error("zjquery does not know how to wrap this object yet");
}
const valid_selector =
diff --git a/static/js/blueslip.js b/static/js/blueslip.js
index cdaaac066e..c60c98365e 100644
--- a/static/js/blueslip.js
+++ b/static/js/blueslip.js
@@ -237,7 +237,7 @@ exports.warn = function blueslip_warn(msg, more_info) {
exports.error = function blueslip_error(msg, more_info, stack) {
if (stack === undefined) {
- stack = Error().stack;
+ stack = new Error().stack;
}
const args = build_arg_list(msg, more_info);
logger.error(...args);
diff --git a/static/js/upload.js b/static/js/upload.js
index 295d5cf02a..74cb40742b 100644
--- a/static/js/upload.js
+++ b/static/js/upload.js
@@ -25,7 +25,7 @@ exports.get_translated_status = function (file) {
exports.get_item = function (key, config) {
if (!config) {
- throw Error("Missing config");
+ throw new Error("Missing config");
}
if (config.mode === "compose") {
switch (key) {
@@ -50,11 +50,11 @@ exports.get_item = function (key, config) {
case "markdown_preview_hide_button":
return $("#undo_markdown_preview");
default:
- throw Error(`Invalid key name for mode "${config.mode}"`);
+ throw new Error(`Invalid key name for mode "${config.mode}"`);
}
} else if (config.mode === "edit") {
if (!config.row) {
- throw Error("Missing row in config");
+ throw new Error("Missing row in config");
}
switch (key) {
case "textarea":
@@ -80,10 +80,10 @@ exports.get_item = function (key, config) {
case "markdown_preview_hide_button":
return $("#undo_markdown_preview_" + config.row);
default:
- throw Error(`Invalid key name for mode "${config.mode}"`);
+ throw new Error(`Invalid key name for mode "${config.mode}"`);
}
} else {
- throw Error("Invalid upload mode!");
+ throw new Error("Invalid upload mode!");
}
};
diff --git a/zerver/openapi/javascript_examples.js b/zerver/openapi/javascript_examples.js
index 59bf0ea15b..7794cd9af3 100644
--- a/zerver/openapi/javascript_examples.js
+++ b/zerver/openapi/javascript_examples.js
@@ -309,7 +309,7 @@ add_example("remove_subscriptions", "/users/me/subscriptions:delete", 200, async
add_example("update_message_flags", "/messages/flags:post", 200, async (client) => {
// Send 3 messages to run this example on
- const message_ids = [...Array(3)];
+ const message_ids = [...new Array(3)];
for (let i = 0; i < message_ids.length; i = i + 1) {
message_ids[i] = await send_test_message(client);
}