From 020421df65365b145f577e9280a5f1d86e0a5cb3 Mon Sep 17 00:00:00 2001 From: Daco Harkes Date: Wed, 3 Jan 2024 08:53:07 +0000 Subject: [PATCH] [vm/ffi] Add `Since` annotation to `Pointer` `+` and `-` To prevent breaking things on older SDKs when users chose to migrate. CoreLibraryReviewExempt: VM & WASM only. Only adding an annotation. Bug: https://github.com/dart-lang/sdk/issues/54250 Change-Id: Id026e34e78527117c571aa118445cd73b16f9a9a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/344022 Auto-Submit: Daco Harkes Commit-Queue: Daco Harkes Reviewed-by: Martin Kustermann --- runtime/tools/ffi/sdk_lib_ffi_generator.dart | 2 ++ sdk/lib/ffi/ffi.dart | 22 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/runtime/tools/ffi/sdk_lib_ffi_generator.dart b/runtime/tools/ffi/sdk_lib_ffi_generator.dart index 8c90cae04c4..66ab886912b 100644 --- a/runtime/tools/ffi/sdk_lib_ffi_generator.dart +++ b/runtime/tools/ffi/sdk_lib_ffi_generator.dart @@ -236,6 +236,7 @@ $platform$truncate$alignment external void operator []=(int index, $dartType va /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer<$nativeType> operator +(int offset) => Pointer.fromAddress(address + sizeOf<$nativeType>() * offset); /// A pointer to the [offset]th [$nativeType] before this one. @@ -248,6 +249,7 @@ $platform$truncate$alignment external void operator []=(int index, $dartType va /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer<$nativeType> operator -(int offset) => Pointer.fromAddress(address - sizeOf<$nativeType>() * offset); $asTypedList diff --git a/sdk/lib/ffi/ffi.dart b/sdk/lib/ffi/ffi.dart index 8313e3361e6..3cb9350badd 100644 --- a/sdk/lib/ffi/ffi.dart +++ b/sdk/lib/ffi/ffi.dart @@ -334,6 +334,7 @@ extension Int8Pointer on Pointer { /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer operator +(int offset) => Pointer.fromAddress(address + sizeOf() * offset); @@ -347,6 +348,7 @@ extension Int8Pointer on Pointer { /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer operator -(int offset) => Pointer.fromAddress(address - sizeOf() * offset); @@ -409,6 +411,7 @@ extension Int16Pointer on Pointer { /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer operator +(int offset) => Pointer.fromAddress(address + sizeOf() * offset); @@ -422,6 +425,7 @@ extension Int16Pointer on Pointer { /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer operator -(int offset) => Pointer.fromAddress(address - sizeOf() * offset); @@ -486,6 +490,7 @@ extension Int32Pointer on Pointer { /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer operator +(int offset) => Pointer.fromAddress(address + sizeOf() * offset); @@ -499,6 +504,7 @@ extension Int32Pointer on Pointer { /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer operator -(int offset) => Pointer.fromAddress(address - sizeOf() * offset); @@ -554,6 +560,7 @@ extension Int64Pointer on Pointer { /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer operator +(int offset) => Pointer.fromAddress(address + sizeOf() * offset); @@ -567,6 +574,7 @@ extension Int64Pointer on Pointer { /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer operator -(int offset) => Pointer.fromAddress(address - sizeOf() * offset); @@ -625,6 +633,7 @@ extension Uint8Pointer on Pointer { /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer operator +(int offset) => Pointer.fromAddress(address + sizeOf() * offset); @@ -638,6 +647,7 @@ extension Uint8Pointer on Pointer { /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer operator -(int offset) => Pointer.fromAddress(address - sizeOf() * offset); @@ -700,6 +710,7 @@ extension Uint16Pointer on Pointer { /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer operator +(int offset) => Pointer.fromAddress(address + sizeOf() * offset); @@ -713,6 +724,7 @@ extension Uint16Pointer on Pointer { /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer operator -(int offset) => Pointer.fromAddress(address - sizeOf() * offset); @@ -777,6 +789,7 @@ extension Uint32Pointer on Pointer { /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer operator +(int offset) => Pointer.fromAddress(address + sizeOf() * offset); @@ -790,6 +803,7 @@ extension Uint32Pointer on Pointer { /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer operator -(int offset) => Pointer.fromAddress(address - sizeOf() * offset); @@ -845,6 +859,7 @@ extension Uint64Pointer on Pointer { /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer operator +(int offset) => Pointer.fromAddress(address + sizeOf() * offset); @@ -858,6 +873,7 @@ extension Uint64Pointer on Pointer { /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer operator -(int offset) => Pointer.fromAddress(address - sizeOf() * offset); @@ -922,6 +938,7 @@ extension FloatPointer on Pointer { /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer operator +(int offset) => Pointer.fromAddress(address + sizeOf() * offset); @@ -935,6 +952,7 @@ extension FloatPointer on Pointer { /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer operator -(int offset) => Pointer.fromAddress(address - sizeOf() * offset); @@ -990,6 +1008,7 @@ extension DoublePointer on Pointer { /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer operator +(int offset) => Pointer.fromAddress(address + sizeOf() * offset); @@ -1003,6 +1022,7 @@ extension DoublePointer on Pointer { /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer operator -(int offset) => Pointer.fromAddress(address - sizeOf() * offset); @@ -1053,6 +1073,7 @@ extension BoolPointer on Pointer { /// /// Also `(this + offset).value` is equivalent to `this[offset]`, /// and similarly for setting. + @Since('3.3') Pointer operator +(int offset) => Pointer.fromAddress(address + sizeOf() * offset); @@ -1066,6 +1087,7 @@ extension BoolPointer on Pointer { /// /// Also, `(this - offset).value` is equivalent to `this[-offset]`, /// and similarly for setting, + @Since('3.3') Pointer operator -(int offset) => Pointer.fromAddress(address - sizeOf() * offset); }