chore: update dependency dart_style to v3 #112
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:
^2.3.6
->^3.0.0
3.0.1
Release Notes
dart-lang/dart_style (dart_style)
v3.0.0
Compare Source
This is a large change. Under the hood, the formatter was almost completely
rewritten, with the codebase now containing both the old and new
implementations. The old formatter exists to support the older "short" style
and the new code implements the new "tall" style.
The formatter uses the language version of the formatted code to determine
which style you get. If the language version is 3.6 or lower, the code is
formatted with the old style. If 3.7 or later, you get the new tall style. You
typically control the language version by setting a min SDK constraint in your
package's pubspec.
In addition to the new formatting style, a number of other API and CLI changes
are included, some of them breaking:
Support project-wide page width configuration. By long request, you can
now configure your preferred formatting page width on a project-wide basis.
When formatting files, the formatter will look in the file's directory and
any surrounding directories for an
analysis_options.yaml
file. If it findsone, it looks for the following YAML:
If it finds a
formatter
key containing a map with apage_width
key whosevalue is an integer, then that is the page width that the file is formatted
using. Since the formatter will walk the surrounding directories until it
finds an
analysis_options.yaml
file, this can be used to globally set thepage width for an entire directory, package, or even collection of packages.
Support 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 use the default page width of 80).
Support opting out a region of code from formatting. In code formatted
using the new tall 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 can help
a reader understand the data, like large lists of numbers.
Remove support for fixes and
--fix
. The tools that come with the DartSDK provide two ways to apply automated changes to code:
dart format --fix
and
dart fix
. The former is older and used to be faster. But it can onlyapply a few fixes and hasn't been maintained in many years. The
dart fix
command is actively maintained, can apply all of the fixes that
dart format --fix
could apply and many many more.In order to avoid duplicate engineering effort, we decided to consolidate on
dart fix
as the one way to make automated changes that go beyond the simpleformatting and style changes that
dart format
applies.The ability to apply fixes is also removed from the
DartFormatter()
libraryAPI.
Make the language version parameter to
DartFormatter()
mandatory. Thisway, the formatter always knows what language version the input is intended
to be treated as. Note that a
// @​dart=
language version comment, ifpresent, overrides the specified language version. You can think of the
version passed to the
DartFormatter()
constructor as a "default" languageversion which the file's contents may then override.
If you don't particularly care about the version of what you're formatting,
you can pass in
DartFormatter.latestLanguageVersion
to unconditionally getthe latest language version that the formatter supports. Note that doing so
means you will also implicitly opt into the new tall style.
This change only affects the library API. When using the formatter from the
command line, you can use
--language-version=
to specify a language versionor pass
--language-version=latest
to use the latest supported version. Ifomitted, the formatter will look in the surrounding directories for a package
config file and infer the language version for the package from that, similar
to how other Dart tools behave like
dart analyze
anddart run
.Remove the old formatter executables and CLI options. Before the
dart format
command was added to the core Dart SDK, users accessed theformatter by running a separate
dartfmt
executable that was included withthe Dart SDK. That executable had a different CLI interface. For example, you
had to pass
-w
to get it to overwrite files. When we addeddart format
,we took that opportunity to revamp the CLI options.
However, the dart_style package still exposed an executable with the old CLI.
If you ran
dart pub global activate dart_style
, this would give you adartfmt
(anddartformat
) executable with the old CLI options. Now thatalmost everyone is using
dart format
, we have removed the old CLI and theold package executables.
You can still run the formatter on the CLI through the package (for example,
if you want to use a particular version of dart_style instead of the one
bundled with your Dart SDK). But it now uses the exact same CLI options and
arguments as the
dart format
command. You can invoke it withdart run dart_style:format <args...>
.Treat the
--stdin-name
name as a path when inferring language version.When reading input on stdin, the formatter still needs to know what language
version to parse the code as. If the
--stdin-name
option is set, then thatis 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.
Apply class modifiers to API classes. The dart_style package exposes only
a few classes in its public API:
DartFormatter
,SourceCode
,FormatterException
, andUnexpectedOutputException
. None were everintended to be extended or implemented. They are now all marked
final
tomake that intention explicit.
Require
package:analyzer
>=6.5.0 <8.0.0
.Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ 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.