Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 1d418b4

Browse files
author
Dart CI
committed
Version 2.19.0-324.0.dev
Merge 6e4e129 into dev
2 parents e06db8e + 6e4e129 commit 1d418b4

Some content is hidden

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

46 files changed

+271
-1
lines changed

CHANGELOG.md

+6

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

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
AmbiguousExtension2,
88
UnambiguousExtension1,
99
async.dart.FutureExtensions,
10+
core.dart.DateTimeCopyWith,
1011
core.dart.EnumByName,
1112
core.dart.EnumName]*/
1213

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

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
AmbiguousExtension2,
88
UnambiguousExtension2,
99
async.dart.FutureExtensions,
10+
core.dart.DateTimeCopyWith,
1011
core.dart.EnumByName,
1112
core.dart.EnumName]*/
1213

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
core.dart.DateTimeCopyWith,
78
core.dart.EnumByName,
89
core.dart.EnumName,
910
lib1.dart.AmbiguousExtension1,

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

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/*library: scope=[
66
Extension1,
77
async.dart.FutureExtensions,
8+
core.dart.DateTimeCopyWith,
89
core.dart.EnumByName,
910
core.dart.EnumName]*/
1011

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
core.dart.DateTimeCopyWith,
78
core.dart.EnumByName,
89
core.dart.EnumName,
910
lib.dart.Extension1,

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

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/*library: scope=[
66
Extension2,
77
async.dart.FutureExtensions,
8+
core.dart.DateTimeCopyWith,
89
core.dart.EnumByName,
910
core.dart.EnumName]*/
1011

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

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/*library: scope=[
66
A2,
77
async.dart.FutureExtensions,
8+
core.dart.DateTimeCopyWith,
89
core.dart.EnumByName,
910
core.dart.EnumName]*/
1011

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

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/*library: scope=[
66
E,
77
async.dart.FutureExtensions,
8+
core.dart.DateTimeCopyWith,
89
core.dart.EnumByName,
910
core.dart.EnumName]*/
1011

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
core.dart.DateTimeCopyWith,
78
core.dart.EnumByName,
89
core.dart.EnumName]*/
910

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
core.dart.DateTimeCopyWith,
78
core.dart.EnumByName,
89
core.dart.EnumName,
910
lib1.dart.E]*/

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
NamedExtension,
77
_extension#1,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
core.dart.DateTimeCopyWith,
78
core.dart.EnumByName,
89
core.dart.EnumName,
910
lib.dart.NamedExtension]*/

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

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/*library: scope=[
66
GeneralGeneric,
77
async.dart.FutureExtensions,
8+
core.dart.DateTimeCopyWith,
89
core.dart.EnumByName,
910
core.dart.EnumName]*/
1011

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

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/*library: scope=[
66
A2,
77
async.dart.FutureExtensions,
8+
core.dart.DateTimeCopyWith,
89
core.dart.EnumByName,
910
core.dart.EnumName]*/
1011

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
A2,
77
B2,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
B3,
99
B4,
1010
async.dart.FutureExtensions,
11+
core.dart.DateTimeCopyWith,
1112
core.dart.EnumByName,
1213
core.dart.EnumName]*/
1314

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

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/*library: scope=[
66
A2,
77
async.dart.FutureExtensions,
8+
core.dart.DateTimeCopyWith,
89
core.dart.EnumByName,
910
core.dart.EnumName]*/
1011

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
Extension,
77
_extension#1,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
core.dart.DateTimeCopyWith,
78
core.dart.EnumByName,
89
core.dart.EnumName,
910
origin.dart.Extension,

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
Extension,
77
GenericExtension,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
HiddenExtension1,
77
ShownExtension1,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
HiddenExtension2,
77
ShownExtension2,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/*library: scope=[
66
ShownExtension3,
77
async.dart.FutureExtensions,
8+
core.dart.DateTimeCopyWith,
89
core.dart.EnumByName,
910
core.dart.EnumName]*/
1011

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
core.dart.DateTimeCopyWith,
78
core.dart.EnumByName,
89
core.dart.EnumName,
910
lib1.dart.ShownExtension1,

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
core.dart.DateTimeCopyWith,
78
core.dart.EnumByName,
89
core.dart.EnumName]*/
910

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
ClashingExtension,
77
UniqueExtension1,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
ClashingExtension,
77
UniqueExtension2,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
core.dart.DateTimeCopyWith,
78
core.dart.EnumByName,
89
core.dart.EnumName,
910
lib1.dart.UniqueExtension1,

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
HiddenExtension1,
77
ShownExtension1,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
HiddenExtension2,
77
ShownExtension2,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/*library: scope=[
66
async.dart.FutureExtensions,
7+
core.dart.DateTimeCopyWith,
78
core.dart.EnumByName,
89
core.dart.EnumName,
910
lib1.dart.ShownExtension1,

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
A2,
77
B2,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/*library: scope=[
66
A2,
77
async.dart.FutureExtensions,
8+
core.dart.DateTimeCopyWith,
89
core.dart.EnumByName,
910
core.dart.EnumName]*/
1011

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

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
A3,
88
A4,
99
async.dart.FutureExtensions,
10+
core.dart.DateTimeCopyWith,
1011
core.dart.EnumByName,
1112
core.dart.EnumName]*/
1213

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

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
_extension#3,
1010
_extension#4,
1111
async.dart.FutureExtensions,
12+
core.dart.DateTimeCopyWith,
1213
core.dart.EnumByName,
1314
core.dart.EnumName]*/
1415

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
A2,
77
B2,
88
async.dart.FutureExtensions,
9+
core.dart.DateTimeCopyWith,
910
core.dart.EnumByName,
1011
core.dart.EnumName]*/
1112

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

