Open jorat1346 opened 9 years ago
That's because the translator is implemented in continuation-passing style. It is (indirectly) recursive even for a sequence of statements. All the major Dart implementations (the VM and dart2js) should soon have native support, so we're unlikely to change the translation at this point.
As a workaround, you can split the function up or (in the test case above) await in a loop :)
Yea, I know I can use a loop ;) but I am actually experimenting with code that have that much of await and that I can't put into a loop. And it's hard to diagnostic
@jorat1346 I sympathize. I don't have a great suggestion other than breaking the function up and I understand it's not necessarily that simple.
As a practical matter, there is a size limit on functions in both the VM and dart2js implementations. It's still too bad that the async_await transformer has such a (relatively) small size limit.
Having too many await in a function cause the compiler to crash, limit seen to be about 800:
Code: