Reland "[dart:js_interop] Add literal constructors for inline classes" This reverts commit 49f85335d59b63882beeffd81a047262bd56ea7c. Reason for revert: Fixes the original breakage by adding an explicit cast for the map function that's used to compute positional args of the stub. Adds refactoring to better separate out the logic between procedure-level and invocation-level lowering configs. Also refactors optional argument functions so that they can use the invocation-level lowering configs created in this CL. Also fixes a small issue where object literal constructors wouldn't work in dart2js if the surrounding library didn't have a @JS annotation. Original change's description: > Revert "[dart:js_interop] Add literal constructors for inline classes" > > This reverts commit 1f6d4ae1a885f8958c2624381390dfa9a146d165. > > Reason for revert: Broke Flutter with dart2wasm > > Original change's description: > > [dart:js_interop] Add literal constructors for inline classes > > > > Adds @ObjectLiteral annotation to denote object literal constructors, > > and implements it in all the backends. For dart2js, this involves > > modifying the SSA and for dart2wasm, we create a one-per-shape > > forwarding procedure to a specialized JS method that returns the > > literal. This also modifies @anonymous semantics in dart2wasm to > > be consistent with the other backends. > > > > CoreLibraryReviewExempt: Backend-specific, just adding annotation. > > Change-Id: I4d7a9ea9ed097f4f378709b40f8bd74f02e26b23 > > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/283922 > > Commit-Queue: Srujan Gaddam <srujzs@google.com> > > Reviewed-by: Joshua Litt <joshualitt@google.com> > > Change-Id: Ifce611e1150d8aa275f9e312743bded56a572176 > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/285342 > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> > Reviewed-by: Joshua Litt <joshualitt@google.com> > Commit-Queue: Srujan Gaddam <srujzs@google.com> CoreLibraryReviewExempt: Reland. Change-Id: Iac52e9ff152dc06788d78b7b18549c7005921b74 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/285346 Reviewed-by: Joshua Litt <joshualitt@google.com> Commit-Queue: Srujan Gaddam <srujzs@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.