mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 16:41:07 +00:00
![Daco Harkes](/assets/img/avatar_default.png)
`Dart_NewWeakPersistentHandle` and `Dart_NewFinalizableHandle` in `dart_api.h` do no longer accept `Pointer`s and subtypes of `Struct`s as values passed in to the `object` parameter. Expandos no longer accept `Pointer`s and subtypes of `Struct`s as values passed in to the `object` parameter. Cleans up unused object_store->ffi_struct_class. Reland 1: Allow importing `dart:ffi` from `dart:core` with `--enable-ffi=false`. Reland 2: Allow the new `_Compound` class to extend `NativeType`. (This got triggered in this CL on the build because of the import from `dart:core`.) Closes: https://github.com/dart-lang/sdk/issues/45071 Breaking change: https://github.com/dart-lang/sdk/issues/45072 TEST=vm/cc/DartAPI_FinalizableHandleErrors TEST=vm/cc/DartAPI_WeakPersistentHandleErrors TEST=tests/ffi(_2)/expando_test.dart Change-Id: I133278e16bd75cd2bb6234e7ddf042ffa0a54fd6 Cq-Include-Trybots: luci.dart.try:dart-sdk-linux-try,dart-sdk-mac-try,dart-sdk-win-try,vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-mac-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-ia32-try,vm-kernel-nnbd-mac-release-x64-try,vm-kernel-nnbd-win-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-simarm_x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-win-release-x64-try,vm-kernel-reload-linux-debug-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-msan-linux-release-x64-try,vm-kernel-precomp-msan-linux-release-x64-try,vm-kernel-precomp-android-release-arm_x64-try,analyzer-analysis-server-linux-try,vm-kernel-precomp-linux-debug-x64c-try,vm-kernel-linux-debug-x64c-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195079 Reviewed-by: Martin Kustermann <kustermann@google.com> Commit-Queue: Daco Harkes <dacoharkes@google.com>
44 lines
946 B
Dart
44 lines
946 B
Dart
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
//
|
|
// Dart test program for testing dart:ffi primitive data pointers.
|
|
//
|
|
// SharedObjects=ffi_test_functions
|
|
|
|
import 'dart:ffi';
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
void main() {
|
|
testPointer();
|
|
testStruct();
|
|
}
|
|
|
|
Expando<int> expando = Expando('myExpando');
|
|
|
|
void testPointer() {
|
|
final pointer = Pointer<Int8>.fromAddress(0xdeadbeef);
|
|
Expect.throws(() {
|
|
expando[pointer];
|
|
});
|
|
Expect.throws(() {
|
|
expando[pointer] = 1234;
|
|
});
|
|
}
|
|
|
|
class MyStruct extends Struct {
|
|
external Pointer notEmpty;
|
|
}
|
|
|
|
void testStruct() {
|
|
final pointer = Pointer<MyStruct>.fromAddress(0xdeadbeef);
|
|
final struct = pointer.ref;
|
|
Expect.throws(() {
|
|
expando[struct];
|
|
});
|
|
Expect.throws(() {
|
|
expando[struct] = 1234;
|
|
});
|
|
}
|