fix(sdk): update dependency dart to >=3.7.0 <4.0.0 #689
+1
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
>=3.6.2 <4.0.0
->>=3.7.0 <4.0.0
Release Notes
dart-lang/sdk (dart)
v3.7.0
Compare Source
Released on: Unreleased
Language
Dart 3.7 adds wildcard variables to the language. To use them, set your
package's [SDK constraint][language version] lower bound to 3.7 or greater
(
sdk: '^3.7.0'
).Wildcard Variables
Local variables and parameters named
_
are now non-binding and they canbe declared multiple times without collisions. You will no longer be able to use
these variables nor access their values. All wildcard variable declaration types
that have this behavior are described in the
wildcard variables specification.
Top-level variables, top-level function names, type names, member names, etc.
are unchanged. They can be named
_
and used as they are today.These are a few examples of where wildcard variables can be used:
Other Language Changes
Null
using
is
oras
, this type promotion is now properly accounted for inreachability analysis. This makes the type system more self-consistent,
because it mirrors the behavior of promoted local variables. This change is
not expected to make any difference in practice.
Tools
Analyzer
prefer_relative_imports
andalways_use_package_imports
lint rules.~/
operation into/
, when the~/
operation is not available.
await
if the expression is currentlynot assignable, but awaiting it would make it assignable.
forEach
call into a for-loop nowconsider the
prefer_final_in_for_each
andalways_specify_types
lintrules.
cascade_invocations
lint rule violation.Expanded
widget,and with a
Flexible
widget.else-block to read
else if
.the
show
combinator on an existing import.import directive with the given prefix.
hide
combinator.
show
combinator, and optionally a prefix.initializer of a late field.
prefer_const_declarations
lint rule, preferring to addconst
to a variabledeclaration rather than the initial value.
on
keyword in an extension declaration.override.
(Thanks @FMorschel for the above enhancements!
sort_constructors_first
lintrule.
function-typed parameters.
strict_top_level_inference
][strict_top_level_inference] lint rule.unnecessary_underscores
][unnecessary_underscores] lint rule.specify_nonobvious_property_types
][specify_nonobvious_property_types] lint rule.omit_obvious_property_types
][omit_obvious_property_types] lint rule.unnecessary_async
][unnecessary_async] lint rule.unsafe_variance
][unsafe_variance] lint rule.package_api_docs
][package_api_docs] lint rule.unsafe_html
][unsafe_html] lint rule.Dart format
The formatter implements a new style better suited for the kind of
declarative code that many Dart users are writing today. The new style looks
similar to the style you get when you add trailing commas to argument lists,
except that now the formatter will add and remove those commas for you.
The
dart format
command uses the language version ofeach input file to determine which style it gets. If the language version is 3.6
or lower, the code is formatted with the old style. If 3.7 or later, it gets the
new tall style.
You typically control the language version by setting a min SDK constraint in
your package's pubspec. This means that when you update the SDK
constraint in your pubspec to move to 3.7, you are also opting in to the new
style.
In order to correctly determine the language version of each file it formats,
dart format
(like otherdart
commands) looks for apackage_config.json
file surrounding the files being formatted. This means that you need to run
dart pub get
before formatting code in your package. If you have formatchecks in your continuous integration server, you'll want to make sure it runs
dart pub get
too.We don't intend to support both styles indefinitely. At some point in the
future when most of the ecosystem is on 3.7 or later, support for the old style
will be removed.
In addition to the new formatting style, a number of other changes are included,
some of them breaking:
Project-wide page width configuration. By long request, you can now
configure your preferred formatting page width on a project-wide basis. When
formatting a file, the formatter will look in the file's directory and any
surrounding directories for an
analysis_options.yaml
file. If it finds one,it looks for YAML like so:
If it finds a page width matching that schema, then the file is formatted
using that width. Since the formatter will walk the surrounding directories
until it finds an
analysis_options.yaml
file, this can be used to globallyset the page width for an entire directory, package, or even collection of
packages. Since
analysis_options.yaml
files already support aninclude
key to reference other
analysis_options.yaml
files, you can define a singleconfiguration and share it across a number of packages.
Opting out a region of code from formatting. In code formatted using the
new style, you can use a pair of special marker comments to opt a region of
code out of automated formatting:
The comments must be exactly
// dart format off
and// dart format on
.A file may have multiple regions, but they can't overlap or nest.
This can be useful for highly structured data where custom layout helps the
reader understand the data, like large lists of numbers.
Overriding the page width for a single file. In code formatted
using the new tall style, you can use a special marker comment to control the
page width that it's formatted using:
This comment must appear before any code in the file and must match that
format exactly. The width set by the comment overrides the width set by any
surrounding
analysis_options.yaml
file.This feature is mainly for code generators that generate and immediately
format code but don't know about any surrounding
analysis_options.yaml
that might be configuring the page width. By inserting this comment in the
generated code before formatting, it ensures that the code generator's
behavior matches the behavior of
dart format
.End users should mostly use
analysis_options.yaml
for configuring theirpreferred page width (or do nothing and continue to use the default page width
of 80).
Breaking change: Remove support for
dart format --fix
. Instead, usedart fix
. It supports all of the fixes thatdart format --fix
could applyand many more.
Treat the
--stdin-name
name as a path when inferring language version.When reading input on stdin, the formatter still needs to know its language
version to know what style to apply. If the
--stdin-name
option is set, thenthat is treated as a file path and the formatter looks for a package config
surrounding that file path to infer the language version from.
If you don't want that behavior, pass in an explicit language version using
--language-version=
, or use--language-version=latest
to parse the inputusing the latest language version supported by the formatter.
If
--stdin-name
and--language-version
are both omitted, then theformatter parses stdin using the latest supported language version.
Rename the
--line-length
option to--page-width
. This is consistentwith the public API, internal implementation, and docs, which all use "page
width" to refer to the limit that the formatter tries to fit code into.
The
--line-length
name is still supported for backwards compatibility, butmay be removed at some point in the future. You're encouraged to move to
--page-width
. Use of this option (however it's named) is rare, and willlikely be even rarer now that project-wide configuration is supported, so
this shouldn't affect many users.
Dart to Javascript Compiler (dart2js)
The dart2js compiler which is invoked when the command 'dart compile js' is
used has been switched to use an AOT snapshot instead of a JIT snapshot.
Dart Development Compiler (dartdevc)
The dartdevc compiler and kernel_worker utility have been switched to use an
AOT snapshot instead of a JIT snapshot, the SDK build still includes a JIT
snapshot of these tools as package build/build_web_compiler depends on it. The
AOT snapshot can be used as follows to run DDC /bin/dartaotruntime /bin/snapshots/dartdevc_aot.dart.snapshot
Libraries
dart:html
dart:html
is marked deprecated and will be removed in an upcoming release.Users should migrate to using
dart:js_interop
andpackage:web
. See#59716.
dart:indexed_db
dart:indexed_db
is marked deprecated and will be removed in an upcomingrelease. Users should migrate to using
dart:js_interop
andpackage:web
.See #59716.
dart:io
HttpException
will be thrown byHttpClient
andHttpServer
if aNUL
(
0x00
) appears in a received HTTP header value.dart:svg
dart:svg
is marked deprecated and will be removed in an upcoming release.Users should migrate to using
dart:js_interop
andpackage:web
. See#59716.
dart:web_audio
dart:web_audio
is marked deprecated and will be removed in an upcomingrelease. Users should migrate to using
dart:js_interop
andpackage:web
.See #59716.
dart:web_gl
dart:web_gl
is marked deprecated and will be removed in an upcoming release.Users should migrate to using
dart:js_interop
andpackage:web
. See#59716.
dart:js
dart:js
is marked deprecated and will be removed in an upcoming release.Users should migrate to using
dart:js_interop
. See #59716.dart:js_util
dart:js_util
is marked deprecated and will be removed in an upcomingrelease. Users should migrate to using
dart:js_interop
. See #59716.Configuration
📅 Schedule: Branch creation - "after 6pm every weekday,every weekend" in timezone Australia/Sydney, Automerge - "after 6pm every weekday,every weekend" in timezone Australia/Sydney.
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.