fix #32785, implement typedef equality in dartdevc This change expands typedefs into their underlying function type in the compiler. Typedefs no longer exist at runtime in DDC, so they now have similar equality and identity behavior as other function types. The compiler used to preserve typedefs so they could have a better toString. But over time that support has been almost entirely lost; the caching for function/interface types eliminates typedefs, and DDC+Kernel does not appear to get any TypedefTypes from the common front end. So in practice typedef types were almost never present at runtime. Because of this, we can remove the remaining support with very little user visible effect. This also brings DDC's canonicalization roughly in line with dart2js for compile-time typedefs, so frameworks like Angular will be able to continue their use of `identical` for fast type comparisons. This CL also fixes DDC's type caching for generic function types (typeHashCode was incorrect for them), and has some refactoring to improve names/comments and make the SDK runtime code more clear. Change-Id: I4e34c0c8f737a8535ba474a4683967ff41bcd3c8 Reviewed-on: https://dart-review.googlesource.com/74664 Commit-Queue: Jenny Messerly <jmesserly@google.com> Reviewed-by: Alan Knight <alanknight@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.