1
0
mirror of https://github.com/dart-lang/sdk synced 2024-07-03 00:08:46 +00:00

Reapply "[typed_data] Deprecate unmodifiable views"

This change, for Dart 3.4, deprecates the unmodifiable typed data constructors. Users of these constructors can upgrade the use of the constructors to instance method `asUnmodifiableView()`, or pin to Dart 3.3.

See https://github.com/dart-lang/sdk/issues/53785 for context.

CoreLibraryReviewExempt: Reviewed in https://dart-review.googlesource.com/c/sdk/+/321922
Issue: #53785
Change-Id: Icd52f2b6cd05cf3a328c82c197ef44d0b340b171
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332581
Reviewed-by: Lasse Nielsen <lrn@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
This commit is contained in:
Stephen Adams 2024-02-06 23:30:49 +00:00 committed by Commit Queue
parent bdf4528871
commit 7ef215a4a5
2 changed files with 39 additions and 16 deletions

View File

@ -39,6 +39,29 @@
[#54138]: https://github.com/dart-lang/sdk/issues/54138
#### `dart:typed_data`
- **BREAKING CHANGE** [#53218][] [#53785][]: The unmodifiable view classes for
typed data are deprecated.
To create an unmodifiable view of a typed-data object, use the
`asUnmodifiableView()` methods added in Dart 3.3:
```dart
Uint8List data = ...;
final readOnlyView = data.asUnmodifiableView();
// readOnlyView has type Uint8List, and throws if attempted modified.
```
The reason for this change is to allow more flexibility in the implementation
of typed data, so the native and web platforms can use different strategies
to ensure that typed data has good performance.
The deprecated types will be removed in Dart 3.5.
[#53218]: https://github.com/dart-lang/sdk/issues/53218
[#53785]: https://github.com/dart-lang/sdk/issues/53785
## 3.3.0
### Language

View File

@ -8,7 +8,7 @@ part of dart.typed_data;
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableByteBufferView.
// TODO(53785): @Deprecated('No replacement')
@Deprecated('No replacement')
abstract final class UnmodifiableByteBufferView implements ByteBuffer {
external factory UnmodifiableByteBufferView(ByteBuffer data);
}
@ -17,7 +17,7 @@ abstract final class UnmodifiableByteBufferView implements ByteBuffer {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableByteDataView.
// TODO(53785): @Deprecated('Use ByteData.asUnmodifiableView() instead')
@Deprecated('Use ByteData.asUnmodifiableView() instead')
abstract final class UnmodifiableByteDataView implements ByteData {
external factory UnmodifiableByteDataView(ByteData data);
}
@ -26,7 +26,7 @@ abstract final class UnmodifiableByteDataView implements ByteData {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableUint8ListView.
// TODO(53785): @Deprecated('Use Uint8List.asUnmodifiableView() instead')
@Deprecated('Use Uint8List.asUnmodifiableView() instead')
abstract final class UnmodifiableUint8ListView implements Uint8List {
external factory UnmodifiableUint8ListView(Uint8List list);
}
@ -35,7 +35,7 @@ abstract final class UnmodifiableUint8ListView implements Uint8List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableInt8ListView.
// TODO(53785): @Deprecated('Use Int8List.asUnmodifiableView() instead')
@Deprecated('Use Int8List.asUnmodifiableView() instead')
abstract final class UnmodifiableInt8ListView implements Int8List {
external factory UnmodifiableInt8ListView(Int8List list);
}
@ -44,7 +44,7 @@ abstract final class UnmodifiableInt8ListView implements Int8List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableUint8ClampedListView.
// TODO(53785): @Deprecated('Use Uint8ClampedList.asUnmodifiableView() instead')
@Deprecated('Use Uint8ClampedList.asUnmodifiableView() instead')
abstract final class UnmodifiableUint8ClampedListView
implements Uint8ClampedList {
external factory UnmodifiableUint8ClampedListView(Uint8ClampedList list);
@ -54,7 +54,7 @@ abstract final class UnmodifiableUint8ClampedListView
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableUint16ListView.
// TODO(53785): @Deprecated('Use Uint16List.asUnmodifiableView() instead')
@Deprecated('Use Uint16List.asUnmodifiableView() instead')
abstract final class UnmodifiableUint16ListView implements Uint16List {
external factory UnmodifiableUint16ListView(Uint16List list);
}
@ -63,7 +63,7 @@ abstract final class UnmodifiableUint16ListView implements Uint16List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableInt16ListView.
// TODO(53785): @Deprecated('Use Int16List.asUnmodifiableView() instead')
@Deprecated('Use Int16List.asUnmodifiableView() instead')
abstract final class UnmodifiableInt16ListView implements Int16List {
external factory UnmodifiableInt16ListView(Int16List list);
}
@ -72,7 +72,7 @@ abstract final class UnmodifiableInt16ListView implements Int16List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableUint32ListView.
// TODO(53785): @Deprecated('Use Uint32List.asUnmodifiableView() instead')
@Deprecated('Use Uint32List.asUnmodifiableView() instead')
abstract final class UnmodifiableUint32ListView implements Uint32List {
external factory UnmodifiableUint32ListView(Uint32List list);
}
@ -81,7 +81,7 @@ abstract final class UnmodifiableUint32ListView implements Uint32List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableInt32ListView.
// TODO(53785): @Deprecated('Use Int32List.asUnmodifiableView() instead')
@Deprecated('Use Int32List.asUnmodifiableView() instead')
abstract final class UnmodifiableInt32ListView implements Int32List {
external factory UnmodifiableInt32ListView(Int32List list);
}
@ -90,7 +90,7 @@ abstract final class UnmodifiableInt32ListView implements Int32List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableUint64ListView.
// TODO(53785): @Deprecated('Use Uint64List.asUnmodifiableView() instead')
@Deprecated('Use Uint64List.asUnmodifiableView() instead')
abstract final class UnmodifiableUint64ListView implements Uint64List {
external factory UnmodifiableUint64ListView(Uint64List list);
}
@ -99,7 +99,7 @@ abstract final class UnmodifiableUint64ListView implements Uint64List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableInt64ListView.
// TODO(53785): @Deprecated('Use Int64List.asUnmodifiableView() instead')
@Deprecated('Use Int64List.asUnmodifiableView() instead')
abstract final class UnmodifiableInt64ListView implements Int64List {
external factory UnmodifiableInt64ListView(Int64List list);
}
@ -108,7 +108,7 @@ abstract final class UnmodifiableInt64ListView implements Int64List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableInt32x4ListView.
// TODO(53785): @Deprecated('Use Int32x4List.asUnmodifiableView() instead')
@Deprecated('Use Int32x4List.asUnmodifiableView() instead')
abstract final class UnmodifiableInt32x4ListView implements Int32x4List {
external factory UnmodifiableInt32x4ListView(Int32x4List list);
}
@ -117,7 +117,7 @@ abstract final class UnmodifiableInt32x4ListView implements Int32x4List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableFloat32x4ListView.
// TODO(53785): @Deprecated('Use Float32x4List.asUnmodifiableView() instead')
@Deprecated('Use Float32x4List.asUnmodifiableView() instead')
abstract final class UnmodifiableFloat32x4ListView implements Float32x4List {
external factory UnmodifiableFloat32x4ListView(Float32x4List list);
}
@ -126,7 +126,7 @@ abstract final class UnmodifiableFloat32x4ListView implements Float32x4List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableFloat64x2ListView.
// TODO(53785): @Deprecated('Use Float64x2List.asUnmodifiableView() instead')
@Deprecated('Use Float64x2List.asUnmodifiableView() instead')
abstract final class UnmodifiableFloat64x2ListView implements Float64x2List {
external factory UnmodifiableFloat64x2ListView(Float64x2List list);
}
@ -135,7 +135,7 @@ abstract final class UnmodifiableFloat64x2ListView implements Float64x2List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableFloat32ListView.
// TODO(53785): @Deprecated('Use Float32List.asUnmodifiableView() instead')
@Deprecated('Use Float32List.asUnmodifiableView() instead')
abstract final class UnmodifiableFloat32ListView implements Float32List {
external factory UnmodifiableFloat32ListView(Float32List list);
}
@ -144,7 +144,7 @@ abstract final class UnmodifiableFloat32ListView implements Float32List {
///
/// It is a compile-time error for a class to attempt to extend or implement
/// UnmodifiableFloat64ListView.
// TODO(53785): @Deprecated('Use Float64List.asUnmodifiableView() instead')
@Deprecated('Use Float64List.asUnmodifiableView() instead')
abstract final class UnmodifiableFloat64ListView implements Float64List {
external factory UnmodifiableFloat64ListView(Float64List list);
}