diff --git a/sdk/lib/io/process.dart b/sdk/lib/io/process.dart index 8ceb41d9e7d..1c9fddb985e 100644 --- a/sdk/lib/io/process.dart +++ b/sdk/lib/io/process.dart @@ -46,7 +46,11 @@ set exitCode(int status) { * in a isolate while it is blocked in a [sleep] call. */ void sleep(Duration duration) { - _ProcessUtils._sleep(duration.inMilliseconds); + int milliseconds = duration.inMilliseconds; + if (milliseconds < 0) { + throw new ArgumentError("sleep: duration cannot be negative"); + } + _ProcessUtils._sleep(milliseconds); } /** diff --git a/tests/standalone/io/sleep_test.dart b/tests/standalone/io/sleep_test.dart index d953bf9f1a2..26646fa87a6 100644 --- a/tests/standalone/io/sleep_test.dart +++ b/tests/standalone/io/sleep_test.dart @@ -13,7 +13,10 @@ test(int milliseconds) { } main() { + test(0); test(1); test(10); test(100); + Expect.throws(() => sleep(new Duration(milliseconds: -1)), + (e) => e is ArgumentError); }