commit | f4b649ca4f3b7b195512cabe7366c8881d943d3e | [log] [tgz] |
---|---|---|
author | Aske Simon Christensen <askesc@google.com> | Mon Feb 18 15:21:03 2019 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Mon Feb 18 15:21:03 2019 +0000 |
tree | 3c9eb25d40384c724725d7576613bd3709bf4e88 | |
parent | 5e70883859c311579e84a73ff0f6682cc5a9d973 [diff] |
[CFE] Propagate unevaluated constants upward. When evaluating a constant expression, first evaluate all children. If any of these turn out to be unevaluated, produce a partially evaluated clone of the expression as a new unevaluated constant. For lazy operators, if the left-hand side turns out unevaluated, the right-hand side is included unmodified (not partially evaluated) in the resulting unevaluated constant expression tree. The implementation is optimized for the typical case of no unevaluated constants. The intent is that the handling of unevaluated constants introduces as little overhead as possible in this case. Change-Id: Ief8d36357fac01c07bc0049aede0888cd3bc7999 Reviewed-on: https://dart-review.googlesource.com/c/93029 Commit-Queue: Aske Simon Christensen <askesc@google.com> Reviewed-by: Kevin Millikin <kmillikin@google.com>
Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.
Visit the dartlang.org to learn more about the language, tools, getting started, and more.
Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.
If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.
There are more documents on our wiki.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.