Find a file
Paul Berry 506ac7f953 Rework linker type inference using ExprBuilder.
This CL changes the way linker type inference works.  Instead of
walking the operations in an UnlinkedExpr in order and inferring types
directly, it first builds an AST for the expression using ExprBuilder,
then uses ResolverVisitor to resolve the AST and perform type
inference.

This helps ensure that summary type inference and ordinary AST-based
type inference produce the same result, since they now use the same
core algorithm.  In particular, this means that summary type inference
now does downwards inference properly.

Since the ResolverVisitor makes greater use of the element model than
the rest of the linker, this required implementing additional methods
in the linker's element model.

This CL includes some minor fixes to ExprBuilder that were uncovered
during testing.  It also contains some minor changes to
ResolverVisitor to make it work during linking.

Fixes #32525.
Fixes #32394.

Change-Id: I5ec9b2bf5565ad30b8cc856475334323dc118da8
Reviewed-on: https://dart-review.googlesource.com/48741
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-03-29 17:16:39 +00:00
build [infra] Use a jessie sysroot for sanitizer builds 2018-03-09 11:52:25 +00:00
client
docs Remove ~/ special casing in static type system. 2018-03-23 22:39:29 +00:00
pkg Rework linker type inference using ExprBuilder. 2018-03-29 17:16:39 +00:00
runtime [Kernel, VM runtime] Hook up bool checks in strong mode (fixes #32336). 2018-03-29 16:10:52 +00:00
samples Prepare additional lib, html, samples statuses: this embeds of d8-hostcheck results 2018-03-08 21:10:37 +00:00
samples-dev New methods on Iterable, List, Set, Queue, Map. 2018-02-07 06:12:53 +00:00
sdk [dart:io] Adds IOOverrides.socketConnect 2018-03-28 23:07:49 +00:00
tests Rework linker type inference using ExprBuilder. 2018-03-29 17:16:39 +00:00
third_party [infra] Roll boringssl forward. Use clang for arm on Linux. 2018-03-08 18:09:28 +00:00
tools Remove dart:isolate runtime support in DDC 2018-03-28 19:42:08 +00:00
utils Add server category for dart2js 2018-03-23 00:40:55 +00:00
.clang-format VM: Re-format to use at most one newline between functions 2017-07-13 08:08:37 -07:00
.gitattributes Migrate the lingering language_strong tests over to language_2. 2017-10-27 23:44:08 +00:00
.gitignore
.gn
.mailmap
.packages Remove pkg/browser from SDK source – use mirror 2018-03-21 20:31:24 +00:00
AUTHORS
BUILD.gn [VM] Exclude runtime/bin:precompiler_entry_points_json from being generated for ia32/dbc 2018-02-27 10:57:47 +00:00
CHANGELOG.md [dart:io] Adds IOOverrides.socketConnect 2018-03-28 23:07:49 +00:00
codereview.settings Update codereview.settings to Gerrit (dart-review.googlesource.com) 2017-09-04 12:52:09 +00:00
dartdoc_options.yaml Update dartdoc to v0.18.0 and tag library categories. 2018-03-27 16:19:34 +00:00
DEPS Bring in the latest pub 2018-03-28 21:50:28 +00:00
LICENSE
PATENTS
PRESUBMIT.py Move new tests from tests/isolate to tests/lib_2/isolate. 2018-02-22 10:03:23 +00:00
README.dart-sdk
README.md
WATCHLISTS Creates a watchlist for sdk/lib/_http and adds me to it 2018-01-02 18:39:53 +00:00

Dart

Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.

Using Dart

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.

Building Dart

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.

Contributing to Dart

The easiest way to contribute to Dart is to file issues.

You can also contribute patches, as described in Contributing.

License & patents

See LICENSE and PATENTS.