summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/url_search_params.ts10
-rw-r--r--js/url_search_params_test.ts13
2 files changed, 18 insertions, 5 deletions
diff --git a/js/url_search_params.ts b/js/url_search_params.ts
index 1d9aa43b3..d9c4e59ab 100644
--- a/js/url_search_params.ts
+++ b/js/url_search_params.ts
@@ -280,11 +280,11 @@ export class URLSearchParams {
// Overload: sequence<sequence<USVString>>
for (const tuple of init) {
// If pair does not contain exactly two items, then throw a TypeError.
- requiredArguments(
- "URLSearchParams.constructor tuple array argument",
- tuple.length,
- 2
- );
+ if (tuple.length !== 2) {
+ throw new TypeError(
+ "URLSearchParams.constructor tuple array argument must only contain pair elements"
+ );
+ }
this.append(tuple[0], tuple[1]);
}
}
diff --git a/js/url_search_params_test.ts b/js/url_search_params_test.ts
index 0bce1166c..d37b55497 100644
--- a/js/url_search_params_test.ts
+++ b/js/url_search_params_test.ts
@@ -147,6 +147,19 @@ test(function urlSearchParamsShouldThrowTypeError(): void {
}
assertEquals(hasThrown, 2);
+
+ try {
+ new URLSearchParams([["1", "2", "3"]]);
+ hasThrown = 1;
+ } catch (err) {
+ if (err instanceof TypeError) {
+ hasThrown = 2;
+ } else {
+ hasThrown = 3;
+ }
+ }
+
+ assertEquals(hasThrown, 2);
});
test(function urlSearchParamsAppendArgumentsCheck(): void {