From a0653ae71a4ec76819ae5316236e075f54f17f70 Mon Sep 17 00:00:00 2001 From: Jacek Sieka Date: Mon, 31 Oct 2022 18:41:48 +0100 Subject: [PATCH] fix closure iter state table init type [backport] (#20717) fix closure iter state table init type It is a well-known fact that using closed intervals for ranges is logically, objectively and eternally wrong, as evidenced by this off-by-one. --- compiler/closureiters.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/closureiters.nim b/compiler/closureiters.nim index a39dd0e717..5c048db2be 100644 --- a/compiler/closureiters.nim +++ b/compiler/closureiters.nim @@ -1155,7 +1155,7 @@ proc newArrayType(g: ModuleGraph; n: int, t: PType; idgen: IdGenerator; owner: P result = newType(tyArray, nextTypeId(idgen), owner) let rng = newType(tyRange, nextTypeId(idgen), owner) - rng.n = newTree(nkRange, g.newIntLit(owner.info, 0), g.newIntLit(owner.info, n)) + rng.n = newTree(nkRange, g.newIntLit(owner.info, 0), g.newIntLit(owner.info, n - 1)) rng.rawAddSon(t) result.rawAddSon(rng)