From eb42fe51da0b434efeb6d3cedf05437b020caa6a 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. (cherry picked from commit a0653ae71a4ec76819ae5316236e075f54f17f70) --- compiler/closureiters.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/closureiters.nim b/compiler/closureiters.nim index 3f80980eab..e4137abcc0 100644 --- a/compiler/closureiters.nim +++ b/compiler/closureiters.nim @@ -1152,7 +1152,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)