Shared type analysis: rework docs and add tests Update the documentation for TypeAnalyzer and related classes so that they explain the behavior of each method in terms of its effect on a stack. (The test logic already contained an implementation of such a stack; production clients may or may not need to keep a stack depending on their requirements). This should make it more straightforward to write clients of TypeAnalyzer. Also, beef up the test logic in flow_analysis_mini_ast.dart and so that: - In the event of a test error, a source location is shown, so that it's easy to debug and/or update the test. This source location is obtained by parsing `StackTrace.current`, an approach which I wouldn't recommend for production code, but which is servicable for these low-level tests. - Items that are popped off the stack are checked to make sure they have the expected kind. The kind-checking caught a minor flaw in the previous test logic: it was failing to distinguish expressions from expression statements. This as been corrected, and as a result, a few test expectations in type_inference_test.dart needed to be updated. Change-Id: I0a2b257f6e970478c0c8e1b663dd5a367e7f24ec Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/257486 Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Dart is:
Optimized for UI: Develop with a programming language specialized around the needs of user interface creation.
Productive: Make changes iteratively: use hot reload to see the result instantly in your running app.
Fast on all platforms: Compile to ARM & x64 machine code for mobile, desktop, and backend. Or compile to JavaScript for the web.
Dart's flexible compiler technology lets you run Dart code in different ways, depending on your target platform and goals:
Dart Native: For programs targeting devices (mobile, desktop, server, and more), Dart Native includes both a Dart VM with JIT (just-in-time) compilation and an AOT (ahead-of-time) compiler for producing machine code.
Dart Web: For programs targeting the web, Dart Web includes both a development time compiler (dartdevc) and a production time compiler (dart2js).
Dart is free and open source.
See LICENSE and PATENT_GRANT.
Visit dart.dev to learn more about the language, tools, and to find codelabs.
Browse pub.dev for more packages and libraries contributed by the community and the Dart team.
Our API reference documentation is published at api.dart.dev, based on the stable release. (We also publish docs from our beta and dev channels, as well as from the primary development branch).
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.