Thanks Steve! I have amended the proposal to follow the Language Steering Group's recommendations:
I have also subset out a couple of aspects of the original proposal to correspond to what we've been able to implement so far:
-
The proposal had specified that local variables escaped by closures become non-consumable after the point they get escaped by a closure, but we weren't able to implement this flow sensitive analysis, and the added expressivity seemed minor, so I've subset the proposal to have it so that escaped local variables are never consumable. We can potentially implement the originally proposed behavior later.
-
We are leaving
self
withindeinit
s immutable for now, while we discuss the best way to allow for deinits to perform mutations and consumptions while mitigating the potential for accidental infinite recursion by implicit deinits elsewhere.