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