Find a file
Johnni Winther 2b79d2b747 [cfe] Refactor TypeBuilders
Various cleanups to the TypeBuilder classes:

TypeBuilder:
* Remove `origin` parameter from TypeBuilder.build and instead make
  FunctionType.typedefType mutable and set if after creation.
* Remove `charOffset` and `fileUri` parameters from
  TypeBuilder.buildSupertype/buildMixedInType
* Remove `bind`, `resolveIn`, and `check` from TypeBuilder so that
  these are only present on NamedTypeBuilder
* Remove TypeBuilder.buildTypeLiteralType and instead pass an
  argument to NamedTypeBuilder that determines what type to create
  on `build`.

NamedTypeBuilder:
* Make NamedTypeBuilder.instanceTypeVariableAccess private
* Add NamedTypeBuilder.forDartType for prebuilt types
* Add NamedTypeBuilder.forInvalidType for types created for errors
* Make NamedTypeBuilder.declaration private and corresponding getter
* Check most type use errors on NamedTypeBuilder.bind
* Make NamedTypeBuilder helper methods private
* Add `TypeVariableBuilder.isClassParameter` to support checking for
  valid type variable use through the `NamedTypeBuilder.bind` method.
* Remove checking of type variable in static context from BodyBuilder
  since it is now checking on `NamedTypeBuilder.bind`.

FunctionTypeBuilder:
* Cache result of FunctionTypeBuilder.build

TypeBuilderComputer:
* Cache "constant" type declarations in TypeBuilderComputer
Change-Id: Ibaedcb255487eecc5efe70b84e5cbd5a118c1e0b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/239023
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2022-03-28 18:22:50 +00:00
.dart_tool Latest pkg:shelf 2022-03-23 16:01:32 +00:00
.github [infra] Add OWNERS to the Dart SDK 2022-02-14 14:06:34 +00:00
benchmarks Remove size benchmarks for discontinued snapshots 2022-02-16 12:27:41 +00:00
build [build] Fix building on an ARM64 Linux host. 2022-03-22 00:50:18 +00:00
docs update breaking change policy 2022-02-24 09:17:23 +00:00
pkg [cfe] Refactor TypeBuilders 2022-03-28 18:22:50 +00:00
runtime [vm/test] Make vm/cc/TTS_Regress_CidRangeChecks less brittle. 2022-03-28 11:20:52 +00:00
samples [infra] Add OWNERS to the Dart SDK 2022-02-14 14:06:34 +00:00
samples-dev [infra] Add OWNERS to the Dart SDK 2022-02-14 14:06:34 +00:00
samples_2 [infra] Add OWNERS to the Dart SDK 2022-02-14 14:06:34 +00:00
sdk [vm/ffi] Add Char C type 2022-03-28 09:46:56 +00:00
tests [cfe] Refactor TypeBuilders 2022-03-28 18:22:50 +00:00
third_party [test] Widen ownership of test status files. 2022-03-10 09:49:16 +00:00
tools [dart:html] Fix Performance.mark typing to work with Firefox 2022-03-22 19:37:00 +00:00
utils [infra] Add OWNERS to the Dart SDK 2022-02-14 14:06:34 +00:00
.clang-format
.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 Revert "Auto-generate the package_config.json file on gclient sync." 2022-03-01 18:20:29 +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 Revert "Auto-generate the package_config.json file on gclient sync." 2022-03-01 18:20:29 +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 [vm] Support RISC-V. 2022-01-20 00:57:57 +00:00
BUILD.gn Make dart_target_arch filters for 32-bit intel consistent 2022-03-15 01:52:21 +00:00
CHANGELOG.md [dart:html] Fix Performance.mark typing to work with Firefox 2022-03-22 19:37:00 +00:00
codereview.settings [infra] Default presubmits to use python3 2021-08-24 08:20:47 +00:00
compile_output.txt Add Identifier class and replace most TypeAnnotation uses with it. 2022-01-27 18:03:12 +00:00
CONTRIBUTING.md Add more details to contributing docs 2022-03-16 07:56:58 +00:00
DEPS update package:async 2022-03-28 17:47:17 +00:00
LICENSE Update LICENSE 2021-04-08 07:57:10 +00:00
OWNERS [infra] Fix syntax error in OWNERS 2022-03-03 10:39:39 +00:00
PATENT_GRANT Rename patent file 2019-08-16 12:03:17 +00:00
PRESUBMIT.py Revert "Auto-generate the package_config.json file on gclient sync." 2022-03-01 18:20:29 +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 link to published advisories 2022-02-08 19:45:07 +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.