mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 06:20:13 +00:00
65b19ffa3c
Translate assert statements in async functions. The translation of the condition subexpression can produce a sequence of statements that have been hoisted out of it. These need to be guarded so they are executed only when asserts are enabled. For this purpose, we introduce an AssertBlock. The semantics of the assert block: assert { s0; ...; sn; } is the same as: if (assertsEnabled) { s0; ...; sn; } where assertsEnabled is a more primitive nullary expression that is true iff. assertions are enabled. We chose not to encode this using a construct like assertsEnabled because (1) we would have to support it appearing as an arbitrary expression which we don't currently need and (2) it requires deeper pattern matching to detect and skip the guarded code when desired. The translation is more complicated because if there is a message subexpression in an assert, it is conditionally evaluated only if the assert's condition is false. Fixes https://github.com/dart-lang/sdk/issues/28498 Change-Id: I0912a57104ede3160533e49f65b6fb79b76f1500 Reviewed-on: https://dart-review.googlesource.com/46442 Commit-Queue: Kevin Millikin <kmillikin@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com> |
||
---|---|---|
.. | ||
bin | ||
include | ||
lib | ||
observatory | ||
platform | ||
tests/vm | ||
third_party | ||
tools | ||
vm | ||
.gitignore | ||
BUILD.gn | ||
codereview.settings | ||
CPPLINT.cfg | ||
PRESUBMIT.py | ||
runtime_args.gni |