-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Open
Description
Nim Version
2.2.4
Description
Same code as #25047
proc makeiter(v: sink string): iterator(): string =
return iterator(): string =
yield v
var iter = makeiter("test")()
for c in iter:
echo "works ", c
Looking at the ORC code:
struct tyObject_Env_testitdotnim_makeiter___5Q3mvYA0XmpVYxu68uPX9bQ {
RootObj Sup;
NimStringV2 v0;
};
struct tyObject_Env_testitdotnim_colonanonymous___1qbA8qHJS9cP9cGQc9bC9b19cRQ {
RootObj Sup;
NI colonstate_;
tyObject_Env_testitdotnim_makeiter___5Q3mvYA0XmpVYxu68uPX9bQ* colonup_;
};
...
N_LIB_PRIVATE N_NIMCALL(void, _ZN8makeiter10eqdestroy_E3varIN15colonanonymous_32Env_testitdotnim_colonanonymous_EE)(tyObject_Env_testitdotnim_colonanonymous___1qbA8qHJS9cP9cGQc9bC9b19cRQ* dest_p0) {
{
NIM_BOOL T3_;
T3_ = (NIM_BOOL)0;
T3_ = nimDecRefIsLastCyclicDyn((*dest_p0).colonup_);
if (!T3_) goto LA4_;
nimDestroyAndDispose((*dest_p0).colonup_);
}
LA4_: ;
}
...
tyObject_Env_testitdotnim_colonanonymous___1qbA8qHJS9cP9cGQc9bC9b19cRQ* colonenv__2;
....
nimMarkCyclic(colonenv__2);
This particular environment does not contain any types that could be cyclic, suggesting that the cycle analysis is off - this would have a large impact on async/await that generates lots of these environments.
Current Output
Expected Output
Known Workarounds
No response
Additional Information
No response
Metadata
Metadata
Assignees
Labels
No labels