Files
sdk/pkg/vm/testcases/transformations/ffi/as_function.dart
T
Alexander Markov dcdfcc2b8d Reland "[vm/ffi] Express FFI call closures explicitly in AST"
This reverts commit 1800039c2a.

The changes fd2e9b9f1a and
c20f9eaf6f are relanded as is.

Reason for revert was fixed separately in
https://dart-review.googlesource.com/c/sdk/+/341621

TEST=ci

CoreLibraryReviewExempt: Implementation change only.
Issue: https://github.com/dart-lang/sdk/issues/54172
Issue: https://github.com/dart-lang/sdk/issues/39692
Change-Id: I1a2324768502e5ffbce328127938c0d3c96c38ba
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/341642
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2023-12-15 15:25:29 +00:00

38 lines
1.0 KiB
Dart

// Copyright (c) 2023, 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.
// Tests for NativeFunctionPointer.asFunction transformation.
import 'dart:ffi';
testVoidNoArg() {
final pointer =
Pointer<NativeFunction<Void Function()>>.fromAddress(0xdeadbeef);
final function = pointer.asFunction<void Function()>();
function();
}
testIntInt() {
final pointer =
Pointer<NativeFunction<Int32 Function(Int64)>>.fromAddress(0xdeadbeef);
final function = pointer.asFunction<int Function(int)>();
return function(42);
}
testLeaf5Args() {
final pointer = Pointer<
NativeFunction<
Int32 Function(
Int32, Int32, Int32, Int32, Int32)>>.fromAddress(0xdeadbeef);
final function =
pointer.asFunction<int Function(int, int, int, int, int)>(isLeaf: true);
return function(1, 2, 3, 4, 5);
}
void main() {
testVoidNoArg();
testIntInt();
testLeaf5Args();
}