summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
author迷渡 <justjavac@gmail.com>2019-06-18 01:42:20 +0800
committerRyan Dahl <ry@tinyclouds.org>2019-06-17 10:42:20 -0700
commit9ad5b0653e3821915d7ab7438d5ed4fe373c569a (patch)
treee9853fea11dc1ee510e6db8c832b68108d4a2a49 /js
parenta95319074240a869dce088fa580e46a067a8e7d1 (diff)
clearTimeout should convert to number (#2539)
Diffstat (limited to 'js')
-rw-r--r--js/timers.ts1
-rw-r--r--js/timers_test.ts14
2 files changed, 14 insertions, 1 deletions
diff --git a/js/timers.ts b/js/timers.ts
index ba9a653a8..0d0e1e69a 100644
--- a/js/timers.ts
+++ b/js/timers.ts
@@ -250,6 +250,7 @@ export function setInterval(
/** Clears a previously set timer by id. AKA clearTimeout and clearInterval. */
export function clearTimer(id: number): void {
+ id = Number(id);
const timer = idMap.get(id);
if (timer === undefined) {
// Timer doesn't exist any more or never existed. This is not an error.
diff --git a/js/timers_test.ts b/js/timers_test.ts
index 88c5ea5ca..65432d4c5 100644
--- a/js/timers_test.ts
+++ b/js/timers_test.ts
@@ -1,5 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
-import { test, assertEquals } from "./test_util.ts";
+import { test, assert, assertEquals } from "./test_util.ts";
function deferred(): {
promise: Promise<{}>;
@@ -231,3 +231,15 @@ test(async function timeoutBindThis(): Promise<void> {
}
);
});
+
+test(async function clearTimeoutShouldConvertToNumber(): Promise<void> {
+ let called = false;
+ const obj = {
+ valueOf(): number {
+ called = true;
+ return 1;
+ }
+ };
+ clearTimeout((obj as unknown) as number);
+ assert(called);
+});