Find a file
Paul Berry 0b94228695 Enforce that all ErrorReporter arguments come from a limited set of types.
This change ensures that the only types ever passed to ErrorReporter
arguments are String, DartType, int, Uri, or Element.  A few call
sites had to be changed so that instead of passing in AST nodes they
passed in the result of calling `toString` on those AST nodes.

In future CLs, I plan to move toward a system where instead of passing
the message arguments to ErrorReporter as a list of `Object`, we call
a `withArguments` method that's specific to each error; that method
will have a specific list of argument types that it supports, so that
if we accidentally pass the wrong things into an error message, the
problem will be detected at compile time (instead of the user just
seeing a confusing error message).

The `withArguments` methods will be code generated from annotations in
the analyzer's `messages.yaml` file.  Keeping the set of types
supported by those `withArguments` messages small should help simplify
the code generation process, and provide flexibility for how errors
are represented in the future.

Change-Id: I4a793db2fe5b1344199b770898634b61be41ad11
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/216301
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-11-02 14:23:12 +00:00
.dart_tool tools/package_deps: allow "normal" deps as long as there is a path override 2021-10-26 18:26:01 +00:00
.github "dartfmt" -> "dart format" in issue template. 2021-05-19 00:39:43 +00:00
benchmarks Remove dartfmt from SDK artifact size benchmark. 2021-10-01 15:45:53 +00:00
build [build] Make app snapshot build failures copy/pastable. 2021-10-14 11:51:32 +00:00
client
docs Create a hyperlink to the Dart SDK issue tracker 2021-11-02 09:54:51 +00:00
pkg Enforce that all ErrorReporter arguments come from a limited set of types. 2021-11-02 14:23:12 +00:00
runtime [vm, compiler] Remove --fields_may_be_reset. 2021-11-01 17:41:41 +00:00
samples [vm] Remove support for dart-ext: imports 2021-09-02 14:14:35 +00:00
samples-dev/swarm [infra] Migrate scripts to python3 2021-04-15 10:10:20 +00:00
samples_2 [vm] Remove support for dart-ext: imports 2021-09-02 14:14:35 +00:00
sdk Fix a bug where windows would not currently follow symlinks in stat() calls. 2021-11-01 16:33:01 +00:00
tests [vm, compiler] Remove --fields_may_be_reset. 2021-11-01 17:41:41 +00:00
third_party rev the build of devtools; add a 'dart devtools' command 2021-08-20 16:25:24 +00:00
tools [dart2js] Provide unit tests with the sound null safety fileset. 2021-10-29 20:29:40 +00:00
utils [ddc] Add pkg/dev_compiler as a dep for compiling SDK 2021-10-21 22:45:16 +00:00
.clang-format VM: Re-format to use at most one newline between functions 2017-07-13 08:08:37 -07:00
.gitattributes [web] rename suite dart2js -> web. 2021-02-04 23:11:32 +00:00
.gitconfig [infra] Add documentation to .gitconfig 2018-06-11 18:24:16 +00:00
.gitignore [vm] Remove traces of LLVM backend 2021-03-09 20:37:20 +00:00
.gn [infra] Migrate scripts to python3 2021-04-15 10:10:20 +00:00
.mailmap fix my name in .mailmap 2018-09-11 01:45:52 +00:00
.packages Remove pkg:resource from .packages 2021-10-08 21:01:38 +00:00
.style.yapf Mass format python with yapf 2019-08-05 20:34:31 +00:00
.vpython [infra] Add .vpython spec to fix gsutil on the bots (#31065) 2018-10-11 15:11:35 +00:00
AUTHORS [runtime/vm] ARM64: Support unaligned memory accesses for regex. 2019-10-15 20:11:40 +00:00
BUILD.gn [build] Add support for building for Fuchsia from Mac. 2021-10-13 21:14:56 +00:00
CHANGELOG.md Bump pub to 0035a40f25d027130c0314571da53ffafc6d973b 2021-10-29 13:05:39 +00:00
codereview.settings [infra] Default presubmits to use python3 2021-08-24 08:20:47 +00:00
CONTRIBUTING.md master branch to main 2021-09-15 06:22:23 +00:00
DEPS Rev DevTools version to 2.8.0 2021-11-01 21:52:38 +00:00
LICENSE Update LICENSE 2021-04-08 07:57:10 +00:00
PATENT_GRANT Rename patent file 2019-08-16 12:03:17 +00:00
PRESUBMIT.py Remove references to dartfmt in various comments and docs. 2021-10-01 00:56:14 +00:00
README.dart-sdk [sdk] - Update README file in sdk. 2021-10-25 16:08:40 +00:00
README.md master => main 2021-09-10 08:02:49 +00:00
sdk_args.gni Allow configuring the destination of the SDK in the build output directory 2021-06-29 18:45:29 +00:00
SECURITY.md Add a security policy for the Dart SDK 2021-10-01 13:01:31 +00:00
WATCHLISTS [dart2js] More shared_messages.dart cleanup 2021-09-22 19:20:54 +00:00

Dart

A client-optimized language for fast apps on any platform

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 platforms illustration

License & patents

Dart is free and open source.

See LICENSE and PATENT_GRANT.

Using Dart

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).

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.