Yep.
I’m not sure that’s a good idea; it seems to me that that would make certain kinds of abstraction very difficult to write and force a lot of awkward restructuring.
What abstraction and restructuring do you have in mind?
I think programmers should be able to reason about what happens without a suspension across calls if they need to, and I don’t think they expect calls from an actor to itself to themselves cause a suspension.
But the callee is still free to await
a call to a different actor, so you can't exactly reason about much on that basis without breaking the abstraction barrier between functions, i.e. you have to know about the implementation of the callee to know that there's no suspension involved in the call. It seems to me that the way to know that there's no suspension is that the compiler hasn't forced you to await
, and anything else makes for a really fragile programming model.