diff options
Diffstat (limited to 'js')
-rw-r--r-- | js/url_search_params.ts | 10 | ||||
-rw-r--r-- | js/url_search_params_test.ts | 13 |
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 { |