Chromium Code Reviews
DescriptionThis CL deals with handling of return statements in functions modified as
async. These functions contain a so-called async closure (with the actual body)
that should not just return when encountering a return statement, but rather call
the completer first and then return (null).
Previously the last return node has been replaced with a completer.complete call.
This does not work for return statements in nested blocks or try-catch-finally
blocks.
Instead of replacing return statements we now call the completer after
resolving all steps necessary for return nodes, i.e., right after inlining all
finally blocks.
We also need "continuation" returns later on that do not complete the
completer. We differentiate by whether a return node has its scope set or not.
BUG=
R=hausner@google.com, srdjan@google.com
Committed: https://code.google.com/p/dart/source/detail?r=39167
Patch Set 1 : #
Total comments: 2
Patch Set 2 : add scope via sequencenode add method #
Total comments: 6
Patch Set 3 : first set of comments #
Total comments: 2
Patch Set 4 : #Patch Set 5 : update language test status #
Total comments: 1
Messages
Total messages: 11 (0 generated)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||