FeatureIsNotAvailable (lt.Location, "iterators");
}
- current_block.Explicit.RegisterIteratorYield ();
+ current_block.ParametersBlock.TopBlock.IsIterator = true;
$$ = new YieldBreak (lt.Location);
lbag.AddStatement ($$, GetLocation ($2), GetLocation ($3));
}
HasAsyncModifier = 1 << 10,
Resolved = 1 << 11,
YieldBlock = 1 << 12,
- AwaitBlock = 1 << 13
+ AwaitBlock = 1 << 13,
+ Iterator = 1 << 14
}
public Block Parent;
public void RegisterIteratorYield ()
{
+ ParametersBlock.TopBlock.IsIterator = true;
+
var block = this;
while ((block.flags & Flags.YieldBlock) == 0) {
block.flags |= Flags.YieldBlock;
public bool IsIterator {
get {
- return HasYield;
+ return (flags & Flags.Iterator) != 0;
+ }
+ set {
+ flags = value ? flags | Flags.Iterator : flags & ~Flags.Iterator;
}
}
<size>26</size>\r
</method>\r
<method name="Boolean MoveNext()" attrs="486">\r
- <size>75</size>\r
+ <size>60</size>\r
</method>\r
<method name="Void Dispose()" attrs="486">\r
<size>1</size>\r
<size>26</size>\r
</method>\r
<method name="Boolean MoveNext()" attrs="486">\r
- <size>37</size>\r
+ <size>32</size>\r
</method>\r
<method name="Void Dispose()" attrs="486">\r
<size>1</size>\r
<size>26</size>\r
</method>\r
<method name="Boolean MoveNext()" attrs="486">\r
- <size>37</size>\r
+ <size>32</size>\r
</method>\r
<method name="Void Dispose()" attrs="486">\r
<size>1</size>\r
<size>26</size>\r
</method>\r
<method name="Boolean MoveNext()" attrs="486">\r
- <size>37</size>\r
+ <size>32</size>\r
</method>\r
<method name="Void Dispose()" attrs="486">\r
<size>1</size>\r