mirror of
https://github.com/dart-lang/sdk
synced 2024-10-01 18:59:48 +00:00
changelog: sort and front-load new lints in 2.19 and 2.18 sections
Some other whitespace tweaks Dropped a bunch of gratuitous `[]` bits next to links Change-Id: I32b46138d3ff7df68b8a4dab80b346de20fee73f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/274088 Auto-Submit: Kevin Moore <kevmoo@google.com> Commit-Queue: Kevin Moore <kevmoo@google.com> Reviewed-by: Michael Thomsen <mit@google.com>
This commit is contained in:
parent
092bdb17d3
commit
1b79875bb7
146
CHANGELOG.md
146
CHANGELOG.md
|
@ -3,7 +3,7 @@
|
||||||
### Language
|
### Language
|
||||||
|
|
||||||
- **Breaking change** [#49635][]: Flag additional code as unreachable due to
|
- **Breaking change** [#49635][]: Flag additional code as unreachable due to
|
||||||
types `Null` and `Never`. Several unusual constructs that lead to unreachable
|
types `Null` and `Never`. Several unusual constructs that lead to unreachable
|
||||||
code are now recognized by flow analysis:
|
code are now recognized by flow analysis:
|
||||||
|
|
||||||
- Control flow after an expression of the form `e ?? other` or `e ??= other`,
|
- Control flow after an expression of the form `e ?? other` or `e ??= other`,
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
`noSuchMethod`. If a concrete class implements an interface containing a
|
`noSuchMethod`. If a concrete class implements an interface containing a
|
||||||
member with a name that's private to different library, and does not inherit
|
member with a name that's private to different library, and does not inherit
|
||||||
an implementation of that interface member, a invocation of that member will
|
an implementation of that interface member, a invocation of that member will
|
||||||
result in an exception getting thrown. Previously, such attempts would result
|
result in an exception getting thrown. Previously, such attempts would result
|
||||||
in the call being diverted to the `noSuchMethod` method.
|
in the call being diverted to the `noSuchMethod` method.
|
||||||
|
|
||||||
This change closes a loophole in Dart's privacy system, where another library
|
This change closes a loophole in Dart's privacy system, where another library
|
||||||
|
@ -48,17 +48,15 @@
|
||||||
dependencies during top-level type inference.
|
dependencies during top-level type inference.
|
||||||
|
|
||||||
Previously, some of these dependencies were ignored, based on an analysis
|
Previously, some of these dependencies were ignored, based on an analysis
|
||||||
determining that they could not influence the inferred type. However,
|
determining that they could not influence the inferred type. However, this
|
||||||
this analysis was complex, differed slightly among tools, and had become
|
analysis was complex, differed slightly among tools, and had become much more
|
||||||
much more complex due to other changes (especially, enhanced flow
|
complex due to other changes (especially, enhanced flow analysis).
|
||||||
analysis).
|
|
||||||
|
|
||||||
With this change, all tools treat these cyclic dependencies in the
|
With this change, all tools treat these cyclic dependencies in the same way,
|
||||||
same way, the analysis is well-understood, and, arguably, the code is
|
the analysis is well-understood, and, arguably, the code is more readable.
|
||||||
more readable.
|
|
||||||
|
|
||||||
Breakage is mitigated by adding a declared type to one top-level
|
Breakage is mitigated by adding a declared type to one top-level declaration
|
||||||
declaration per cycle which is now an error.
|
per cycle which is now an error.
|
||||||
|
|
||||||
[#50383]: https://github.com/dart-lang/sdk/issues/50383
|
[#50383]: https://github.com/dart-lang/sdk/issues/50383
|
||||||
|
|
||||||
|
@ -75,8 +73,8 @@
|
||||||
|
|
||||||
#### `dart:convert`
|
#### `dart:convert`
|
||||||
|
|
||||||
- **Breaking change** [#34233][]: The previously deprecated API
|
- **Breaking change** [#34233]: The previously deprecated API
|
||||||
[`DEFAULT_BUFFER_SIZE`][] in `JsonUtf8Encoder` has been removed.
|
[`DEFAULT_BUFFER_SIZE`] in `JsonUtf8Encoder` has been removed.
|
||||||
|
|
||||||
[#34233]: https://github.com/dart-lang/sdk/issues/34233
|
[#34233]: https://github.com/dart-lang/sdk/issues/34233
|
||||||
[`DEFAULT_BUFFER_SIZE`]: https://api.dart.dev/stable/2.17.6/dart-convert/JsonUtf8Encoder/DEFAULT_BUFFER_SIZE-constant.html
|
[`DEFAULT_BUFFER_SIZE`]: https://api.dart.dev/stable/2.17.6/dart-convert/JsonUtf8Encoder/DEFAULT_BUFFER_SIZE-constant.html
|
||||||
|
@ -97,11 +95,11 @@
|
||||||
|
|
||||||
#### `dart:developer`
|
#### `dart:developer`
|
||||||
|
|
||||||
- **Breaking change** [#34233][]: The previously deprecated APIs
|
- **Breaking change** [#34233]: The previously deprecated APIs `kInvalidParams`,
|
||||||
`kInvalidParams`, `kExtensionError`, `kExtensionErrorMax`, and
|
`kExtensionError`, `kExtensionErrorMax`, and `kExtensionErrorMin` in
|
||||||
`kExtensionErrorMin` in [`ServiceExtensionResponse`][] have been removed. They
|
[`ServiceExtensionResponse`] have been removed. They have been replaced by
|
||||||
have been replaced by `invalidParams`, `extensionError`, `extensionErrorMax`,
|
`invalidParams`, `extensionError`, `extensionErrorMax`, and
|
||||||
and `extensionErrorMin`.
|
`extensionErrorMin`.
|
||||||
- Deprecated `UserTag.MAX_USER_TAGS` in favor of `UserTag.maxUserTags`.
|
- Deprecated `UserTag.MAX_USER_TAGS` in favor of `UserTag.maxUserTags`.
|
||||||
|
|
||||||
[#34233]: https://github.com/dart-lang/sdk/issues/34233
|
[#34233]: https://github.com/dart-lang/sdk/issues/34233
|
||||||
|
@ -109,7 +107,7 @@
|
||||||
|
|
||||||
#### `dart:ffi`
|
#### `dart:ffi`
|
||||||
|
|
||||||
- **Breaking change** [#49935][]: The runtime type argument of `Pointer` has
|
- **Breaking change** [#49935]: The runtime type argument of `Pointer` has
|
||||||
changed to `Never` in preparation of completely removing the runtime type
|
changed to `Never` in preparation of completely removing the runtime type
|
||||||
argument. `Pointer.toString` has changed to not report any type argument.
|
argument. `Pointer.toString` has changed to not report any type argument.
|
||||||
|
|
||||||
|
@ -121,17 +119,17 @@
|
||||||
- Deprecated `registerElement` and `registerElement2` in `Document` and
|
- Deprecated `registerElement` and `registerElement2` in `Document` and
|
||||||
`HtmlDocument`. These APIs were based on the deprecated Web Components v0.5
|
`HtmlDocument`. These APIs were based on the deprecated Web Components v0.5
|
||||||
specification and are not supported by browsers today. These APIs are expected
|
specification and are not supported by browsers today. These APIs are expected
|
||||||
to be deleted in a future release. See the related breaking change
|
to be deleted in a future release. See the related breaking change request
|
||||||
request [#49536](https://github.com/dart-lang/sdk/issues/49536).
|
[#49536](https://github.com/dart-lang/sdk/issues/49536).
|
||||||
|
|
||||||
#### `dart:io`
|
#### `dart:io`
|
||||||
|
|
||||||
- **Breaking change** [#49305](https://github.com/dart-lang/sdk/issues/49305):
|
- **Breaking change** [#49305](https://github.com/dart-lang/sdk/issues/49305):
|
||||||
Disallow negative or hexadecimal content-length headers.
|
Disallow negative or hexadecimal content-length headers.
|
||||||
- **Breaking change** [#49647](https://github.com/dart-lang/sdk/issues/49647):
|
- **Breaking change** [#49647](https://github.com/dart-lang/sdk/issues/49647):
|
||||||
`File.create` now takes new optional `exclusive` `bool` parameter, and
|
`File.create` now takes new optional `exclusive` `bool` parameter, and when it
|
||||||
when it is `true` the operation will fail if target file already exists.
|
is `true` the operation will fail if target file already exists.
|
||||||
- **Breaking change** [#49878][]: Calling `ResourceHandle.toFile()`,
|
- **Breaking change** [#49878]: Calling `ResourceHandle.toFile()`,
|
||||||
`ResourceHandle.toSocket()`, `ResourceHandle.toRawSocket()` or
|
`ResourceHandle.toSocket()`, `ResourceHandle.toRawSocket()` or
|
||||||
`ResourceHandle.toRawDatagramSocket()`, more than once now throws a
|
`ResourceHandle.toRawDatagramSocket()`, more than once now throws a
|
||||||
`StateError`.
|
`StateError`.
|
||||||
|
@ -142,8 +140,7 @@
|
||||||
|
|
||||||
[#49878]: https://github.com/dart-lang/sdk/issues/49878
|
[#49878]: https://github.com/dart-lang/sdk/issues/49878
|
||||||
|
|
||||||
- Adds three new `FileSystemException` subclasses to handle common error
|
- Adds three new `FileSystemException` subclasses to handle common error cases:
|
||||||
cases:
|
|
||||||
|
|
||||||
- `PathAccessException`: The necessary access rights are not available.
|
- `PathAccessException`: The necessary access rights are not available.
|
||||||
- `PathExistsException`: The path being created already exists.
|
- `PathExistsException`: The path being created already exists.
|
||||||
|
@ -158,9 +155,9 @@
|
||||||
|
|
||||||
#### `dart:mirrors`
|
#### `dart:mirrors`
|
||||||
|
|
||||||
- **Breaking change** [#34233][]: The APIs [`MirrorsUsed`][] and [`Comment`][]
|
- **Breaking change** [#34233]: The APIs [`MirrorsUsed`] and [`Comment`] have
|
||||||
have been removed. `MirrorsUsed` was experimental and deprecated; `Comment`
|
been removed. `MirrorsUsed` was experimental and deprecated; `Comment` was
|
||||||
was previously used internally in dart2js. Both are no longer functional.
|
previously used internally in dart2js. Both are no longer functional.
|
||||||
|
|
||||||
[#34233]: https://github.com/dart-lang/sdk/issues/34233
|
[#34233]: https://github.com/dart-lang/sdk/issues/34233
|
||||||
[`MirrorsUsed`]: https://api.dart.dev/stable/dart-mirrors/MirrorsUsed-class.html
|
[`MirrorsUsed`]: https://api.dart.dev/stable/dart-mirrors/MirrorsUsed-class.html
|
||||||
|
@ -172,18 +169,18 @@
|
||||||
|
|
||||||
- **Breaking changes to the preview feature `@staticInterop`**:
|
- **Breaking changes to the preview feature `@staticInterop`**:
|
||||||
- Classes with this annotation are now disallowed from using `external`
|
- Classes with this annotation are now disallowed from using `external`
|
||||||
generative constructors. Use `external factory`s for these classes instead,
|
generative constructors. Use `external factory`s for these classes instead,
|
||||||
and the behavior should be identical. This includes use of synthetic
|
and the behavior should be identical. This includes use of synthetic
|
||||||
constructors. See [#48730][] and [#49941][] for more details.
|
constructors. See [#48730] and [#49941] for more details.
|
||||||
- Classes with this annotation's external extension members are now disallowed
|
- Classes with this annotation's external extension members are now disallowed
|
||||||
from using type parameters e.g. `external void method<T>(T t)`. Use a
|
from using type parameters e.g. `external void method<T>(T t)`. Use a
|
||||||
non-`external` extension method for type parameters instead. See [#49350][]
|
non-`external` extension method for type parameters instead. See [#49350]
|
||||||
for more details.
|
for more details.
|
||||||
- Classes with this annotation should also have the `@JS` annotation. You can
|
- Classes with this annotation should also have the `@JS` annotation. You can
|
||||||
also have the `@anonymous` annotation with these two annotations for an object
|
also have the `@anonymous` annotation with these two annotations for an
|
||||||
literal constructor, but it isn't required.
|
object literal constructor, but it isn't required.
|
||||||
- Classes with this annotation can not be implemented by classes without this
|
- Classes with this annotation can not be implemented by classes without this
|
||||||
annotation. This is to avoid confusing type behavior.
|
annotation. This is to avoid confusing type behavior.
|
||||||
|
|
||||||
[#48730]: https://github.com/dart-lang/sdk/issues/48730
|
[#48730]: https://github.com/dart-lang/sdk/issues/48730
|
||||||
[#49941]: https://github.com/dart-lang/sdk/issues/49941
|
[#49941]: https://github.com/dart-lang/sdk/issues/49941
|
||||||
|
@ -208,14 +205,19 @@
|
||||||
|
|
||||||
Updated the Linter to `1.31.0`, which includes changes that
|
Updated the Linter to `1.31.0`, which includes changes that
|
||||||
|
|
||||||
- add new lint: `enable_null_safety`.
|
- add new lint: `collection_methods_unrelated_type`.
|
||||||
- add new lint: `library_annotations`.
|
- add new lint: `combinators_ordering`.
|
||||||
- add new lint: `dangling_library_doc_comments`.
|
- add new lint: `dangling_library_doc_comments`.
|
||||||
|
- add new lint: `enable_null_safety`.
|
||||||
|
- add new lint: `implicit_call_tearoffs`.
|
||||||
|
- add new lint: `library_annotations`.
|
||||||
|
- add new lint: `unnecessary_library_directive`.
|
||||||
|
- add new lint: `unreachable_from_main`.
|
||||||
|
- add new lint: `use_string_in_part_of_directives`.
|
||||||
- fix `no_leading_underscores_for_local_identifiers` to not report super formals
|
- fix `no_leading_underscores_for_local_identifiers` to not report super formals
|
||||||
as local variables.
|
as local variables.
|
||||||
- fix `unnecessary_overrides` false negatives.
|
- fix `unnecessary_overrides` false negatives.
|
||||||
- fix `cancel_subscriptions` for nullable fields.
|
- fix `cancel_subscriptions` for nullable fields.
|
||||||
- add new lint: `collection_methods_unrelated_type`.
|
|
||||||
- update `library_names` to support unnamed libraries.
|
- update `library_names` to support unnamed libraries.
|
||||||
- fix `unnecessary_parenthesis` support for as-expressions.
|
- fix `unnecessary_parenthesis` support for as-expressions.
|
||||||
- fix `use_build_context_synchronously` to check for context property accesses.
|
- fix `use_build_context_synchronously` to check for context property accesses.
|
||||||
|
@ -227,36 +229,9 @@ Updated the Linter to `1.31.0`, which includes changes that
|
||||||
- fix `use_build_context_synchronously` to check for `BuildContext`s in named
|
- fix `use_build_context_synchronously` to check for `BuildContext`s in named
|
||||||
expressions.
|
expressions.
|
||||||
- fix `exhaustive_cases` to check parenthesized expressions
|
- fix `exhaustive_cases` to check parenthesized expressions
|
||||||
- improves performance for:
|
|
||||||
- `avoid_null_checks_in_equality_operators`.
|
|
||||||
- `join_return_with_statement`.
|
|
||||||
- `recursive_getters`.
|
|
||||||
- `unnecessary_lambdas`.
|
|
||||||
- `diagnostic_describe_all_properties`.
|
|
||||||
- `prefer_foreach`.
|
|
||||||
- `avoid_escaping_inner_quotes`.
|
|
||||||
- `cascade_invocations`.
|
|
||||||
- `tighten_type_of_initializing_formals`.
|
|
||||||
- `prefer_interpolation_to_compose_strings`.
|
|
||||||
- `prefer_constructors_over_static_methods`.
|
|
||||||
- `avoid_returning_null`.
|
|
||||||
- `parameter_assignments`.
|
|
||||||
- `prefer_constructors_over_static_methods`.
|
|
||||||
- `prefer_interpolation_to_compose_strings`.
|
|
||||||
- `avoid_returning_null`.
|
|
||||||
- `avoid_returning_this`.
|
|
||||||
- `flutter_style_todos`.
|
|
||||||
- `avoid_positional_boolean_parameters`.
|
|
||||||
- `prefer_const_constructors`.
|
|
||||||
- add new lint: `implicit_call_tearoffs`.
|
|
||||||
- add new lint: `unnecessary_library_directive`.
|
|
||||||
- update `avoid_redundant_argument_values` to work with enum declarations.
|
- update `avoid_redundant_argument_values` to work with enum declarations.
|
||||||
- improve performance for `prefer_contains`.
|
|
||||||
- add new lint: `unreachable_from_main`.
|
|
||||||
- fix `avoid_redundant_argument_values` when referencing required
|
- fix `avoid_redundant_argument_values` when referencing required
|
||||||
parameters in legacy libraries.
|
parameters in legacy libraries.
|
||||||
- improve performance for `use_late_for_private_fields_and_variables`.
|
|
||||||
- add new lint: `use_string_in_part_of_directives`.
|
|
||||||
- fix `use_super_parameters` false positives with repeated super
|
- fix `use_super_parameters` false positives with repeated super
|
||||||
parameter references.
|
parameter references.
|
||||||
- update `use_late_for_private_fields_and_variables` to handle enums.
|
- update `use_late_for_private_fields_and_variables` to handle enums.
|
||||||
|
@ -265,8 +240,6 @@ Updated the Linter to `1.31.0`, which includes changes that
|
||||||
in string interpolations.
|
in string interpolations.
|
||||||
- update `public_member_api_docs` to report diagnostics on extension
|
- update `public_member_api_docs` to report diagnostics on extension
|
||||||
names (instead of bodies).
|
names (instead of bodies).
|
||||||
- add miscellaneous documentation improvements.
|
|
||||||
- add new lint: `combinators_ordering`.
|
|
||||||
- fix `use_colored_box` and `use_decorated_box` to not over-report on containers without
|
- fix `use_colored_box` and `use_decorated_box` to not over-report on containers without
|
||||||
a child.
|
a child.
|
||||||
- fix `unnecessary_parenthesis` false positives on a map-or-set literal at the start of
|
- fix `unnecessary_parenthesis` false positives on a map-or-set literal at the start of
|
||||||
|
@ -277,6 +250,29 @@ Updated the Linter to `1.31.0`, which includes changes that
|
||||||
- fix `prefer_final_locals` false positives on declaration lists with at least one
|
- fix `prefer_final_locals` false positives on declaration lists with at least one
|
||||||
non-final variable.
|
non-final variable.
|
||||||
- fix`use_build_context_synchronously` to handle `await`s in `if` conditions.
|
- fix`use_build_context_synchronously` to handle `await`s in `if` conditions.
|
||||||
|
- improves performance for:
|
||||||
|
- `avoid_escaping_inner_quotes`.
|
||||||
|
- `avoid_null_checks_in_equality_operators`.
|
||||||
|
- `avoid_positional_boolean_parameters`.
|
||||||
|
- `avoid_returning_null`.
|
||||||
|
- `avoid_returning_null`.
|
||||||
|
- `avoid_returning_this`.
|
||||||
|
- `cascade_invocations`.
|
||||||
|
- `diagnostic_describe_all_properties`.
|
||||||
|
- `flutter_style_todos`.
|
||||||
|
- `join_return_with_statement`.
|
||||||
|
- `parameter_assignments`.
|
||||||
|
- `prefer_const_constructors`.
|
||||||
|
- `prefer_constructors_over_static_methods`.
|
||||||
|
- `prefer_constructors_over_static_methods`.
|
||||||
|
- `prefer_contains`.
|
||||||
|
- `prefer_foreach`.
|
||||||
|
- `prefer_interpolation_to_compose_strings`.
|
||||||
|
- `prefer_interpolation_to_compose_strings`.
|
||||||
|
- `recursive_getters`.
|
||||||
|
- `tighten_type_of_initializing_formals`.
|
||||||
|
- `unnecessary_lambdas`.
|
||||||
|
- `use_late_for_private_fields_and_variables`.
|
||||||
|
|
||||||
#### Pub
|
#### Pub
|
||||||
|
|
||||||
|
@ -305,10 +301,11 @@ Updated the Linter to `1.31.0`, which includes changes that
|
||||||
- Update `dart pub publish` to require a working resolution.
|
- Update `dart pub publish` to require a working resolution.
|
||||||
If publishing a breaking release of mutually dependent packages use `dependency_overrides`
|
If publishing a breaking release of mutually dependent packages use `dependency_overrides`
|
||||||
to obtain a resolution.
|
to obtain a resolution.
|
||||||
- `dart pub add` will now allow adding multiple packages from any source using the same YAML syntax as in `pubspec.yaml`.
|
- `dart pub add` will now allow adding multiple packages from any source using
|
||||||
|
the same YAML syntax as in `pubspec.yaml`.
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
```
|
```console
|
||||||
$ dart pub add retry:^1.0.0 'dev:foo{"git":"https://github.com/foo/foo"}'
|
$ dart pub add retry:^1.0.0 'dev:foo{"git":"https://github.com/foo/foo"}'
|
||||||
```
|
```
|
||||||
- `dart pub publish` will now give a warning if `dart analyze` reports any diagnostics.
|
- `dart pub publish` will now give a warning if `dart analyze` reports any diagnostics.
|
||||||
|
@ -605,17 +602,16 @@ the new implementation carries a few subtle changes in behavior:
|
||||||
Updated the Linter to `1.25.0`, which includes changes that
|
Updated the Linter to `1.25.0`, which includes changes that
|
||||||
|
|
||||||
- add new lint: `discarded_futures`.
|
- add new lint: `discarded_futures`.
|
||||||
|
- add new lint: `unnecessary_null_aware_operator_on_extension_on_nullable`.
|
||||||
|
- add new lint: `unnecessary_to_list_in_spreads`.
|
||||||
- improve message and highlight range for `no_duplicate_case_values`
|
- improve message and highlight range for `no_duplicate_case_values`
|
||||||
- improve performance for `lines_longer_than_80_chars`,
|
- improve performance for `lines_longer_than_80_chars`,
|
||||||
`prefer_const_constructors_in_immutables`, and
|
`prefer_const_constructors_in_immutables`, and
|
||||||
`prefer_initializing_formals`.
|
`prefer_initializing_formals`.
|
||||||
- fix `prefer_final_parameters` to support super parameters.
|
- fix `prefer_final_parameters` to support super parameters.
|
||||||
- add new lint: `unnecessary_to_list_in_spreads`.
|
|
||||||
- fix `unawaited_futures` to handle string interpolated
|
- fix `unawaited_futures` to handle string interpolated
|
||||||
futures.
|
futures.
|
||||||
- update `use_colored_box` to not flag nullable colors,
|
- update `use_colored_box` to not flag nullable colors,
|
||||||
- add new lint:
|
|
||||||
`unnecessary_null_aware_operator_on_extension_on_nullable`.
|
|
||||||
- fix `no_leading_underscores_for_local_identifiers`
|
- fix `no_leading_underscores_for_local_identifiers`
|
||||||
to lint local function declarations.
|
to lint local function declarations.
|
||||||
- fix `avoid_init_to_null` to correctly handle super
|
- fix `avoid_init_to_null` to correctly handle super
|
||||||
|
|
Loading…
Reference in a new issue