Skip to content

Commit 511bf8a

Browse files
lrhnCommit Queue
authored and
Commit Queue
committed
Add nonNulls, indexed and other extensions on iterables.
Also adds `firstOrNull`, `lastOrNull`, `singleOrNull`, and `elementAtOrNull`. I chose `nonNulls` instead of `whereNotNull()`. The latter should have been a getter, but isn't. Making it a getter in the platform libraries would be confusing, and make migrating from `package:collection`'s function harder, so instead I gave it a completely new name. The alternative would be to retain the non-idiomatic `whereNotNull()` for familiarity. But then it would be tool late to fix. Fixes #49928 BUG= #49928 CoreLibraryReviewExempt: Everybody's on vacation, everybody everywhere. Change-Id: If464e3bd6bc97cbeefc3e5084b4cbaadac3f1e95 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290760 Reviewed-by: Aske Simon Christensen <[email protected]> Reviewed-by: Nate Bosch <[email protected]> Commit-Queue: Lasse Nielsen <[email protected]>
1 parent 6eba1cc commit 511bf8a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1503
-7
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@
136136

137137
#### `dart:collection`
138138

139+
- Added extension members `nonNulls`, `firstOrNull`, `lastOrNull`,
140+
`singleOrNull`, `elementAtOrNull` and `indexed` on `Iterable`s.
141+
Also exported from `dart:core`.
139142
- Deprecated the `HasNextIterator` class ([#50883][]).
140143

141144
- **Breaking change when migrating code to Dart 3.0**:

pkg/compiler/test/annotations/data/deferred.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'dart:collection' deferred as normal;
5+
import 'dart:collection' deferred as normal show HashSet;
66

77
@pragma('dart2js:load-priority:high')
88
import 'dart:math' deferred as high;

pkg/front_end/test/extensions/data/ambiguous/lib1.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
AmbiguousExtension2,
88
UnambiguousExtension1,
99
async.dart.FutureExtensions,
10+
collection.dart.IterableExtensions,
11+
collection.dart.NullableIterableExtensions,
1012
core.dart.DateTimeCopyWith,
1113
core.dart.EnumByName,
1214
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/ambiguous/lib2.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
AmbiguousExtension2,
88
UnambiguousExtension2,
99
async.dart.FutureExtensions,
10+
collection.dart.IterableExtensions,
11+
collection.dart.NullableIterableExtensions,
1012
core.dart.DateTimeCopyWith,
1113
core.dart.EnumByName,
1214
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/ambiguous/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
collection.dart.IterableExtensions,
8+
collection.dart.NullableIterableExtensions,
79
core.dart.DateTimeCopyWith,
810
core.dart.EnumByName,
911
core.dart.EnumName,

pkg/front_end/test/extensions/data/as_show/lib.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
/*library: scope=[
66
Extension1,
77
async.dart.FutureExtensions,
8+
collection.dart.IterableExtensions,
9+
collection.dart.NullableIterableExtensions,
810
core.dart.DateTimeCopyWith,
911
core.dart.EnumByName,
1012
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/as_show/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
collection.dart.IterableExtensions,
8+
collection.dart.NullableIterableExtensions,
79
core.dart.DateTimeCopyWith,
810
core.dart.EnumByName,
911
core.dart.EnumName,

pkg/front_end/test/extensions/data/as_show/origin.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
/*library: scope=[
66
Extension2,
77
async.dart.FutureExtensions,
8+
collection.dart.IterableExtensions,
9+
collection.dart.NullableIterableExtensions,
810
core.dart.DateTimeCopyWith,
911
core.dart.EnumByName,
1012
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/explicit_this.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
/*library: scope=[
66
A2,
77
async.dart.FutureExtensions,
8+
collection.dart.IterableExtensions,
9+
collection.dart.NullableIterableExtensions,
810
core.dart.DateTimeCopyWith,
911
core.dart.EnumByName,
1012
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/export_twice/lib1.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
/*library: scope=[
66
E,
77
async.dart.FutureExtensions,
8+
collection.dart.IterableExtensions,
9+
collection.dart.NullableIterableExtensions,
810
core.dart.DateTimeCopyWith,
911
core.dart.EnumByName,
1012
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/export_twice/lib2.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
collection.dart.IterableExtensions,
8+
collection.dart.NullableIterableExtensions,
79
core.dart.DateTimeCopyWith,
810
core.dart.EnumByName,
911
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/export_twice/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
collection.dart.IterableExtensions,
8+
collection.dart.NullableIterableExtensions,
79
core.dart.DateTimeCopyWith,
810
core.dart.EnumByName,
911
core.dart.EnumName,

pkg/front_end/test/extensions/data/export_unnamed/lib.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
NamedExtension,
77
_extension#1,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/export_unnamed/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
collection.dart.IterableExtensions,
8+
collection.dart.NullableIterableExtensions,
79
core.dart.DateTimeCopyWith,
810
core.dart.EnumByName,
911
core.dart.EnumName,

pkg/front_end/test/extensions/data/extension_on_type_variable.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
/*library: scope=[
66
GeneralGeneric,
77
async.dart.FutureExtensions,
8+
collection.dart.IterableExtensions,
9+
collection.dart.NullableIterableExtensions,
810
core.dart.DateTimeCopyWith,
911
core.dart.EnumByName,
1012
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/implicit_this.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
/*library: scope=[
66
A2,
77
async.dart.FutureExtensions,
8+
collection.dart.IterableExtensions,
9+
collection.dart.NullableIterableExtensions,
810
core.dart.DateTimeCopyWith,
911
core.dart.EnumByName,
1012
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/instance_members.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
A2,
77
B2,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/named_declarations.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
B3,
99
B4,
1010
async.dart.FutureExtensions,
11+
collection.dart.IterableExtensions,
12+
collection.dart.NullableIterableExtensions,
1113
core.dart.DateTimeCopyWith,
1214
core.dart.EnumByName,
1315
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/other_kinds.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
/*library: scope=[
66
A2,
77
async.dart.FutureExtensions,
8+
collection.dart.IterableExtensions,
9+
collection.dart.NullableIterableExtensions,
810
core.dart.DateTimeCopyWith,
911
core.dart.EnumByName,
1012
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/part/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
Extension,
77
_extension#1,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/patching/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
collection.dart.IterableExtensions,
8+
collection.dart.NullableIterableExtensions,
79
core.dart.DateTimeCopyWith,
810
core.dart.EnumByName,
911
core.dart.EnumName,

pkg/front_end/test/extensions/data/patching/origin.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
Extension,
77
GenericExtension,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/prefix/lib1.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
HiddenExtension1,
77
ShownExtension1,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/prefix/lib2.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
HiddenExtension2,
77
ShownExtension2,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/prefix/lib3.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
/*library: scope=[
66
ShownExtension3,
77
async.dart.FutureExtensions,
8+
collection.dart.IterableExtensions,
9+
collection.dart.NullableIterableExtensions,
810
core.dart.DateTimeCopyWith,
911
core.dart.EnumByName,
1012
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/prefix/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
collection.dart.IterableExtensions,
8+
collection.dart.NullableIterableExtensions,
79
core.dart.DateTimeCopyWith,
810
core.dart.EnumByName,
911
core.dart.EnumName,

pkg/front_end/test/extensions/data/reexport/lib.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
collection.dart.IterableExtensions,
8+
collection.dart.NullableIterableExtensions,
79
core.dart.DateTimeCopyWith,
810
core.dart.EnumByName,
911
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/reexport/lib1.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
ClashingExtension,
77
UniqueExtension1,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/reexport/lib2.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
ClashingExtension,
77
UniqueExtension2,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/reexport/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
collection.dart.IterableExtensions,
8+
collection.dart.NullableIterableExtensions,
79
core.dart.DateTimeCopyWith,
810
core.dart.EnumByName,
911
core.dart.EnumName,

pkg/front_end/test/extensions/data/show_hide/lib1.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
HiddenExtension1,
77
ShownExtension1,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/show_hide/lib2.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
HiddenExtension2,
77
ShownExtension2,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/show_hide/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
collection.dart.IterableExtensions,
8+
collection.dart.NullableIterableExtensions,
79
core.dart.DateTimeCopyWith,
810
core.dart.EnumByName,
911
core.dart.EnumName,

pkg/front_end/test/extensions/data/static_members.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
A2,
77
B2,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/super.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
/*library: scope=[
66
A2,
77
async.dart.FutureExtensions,
8+
collection.dart.IterableExtensions,
9+
collection.dart.NullableIterableExtensions,
810
core.dart.DateTimeCopyWith,
911
core.dart.EnumByName,
1012
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/type_variables.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
A3,
88
A4,
99
async.dart.FutureExtensions,
10+
collection.dart.IterableExtensions,
11+
collection.dart.NullableIterableExtensions,
1012
core.dart.DateTimeCopyWith,
1113
core.dart.EnumByName,
1214
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/unnamed_declarations.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
_extension#3,
1010
_extension#4,
1111
async.dart.FutureExtensions,
12+
collection.dart.IterableExtensions,
13+
collection.dart.NullableIterableExtensions,
1214
core.dart.DateTimeCopyWith,
1315
core.dart.EnumByName,
1416
core.dart.EnumName]*/

pkg/front_end/test/extensions/data/use_as_type.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
A2,
77
B2,
88
async.dart.FutureExtensions,
9+
collection.dart.IterableExtensions,
10+
collection.dart.NullableIterableExtensions,
911
core.dart.DateTimeCopyWith,
1012
core.dart.EnumByName,
1113
core.dart.EnumName]*/

pkg/front_end/testcases/general/error_export_from_dill/main.dart.strong.expect

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ library /*isNonNullableByDefault*/;
9292
import self as self2;
9393
import "dart:core" as core;
9494
import "dart:async" as asy;
95+
import "dart:collection" as col;
9596
additionalExports = (core::Deprecated,
9697
core::pragma,
9798
core::BigInt,
@@ -170,7 +171,9 @@ additionalExports = (core::Deprecated,
170171
asy::FutureRecord7,
171172
asy::FutureRecord8,
172173
asy::FutureRecord9,
173-
asy::ParallelWaitError)
174+
asy::ParallelWaitError,
175+
col::NullableIterableExtensions,
176+
col::IterableExtensions)
174177

175178
export "dart:core";
176179
export "org-dartlang-testcase:///main_lib2.dart";

pkg/front_end/testcases/general/error_export_from_dill/main.dart.strong.transformed.expect

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ library /*isNonNullableByDefault*/;
8888
import self as self2;
8989
import "dart:core" as core;
9090
import "dart:async" as asy;
91+
import "dart:collection" as col;
9192
additionalExports = (core::Deprecated,
9293
core::pragma,
9394
core::BigInt,
@@ -166,7 +167,9 @@ additionalExports = (core::Deprecated,
166167
asy::FutureRecord7,
167168
asy::FutureRecord8,
168169
asy::FutureRecord9,
169-
asy::ParallelWaitError)
170+
asy::ParallelWaitError,
171+
col::NullableIterableExtensions,
172+
col::IterableExtensions)
170173

171174
export "dart:core";
172175
export "org-dartlang-testcase:///main_lib2.dart";

0 commit comments

Comments
 (0)