I have yield working in source, sort of. If you try and yield from inside a nested block, and then re-call the method, and there's local variables used in the sub-block from a higher scope (but only if used after the yield statement)... then it breaks at runtime. I know vaguely where the bug is, but am at the moment incapable of tracking state as the various yield blocks go on and off of the stack.
Example code for the night:
public yields<string> Cow(){ yield("moo."); yield("moo!"); yield("MOO!");}public static void main(){ foreach(string word in Cow()){ print word; // moo.moo!MOO! }}
If you change the 2nd yield to a return(); you only get moo.
Tidbits of progress.