From a2e2da2ab24ab4dc652621006f4b026ede5fe1ac Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Fri, 26 Sep 2025 22:12:34 +0800 Subject: [PATCH] fixes #25167; fixes `deref` type (#25195) fixes #25167 (cherry picked from commit fed00534818ac81bcec17085fb57ccb7d3a6a77e) --- compiler/transf.nim | 4 +++- tests/iter/titer_issues.nim | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/compiler/transf.nim b/compiler/transf.nim index 197e073477..a8296d2f25 100644 --- a/compiler/transf.nim +++ b/compiler/transf.nim @@ -834,7 +834,9 @@ proc transformFor(c: PTransf, n: PNode): PNode = var temp = newTemp(c, arg[0].typ, formal.info) addVar(v, temp) stmtList.add(newAsgnStmt(c, nkFastAsgn, temp, arg[0], true)) - newC.mapping[formal.itemId] = newDeref(temp) + let newD = newDeref(temp) + newD.typ() = t + newC.mapping[formal.itemId] = newD else: # generate a temporary and produce an assignment statement: var temp = newTemp(c, t, formal.info) diff --git a/tests/iter/titer_issues.nim b/tests/iter/titer_issues.nim index efea76c02e..ff0b8eb49f 100644 --- a/tests/iter/titer_issues.nim +++ b/tests/iter/titer_issues.nim @@ -424,3 +424,11 @@ block: # bug #25121 for _ in k(): (proc() = (; let _ = block: 0))() +let aaa = new array[1000, byte] +block: + for _ in cast[typeof(aaa)](aaa)[]: + discard +block: + let x = cast[typeof(aaa)](aaa) # not even var + for _ in x[]: + discard