Skip to content

Commit 7d267f0

Browse files
authored
Merge pull request #1 from lambdalisue/fix-range
Throw an error when the 3rd argument of `range()` is 0
2 parents b0548fe + e74c781 commit 7d267f0

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

builtins.test.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { describe, expect, it } from "./deps_test.ts";
1+
import { assertThrows, describe, expect, it } from "./deps_test.ts";
22
import {
33
all,
44
any,
@@ -254,6 +254,16 @@ describe("range", () => {
254254
expect(Array.from(range(5, 1, -1))).toEqual([5, 4, 3, 2]);
255255
expect(Array.from(range(5, -3, -2))).toEqual([5, 3, 1, -1]);
256256
});
257+
258+
it("step cannot be 0", () => {
259+
assertThrows(
260+
() => {
261+
range(0, 1, 0);
262+
},
263+
undefined,
264+
"range() arg 3 must not be zero",
265+
);
266+
});
257267
});
258268

259269
describe("reduce", () => {

builtins.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,11 @@ export function min<T>(
187187
* Internal helper for the range function
188188
*/
189189
function _range(start: number, stop: number, step: number): Iterable<number> {
190+
if (step === 0) {
191+
throw new Error("range() arg 3 must not be zero");
192+
}
190193
const counter = count(start, step);
191-
const pred = step >= 0 ? (n: number) => n < stop : (n: number) => n > stop;
194+
const pred = step > 0 ? (n: number) => n < stop : (n: number) => n > stop;
192195
return takewhile(counter, pred);
193196
}
194197

deps_test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export { expect } from "https://deno.land/x/[email protected]/mod.ts";
2+
export * from "https://deno.land/[email protected]/testing/asserts.ts";
23

34
const currentScopes: string[] = [];
45

0 commit comments

Comments
 (0)