dotnet/csharplang

[Proposal]: yield inside of try / catch

jaredpar opened this issue · 0 comments

yield inside of try / catch

  • Proposed
  • Prototype: Not Started
  • Implementation: Not Started
  • Specification: Not Started

Summary

This expands the use of yield so it is permitted:

  • Inside the try portion of a try / catch block
  • Inside the catch portion of a try / catch with some restrictions on the presence of finally

Motivation

This is a long standing pain point in iterators that customers bring up with some regularity. The restriction exists largely because of limitations in the native compiler state machine rewriting code at the point iterators were implemented. The Roslyn compiler is capable of performing this type of rewrite, mostly through the innovations around async method state machines. Given that we should remove this restriction to make iterators more flexible.

Detailed design

Full details are in the proposal document.

#8413

Design meetings