mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:36:59 +00:00
3de5d25429
Split off https://dart-review.googlesource.com/c/sdk/+/291761. Landing separately, so that the breaking change itself is a smaller CL. TEST=ci build (see touched _test files) bug: https://github.com/dart-lang/sdk/issues/51896 Change-Id: Ic8d218845ccb6a277689e911b2c34c44639e13cf Cq-Include-Trybots: luci.dart.try:flutter-linux-try,vm-aot-linux-debug-x64c-try,vm-ffi-android-debug-arm-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292000 Reviewed-by: Martin Kustermann <kustermann@google.com> Commit-Queue: Daco Harkes <dacoharkes@google.com>
45 lines
1.4 KiB
Dart
45 lines
1.4 KiB
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.
|
|
|
|
// NOTE: There is no `test/ffi_2/...` version of this test since annotations
|
|
// with type arguments isn't supported in that version of Dart.
|
|
|
|
import 'dart:ffi';
|
|
import 'dart:nativewrappers';
|
|
|
|
class Classy {
|
|
@FfiNative<IntPtr Function(IntPtr)>('ReturnIntPtr')
|
|
external static int returnIntPtrStatic(int x);
|
|
|
|
@FfiNative<Void Function(Handle, IntPtr)>('doesntmatter')
|
|
external void goodHasReceiverHandle(int v);
|
|
}
|
|
|
|
base class NativeClassy extends NativeFieldWrapperClass1 {
|
|
@FfiNative<IntPtr Function(IntPtr)>('ReturnIntPtr')
|
|
external static int returnIntPtrStatic(int x);
|
|
|
|
@FfiNative<Void Function(Pointer<Void>, IntPtr)>('doesntmatter')
|
|
external void goodHasReceiverPointer(int v);
|
|
|
|
@FfiNative<Void Function(Handle, IntPtr)>('doesntmatter')
|
|
external void goodHasReceiverHandle(int v);
|
|
}
|
|
|
|
// Regression test: Ensure same-name FfiNative functions don't collide in the
|
|
// top-level namespace, but instead live under their parent (Library, Class).
|
|
class A {
|
|
@FfiNative<Void Function()>('nop')
|
|
external static void foo();
|
|
}
|
|
|
|
class B {
|
|
@FfiNative<Void Function()>('nop')
|
|
external static void foo();
|
|
}
|
|
|
|
void main() {
|
|
/* Intentionally empty: Checks that the transform succeeds. */
|
|
}
|