+1
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ additionalExports = (core::Deprecated,
156156
core::Expando,
157157
core::WeakReference,
158158
core::Finalizer,
159+
core::DateTimeCopyWith,
159160
core::EnumName,
160161
core::EnumByName,
161162
core::identical,

pkg/front_end/testcases/general/error_export_from_dill/main.dart.weak.outline.expect

+1
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ additionalExports = (core::Deprecated,
9191
core::Expando,
9292
core::WeakReference,
9393
core::Finalizer,
94+
core::DateTimeCopyWith,
9495
core::EnumName,
9596
core::EnumByName,
9697
core::identical,

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

+1
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ additionalExports = (core::Deprecated,
152152
core::Expando,
153153
core::WeakReference,
154154
core::Finalizer,
155+
core::DateTimeCopyWith,
155156
core::EnumName,
156157
core::EnumByName,
157158
core::identical,

pkg/front_end/testcases/incremental/export_core.yaml.world.2.expect

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ additionalExports = (asy::Future,
2121
core::ConcurrentModificationError,
2222
core::CyclicInitializationError,
2323
core::DateTime,
24+
core::DateTimeCopyWith,
2425
core::Deprecated,
2526
core::Duration,
2627
core::Enum,

pkg/front_end/testcases/incremental/export_core.yaml.world.3.expect

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ additionalExports = (asy::Future,
2121
core::ConcurrentModificationError,
2222
core::CyclicInitializationError,
2323
core::DateTime,
24+
core::DateTimeCopyWith,
2425
core::Deprecated,
2526
core::Duration,
2627
core::Enum,

sdk/lib/core/date_time.dart

+55
Original file line numberDiff line numberDiff line change
@@ -873,3 +873,58 @@ class DateTime implements Comparable<DateTime> {
873873
r'(?:[ T](\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d+))?)?)?' // Time part.
874874
r'( ?[zZ]| ?([-+])(\d\d)(?::?(\d\d))?)?)?$'); // Timezone part.
875875
}
876+
877+
/// Adds [copyWith] method to [DateTime] objects.
878+
@Since("2.19")
879+
extension DateTimeCopyWith on DateTime {
880+
/// Creates a new [DateTime] from this one by updating individual properties.
881+
///
882+
/// The [copyWith] method creates a new [DateTime] object with values
883+
/// for the properties [DateTime.year], [DateTime.hour], etc, provided by
884+
/// similarly named arguments, or using the existing value of the property
885+
/// if no argument, or `null`, is provided.
886+
///
887+
/// Example:
888+
/// ```dart
889+
/// final now = DateTime.now();
890+
/// final sameTimeOnMoonLandingDay =
891+
/// now.copyWith(year: 1969, month: 07, day: 20);
892+
/// ```
893+
///
894+
/// Like for the [DateTime] and [DateTime.utc] constructors,
895+
/// which this operation uses to create the new value,
896+
/// property values are allowed to overflow or underflow the range
897+
/// of the property (like a [month] outside the 1 to 12 range),
898+
/// which can affect the more significant properties
899+
/// (for example, a month of 13 will result in the month of January
900+
/// of the next year.)
901+
///
902+
/// Notice also that if the result is a local-time DateTime,
903+
/// seasonal time-zone adjustments (daylight saving) can cause some
904+
/// combinations of dates, hours and minutes to not exist, or to exist
905+
/// more than once.
906+
/// In the former case, a corresponding time in one of the two adjacent time
907+
/// zones is used instead. In the latter, one of the two options is chosen.
908+
DateTime copyWith({
909+
int? year,
910+
int? month,
911+
int? day,
912+
int? hour,
913+
int? minute,
914+
int? second,
915+
int? millisecond,
916+
int? microsecond,
917+
bool? isUtc,
918+
}) {
919+
return ((isUtc ?? this.isUtc) ? DateTime.utc : DateTime.new)(
920+
year ?? this.year,
921+
month ?? this.month,
922+
day ?? this.day,
923+
hour ?? this.hour,
924+
minute ?? this.minute,
925+
second ?? this.second,
926+
millisecond ?? this.millisecond,
927+
microsecond ?? this.microsecond,
928+
);
929+
}
930+
}

0 commit comments

Comments
 (0)