mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 09:58:32 +00:00
[cfe/ffi] FfiNative
on getters/setters
Procedure names were used unconditionally to generate 'unique' fields. But the names were equal for getters and setters. This CL adds a kind postfix. TEST=pkg/vm/testcases/transformations/ffi/ffinative.dart TEST=pkg/vm/test/transformations/ffi_test.dart Closes: 49770 Change-Id: I5c99da4ee50852bdfd67fc999a2b659d050a48f8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/255995 Reviewed-by: Jens Johansen <jensj@google.com> Commit-Queue: Daco Harkes <dacoharkes@google.com>
This commit is contained in:
parent
111dfc1844
commit
d099086c39
|
@ -477,7 +477,7 @@ class FfiNativeTransformer extends FfiTransformer {
|
|||
|
||||
// static final _myMethod$FfiNative$Ptr = ..
|
||||
final resolvedField = _createResolvedFfiNativeField(
|
||||
node.name.text,
|
||||
'${node.name.text}\$${node.kind.name}',
|
||||
nativeFunctionName,
|
||||
isLeaf,
|
||||
wrappedDartFunctionType,
|
||||
|
|
|
@ -41,6 +41,12 @@ class NativeClassy extends NativeFieldWrapperClass1 {
|
|||
|
||||
@FfiNative<Bool Function(Pointer<Void>)>('doesntmatter')
|
||||
external bool blah();
|
||||
|
||||
@FfiNative<Bool Function(Pointer<Void>)>('doesntmatter', isLeaf: true)
|
||||
external bool get myField;
|
||||
|
||||
@FfiNative<Void Function(Pointer<Void>, Bool)>('doesntmatter', isLeaf: true)
|
||||
external set myField(bool value);
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
@ -54,4 +60,6 @@ void main() {
|
|||
NativeClassy().goodHasReceiverPtrAndHandle(NativeClassy());
|
||||
NativeClassy().meh(true);
|
||||
NativeClassy().blah();
|
||||
final b = NativeClassy().myField;
|
||||
NativeClassy().myField = !b;
|
||||
}
|
||||
|
|
|
@ -9,18 +9,20 @@ import "dart:ffi";
|
|||
import "dart:nativewrappers";
|
||||
|
||||
abstract class Classy extends core::Object {
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (core::int) → core::int _returnIntPtrStatic$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (core::int) → core::int _returnIntPtrStatic$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static method returnIntPtrStatic() → core::int
|
||||
return self::Classy::_returnIntPtrStatic$FfiNative$Ptr(#C4){(core::int) → core::int};
|
||||
return self::Classy::_returnIntPtrStatic$Method$FfiNative$Ptr(#C4){(core::int) → core::int};
|
||||
}
|
||||
class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>, core::int) → void _goodHasReceiverPointer$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::int) → void, (ffi::Pointer<ffi::Void*>*, ffi::IntPtr*) →* ffi::Void*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::IntPtr*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (self::NativeClassy, core::int) → void _goodHasReceiverHandle$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(self::NativeClassy, core::int) → void, (ffi::Handle*, ffi::IntPtr*) →* ffi::Void*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::IntPtr*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (self::NativeClassy, ffi::Pointer<ffi::Void>) → void _goodHasReceiverHandleAndPtr$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(self::NativeClassy, ffi::Pointer<ffi::Void>) → void, (ffi::Handle*, ffi::Pointer<ffi::Void*>*) →* ffi::Void*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::Pointer<ffi::Void*>*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (self::NativeClassy, self::NativeClassy) → void _goodHasReceiverHandleAndHandle$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(self::NativeClassy, self::NativeClassy) → void, (ffi::Handle*, ffi::Handle*) →* ffi::Void*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::Handle*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>, self::NativeClassy) → void _goodHasReceiverPtrAndHandle$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, self::NativeClassy) → void, (ffi::Pointer<ffi::Void*>*, ffi::Handle*) →* ffi::Void*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::Handle*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>, core::bool) → core::Object? _meh$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::bool) → core::Object?, (ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Handle*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Handle*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>) → core::bool _blah$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>) → core::bool, (ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>*>(ffi::_ffi_resolver(#C1, #C5, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>, core::int) → void _goodHasReceiverPointer$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::int) → void, (ffi::Pointer<ffi::Void*>*, ffi::IntPtr*) →* ffi::Void*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::IntPtr*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (self::NativeClassy, core::int) → void _goodHasReceiverHandle$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(self::NativeClassy, core::int) → void, (ffi::Handle*, ffi::IntPtr*) →* ffi::Void*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::IntPtr*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (self::NativeClassy, ffi::Pointer<ffi::Void>) → void _goodHasReceiverHandleAndPtr$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(self::NativeClassy, ffi::Pointer<ffi::Void>) → void, (ffi::Handle*, ffi::Pointer<ffi::Void*>*) →* ffi::Void*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::Pointer<ffi::Void*>*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (self::NativeClassy, self::NativeClassy) → void _goodHasReceiverHandleAndHandle$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(self::NativeClassy, self::NativeClassy) → void, (ffi::Handle*, ffi::Handle*) →* ffi::Void*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::Handle*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>, self::NativeClassy) → void _goodHasReceiverPtrAndHandle$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, self::NativeClassy) → void, (ffi::Pointer<ffi::Void*>*, ffi::Handle*) →* ffi::Void*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::Handle*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>, core::bool) → core::Object? _meh$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::bool) → core::Object?, (ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Handle*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Handle*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>) → core::bool _blah$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>) → core::bool, (ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>*>(ffi::_ffi_resolver(#C1, #C5, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>) → core::bool _myField$Getter$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>) → core::bool, (ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>*>(ffi::_ffi_resolver(#C1, #C5, #C3){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?] static final field (ffi::Pointer<ffi::Void>, core::bool) → void _myField$Setter$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::bool) → void, (ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Void*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C5, #C6){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
synthetic constructor •() → self::NativeClassy
|
||||
: super nat::NativeFieldWrapperClass1::•()
|
||||
;
|
||||
|
@ -28,7 +30,7 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t1 = this;
|
||||
final core::int #t2 = #C7;
|
||||
final void #t3 = self::NativeClassy::_goodHasReceiverPointer$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
final void #t3 = self::NativeClassy::_goodHasReceiverPointer$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t1);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
|
@ -38,21 +40,21 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
_in::reachabilityFence(#t1);
|
||||
} =>#t3;
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method goodHasReceiverHandle() → void
|
||||
return self::NativeClassy::_goodHasReceiverHandle$FfiNative$Ptr(this, #C7){(self::NativeClassy, core::int) → void};
|
||||
return self::NativeClassy::_goodHasReceiverHandle$Method$FfiNative$Ptr(this, #C7){(self::NativeClassy, core::int) → void};
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method goodHasReceiverHandleAndPtr([@vm.inferred-type.metadata=#lib::NativeClassy] self::NativeClassy v) → void
|
||||
return block {
|
||||
final self::NativeClassy #t4 = this;
|
||||
final nat::NativeFieldWrapperClass1 #t5 = v;
|
||||
final void #t6 = self::NativeClassy::_goodHasReceiverHandleAndPtr$FfiNative$Ptr(#t4, ffi::_fromAddress<ffi::Void>([@vm.inferred-type.metadata=int?] nat::_getNativeField(#t5))){(self::NativeClassy, ffi::Pointer<ffi::Void>) → void};
|
||||
final void #t6 = self::NativeClassy::_goodHasReceiverHandleAndPtr$Method$FfiNative$Ptr(#t4, ffi::_fromAddress<ffi::Void>([@vm.inferred-type.metadata=int?] nat::_getNativeField(#t5))){(self::NativeClassy, ffi::Pointer<ffi::Void>) → void};
|
||||
_in::reachabilityFence(#t5);
|
||||
} =>#t6;
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method goodHasReceiverHandleAndHandle([@vm.inferred-type.metadata=#lib::NativeClassy] self::NativeClassy v) → void
|
||||
return self::NativeClassy::_goodHasReceiverHandleAndHandle$FfiNative$Ptr(this, v){(self::NativeClassy, self::NativeClassy) → void};
|
||||
return self::NativeClassy::_goodHasReceiverHandleAndHandle$Method$FfiNative$Ptr(this, v){(self::NativeClassy, self::NativeClassy) → void};
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method goodHasReceiverPtrAndHandle([@vm.inferred-type.metadata=#lib::NativeClassy] self::NativeClassy v) → void
|
||||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t7 = this;
|
||||
final self::NativeClassy #t8 = v;
|
||||
final void #t9 = self::NativeClassy::_goodHasReceiverPtrAndHandle$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
final void #t9 = self::NativeClassy::_goodHasReceiverPtrAndHandle$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t7);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
|
@ -65,7 +67,7 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t10 = this;
|
||||
final core::bool #t11 = #C10;
|
||||
final core::String? #t12 = _in::unsafeCast<core::String?>(self::NativeClassy::_meh$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
final core::String? #t12 = _in::unsafeCast<core::String?>(self::NativeClassy::_meh$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t10);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
|
@ -77,7 +79,7 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method blah() → core::bool
|
||||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t13 = this;
|
||||
final core::bool #t14 = self::NativeClassy::_blah$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
final core::bool #t14 = self::NativeClassy::_blah$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t13);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
|
@ -86,13 +88,38 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
} =>#pointerAddress)){(ffi::Pointer<ffi::Void>) → core::bool};
|
||||
_in::reachabilityFence(#t13);
|
||||
} =>#t14;
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] get myField() → core::bool
|
||||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t15 = this;
|
||||
final core::bool #t16 = self::NativeClassy::_myField$Getter$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t15);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
else
|
||||
;
|
||||
} =>#pointerAddress)){(ffi::Pointer<ffi::Void>) → core::bool};
|
||||
_in::reachabilityFence(#t15);
|
||||
} =>#t16;
|
||||
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] set myField([@vm.inferred-type.metadata=dart.core::bool] core::bool value) → void
|
||||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t17 = this;
|
||||
final core::bool #t18 = value;
|
||||
final void #t19 = self::NativeClassy::_myField$Setter$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = [@vm.inferred-type.metadata=int?] nat::_getNativeField(#t17);
|
||||
if([@vm.inferred-type.metadata=dart.core::bool] #pointerAddress.{core::Object::==}(#C8){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C9);
|
||||
else
|
||||
;
|
||||
} =>#pointerAddress), #t18){(ffi::Pointer<ffi::Void>, core::bool) → void};
|
||||
_in::reachabilityFence(#t17);
|
||||
} =>#t19;
|
||||
}
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?]static final field (core::int) → core::int _returnIntPtr$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?]static final field (core::int) → core::int _returnIntPtrLeaf$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?]static final field (core::int) → core::int _returnIntPtr$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
[@vm.inferred-type.metadata=dart.core::_Closure?]static final field (core::int) → core::int _returnIntPtrLeaf$Method$FfiNative$Ptr = [@vm.inferred-type.metadata=dart.core::_Closure?] ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>([@vm.inferred-type.metadata=dart.ffi::Pointer?] ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
static method returnIntPtr() → core::int
|
||||
return self::_returnIntPtr$FfiNative$Ptr(#C11){(core::int) → core::int};
|
||||
return self::_returnIntPtr$Method$FfiNative$Ptr(#C11){(core::int) → core::int};
|
||||
static method returnIntPtrLeaf() → core::int
|
||||
return self::_returnIntPtrLeaf$FfiNative$Ptr(#C12){(core::int) → core::int};
|
||||
return self::_returnIntPtrLeaf$Method$FfiNative$Ptr(#C12){(core::int) → core::int};
|
||||
static method main() → void {
|
||||
self::returnIntPtr();
|
||||
self::returnIntPtrLeaf();
|
||||
|
@ -104,6 +131,8 @@ static method main() → void {
|
|||
[@vm.direct-call.metadata=#lib::NativeClassy.goodHasReceiverPtrAndHandle] [@vm.inferred-type.metadata=!? (skip check)] new self::NativeClassy::•().{self::NativeClassy::goodHasReceiverPtrAndHandle}(new self::NativeClassy::•()){(self::NativeClassy) → void};
|
||||
[@vm.direct-call.metadata=#lib::NativeClassy.meh] [@vm.inferred-type.metadata=!? (skip check)] new self::NativeClassy::•().{self::NativeClassy::meh}(){(core::bool) → core::String?};
|
||||
[@vm.direct-call.metadata=#lib::NativeClassy.blah] [@vm.inferred-type.metadata=!? (skip check)] new self::NativeClassy::•().{self::NativeClassy::blah}(){() → core::bool};
|
||||
final core::bool b = [@vm.direct-call.metadata=#lib::NativeClassy.myField] [@vm.inferred-type.metadata=dart.core::bool?] new self::NativeClassy::•().{self::NativeClassy::myField}{core::bool};
|
||||
[@vm.direct-call.metadata=#lib::NativeClassy.myField] [@vm.inferred-type.metadata=!? (skip check)] new self::NativeClassy::•().{self::NativeClassy::myField} = !b;
|
||||
}
|
||||
constants {
|
||||
#C1 = "#lib"
|
||||
|
|
|
@ -9,21 +9,23 @@ import "dart:ffi";
|
|||
import "dart:nativewrappers";
|
||||
|
||||
class Classy extends core::Object {
|
||||
static final field (core::int) → core::int _returnIntPtrStatic$FfiNative$Ptr = ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (core::int) → core::int _returnIntPtrStatic$Method$FfiNative$Ptr = ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
synthetic constructor •() → self::Classy
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method returnIntPtrStatic(core::int x) → core::int
|
||||
return self::Classy::_returnIntPtrStatic$FfiNative$Ptr(x){(core::int) → core::int};
|
||||
return self::Classy::_returnIntPtrStatic$Method$FfiNative$Ptr(x){(core::int) → core::int};
|
||||
}
|
||||
class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
||||
static final field (ffi::Pointer<ffi::Void>, core::int) → void _goodHasReceiverPointer$FfiNative$Ptr = ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::int) → void, (ffi::Pointer<ffi::Void*>*, ffi::IntPtr*) →* ffi::Void*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::IntPtr*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (self::NativeClassy, core::int) → void _goodHasReceiverHandle$FfiNative$Ptr = ffi::_asFunctionInternal<(self::NativeClassy, core::int) → void, (ffi::Handle*, ffi::IntPtr*) →* ffi::Void*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::IntPtr*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (self::NativeClassy, ffi::Pointer<ffi::Void>) → void _goodHasReceiverHandleAndPtr$FfiNative$Ptr = ffi::_asFunctionInternal<(self::NativeClassy, ffi::Pointer<ffi::Void>) → void, (ffi::Handle*, ffi::Pointer<ffi::Void*>*) →* ffi::Void*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::Pointer<ffi::Void*>*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (self::NativeClassy, self::NativeClassy) → void _goodHasReceiverHandleAndHandle$FfiNative$Ptr = ffi::_asFunctionInternal<(self::NativeClassy, self::NativeClassy) → void, (ffi::Handle*, ffi::Handle*) →* ffi::Void*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::Handle*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (ffi::Pointer<ffi::Void>, self::NativeClassy) → void _goodHasReceiverPtrAndHandle$FfiNative$Ptr = ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, self::NativeClassy) → void, (ffi::Pointer<ffi::Void*>*, ffi::Handle*) →* ffi::Void*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::Handle*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (ffi::Pointer<ffi::Void>, core::bool) → core::Object? _meh$FfiNative$Ptr = ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::bool) → core::Object?, (ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Handle*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Handle*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (ffi::Pointer<ffi::Void>) → core::bool _blah$FfiNative$Ptr = ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>) → core::bool, (ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>*>(ffi::_ffi_resolver(#C1, #C4, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (ffi::Pointer<ffi::Void>, core::int) → void _goodHasReceiverPointer$Method$FfiNative$Ptr = ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::int) → void, (ffi::Pointer<ffi::Void*>*, ffi::IntPtr*) →* ffi::Void*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::IntPtr*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (self::NativeClassy, core::int) → void _goodHasReceiverHandle$Method$FfiNative$Ptr = ffi::_asFunctionInternal<(self::NativeClassy, core::int) → void, (ffi::Handle*, ffi::IntPtr*) →* ffi::Void*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::IntPtr*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (self::NativeClassy, ffi::Pointer<ffi::Void>) → void _goodHasReceiverHandleAndPtr$Method$FfiNative$Ptr = ffi::_asFunctionInternal<(self::NativeClassy, ffi::Pointer<ffi::Void>) → void, (ffi::Handle*, ffi::Pointer<ffi::Void*>*) →* ffi::Void*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::Pointer<ffi::Void*>*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (self::NativeClassy, self::NativeClassy) → void _goodHasReceiverHandleAndHandle$Method$FfiNative$Ptr = ffi::_asFunctionInternal<(self::NativeClassy, self::NativeClassy) → void, (ffi::Handle*, ffi::Handle*) →* ffi::Void*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Handle*, ffi::Handle*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (ffi::Pointer<ffi::Void>, self::NativeClassy) → void _goodHasReceiverPtrAndHandle$Method$FfiNative$Ptr = ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, self::NativeClassy) → void, (ffi::Pointer<ffi::Void*>*, ffi::Handle*) →* ffi::Void*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::Handle*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (ffi::Pointer<ffi::Void>, core::bool) → core::Object? _meh$Method$FfiNative$Ptr = ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::bool) → core::Object?, (ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Handle*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Handle*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (ffi::Pointer<ffi::Void>) → core::bool _blah$Method$FfiNative$Ptr = ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>) → core::bool, (ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>*>(ffi::_ffi_resolver(#C1, #C4, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (ffi::Pointer<ffi::Void>) → core::bool _myField$Getter$FfiNative$Ptr = ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>) → core::bool, (ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*) →* ffi::Bool*>*>(ffi::_ffi_resolver(#C1, #C4, #C3){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
static final field (ffi::Pointer<ffi::Void>, core::bool) → void _myField$Setter$FfiNative$Ptr = ffi::_asFunctionInternal<(ffi::Pointer<ffi::Void>, core::bool) → void, (ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Void*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::Pointer<ffi::Void*>*, ffi::Bool*) →* ffi::Void*>*>(ffi::_ffi_resolver(#C1, #C4, #C5){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
synthetic constructor •() → self::NativeClassy
|
||||
: super nat::NativeFieldWrapperClass1::•()
|
||||
;
|
||||
|
@ -31,7 +33,7 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t1 = this;
|
||||
final core::int #t2 = v;
|
||||
final void #t3 = self::NativeClassy::_goodHasReceiverPointer$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
final void #t3 = self::NativeClassy::_goodHasReceiverPointer$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = nat::_getNativeField(#t1);
|
||||
if(#pointerAddress.{core::Object::==}(#C6){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C7);
|
||||
|
@ -41,21 +43,21 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
_in::reachabilityFence(#t1);
|
||||
} =>#t3;
|
||||
method goodHasReceiverHandle(core::int v) → void
|
||||
return self::NativeClassy::_goodHasReceiverHandle$FfiNative$Ptr(this, v){(self::NativeClassy, core::int) → void};
|
||||
return self::NativeClassy::_goodHasReceiverHandle$Method$FfiNative$Ptr(this, v){(self::NativeClassy, core::int) → void};
|
||||
method goodHasReceiverHandleAndPtr(self::NativeClassy v) → void
|
||||
return block {
|
||||
final self::NativeClassy #t4 = this;
|
||||
final nat::NativeFieldWrapperClass1 #t5 = v;
|
||||
final void #t6 = self::NativeClassy::_goodHasReceiverHandleAndPtr$FfiNative$Ptr(#t4, ffi::_fromAddress<ffi::Void>(nat::_getNativeField(#t5))){(self::NativeClassy, ffi::Pointer<ffi::Void>) → void};
|
||||
final void #t6 = self::NativeClassy::_goodHasReceiverHandleAndPtr$Method$FfiNative$Ptr(#t4, ffi::_fromAddress<ffi::Void>(nat::_getNativeField(#t5))){(self::NativeClassy, ffi::Pointer<ffi::Void>) → void};
|
||||
_in::reachabilityFence(#t5);
|
||||
} =>#t6;
|
||||
method goodHasReceiverHandleAndHandle(self::NativeClassy v) → void
|
||||
return self::NativeClassy::_goodHasReceiverHandleAndHandle$FfiNative$Ptr(this, v){(self::NativeClassy, self::NativeClassy) → void};
|
||||
return self::NativeClassy::_goodHasReceiverHandleAndHandle$Method$FfiNative$Ptr(this, v){(self::NativeClassy, self::NativeClassy) → void};
|
||||
method goodHasReceiverPtrAndHandle(self::NativeClassy v) → void
|
||||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t7 = this;
|
||||
final self::NativeClassy #t8 = v;
|
||||
final void #t9 = self::NativeClassy::_goodHasReceiverPtrAndHandle$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
final void #t9 = self::NativeClassy::_goodHasReceiverPtrAndHandle$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = nat::_getNativeField(#t7);
|
||||
if(#pointerAddress.{core::Object::==}(#C6){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C7);
|
||||
|
@ -68,7 +70,7 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t10 = this;
|
||||
final core::bool #t11 = blah;
|
||||
final core::String? #t12 = _in::unsafeCast<core::String?>(self::NativeClassy::_meh$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
final core::String? #t12 = _in::unsafeCast<core::String?>(self::NativeClassy::_meh$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = nat::_getNativeField(#t10);
|
||||
if(#pointerAddress.{core::Object::==}(#C6){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C7);
|
||||
|
@ -80,7 +82,7 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
method blah() → core::bool
|
||||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t13 = this;
|
||||
final core::bool #t14 = self::NativeClassy::_blah$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
final core::bool #t14 = self::NativeClassy::_blah$Method$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = nat::_getNativeField(#t13);
|
||||
if(#pointerAddress.{core::Object::==}(#C6){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C7);
|
||||
|
@ -89,13 +91,38 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 {
|
|||
} =>#pointerAddress)){(ffi::Pointer<ffi::Void>) → core::bool};
|
||||
_in::reachabilityFence(#t13);
|
||||
} =>#t14;
|
||||
get myField() → core::bool
|
||||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t15 = this;
|
||||
final core::bool #t16 = self::NativeClassy::_myField$Getter$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = nat::_getNativeField(#t15);
|
||||
if(#pointerAddress.{core::Object::==}(#C6){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C7);
|
||||
else
|
||||
;
|
||||
} =>#pointerAddress)){(ffi::Pointer<ffi::Void>) → core::bool};
|
||||
_in::reachabilityFence(#t15);
|
||||
} =>#t16;
|
||||
set myField(core::bool value) → void
|
||||
return block {
|
||||
final nat::NativeFieldWrapperClass1 #t17 = this;
|
||||
final core::bool #t18 = value;
|
||||
final void #t19 = self::NativeClassy::_myField$Setter$FfiNative$Ptr(ffi::_fromAddress<ffi::Void>( block {
|
||||
core::int #pointerAddress = nat::_getNativeField(#t17);
|
||||
if(#pointerAddress.{core::Object::==}(#C6){(core::Object) → core::bool})
|
||||
core::StateError::_throwNew(#C7);
|
||||
else
|
||||
;
|
||||
} =>#pointerAddress), #t18){(ffi::Pointer<ffi::Void>, core::bool) → void};
|
||||
_in::reachabilityFence(#t17);
|
||||
} =>#t19;
|
||||
}
|
||||
static final field (core::int) → core::int _returnIntPtr$FfiNative$Ptr = ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (core::int) → core::int _returnIntPtrLeaf$FfiNative$Ptr = ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
static final field (core::int) → core::int _returnIntPtr$Method$FfiNative$Ptr = ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), false)/*isLegacy*/;
|
||||
static final field (core::int) → core::int _returnIntPtrLeaf$Method$FfiNative$Ptr = ffi::_asFunctionInternal<(core::int) → core::int, (ffi::IntPtr*) →* ffi::IntPtr*>(ffi::_fromAddress<ffi::NativeFunction<(ffi::IntPtr*) →* ffi::IntPtr*>*>(ffi::_ffi_resolver(#C1, #C2, #C3){(core::Object, core::Object, core::int) → core::int}), true)/*isLegacy*/;
|
||||
static method returnIntPtr(core::int x) → core::int
|
||||
return self::_returnIntPtr$FfiNative$Ptr(x){(core::int) → core::int};
|
||||
return self::_returnIntPtr$Method$FfiNative$Ptr(x){(core::int) → core::int};
|
||||
static method returnIntPtrLeaf(core::int x) → core::int
|
||||
return self::_returnIntPtrLeaf$FfiNative$Ptr(x){(core::int) → core::int};
|
||||
return self::_returnIntPtrLeaf$Method$FfiNative$Ptr(x){(core::int) → core::int};
|
||||
static method main() → void {
|
||||
self::returnIntPtr(13);
|
||||
self::returnIntPtrLeaf(37);
|
||||
|
@ -107,6 +134,8 @@ static method main() → void {
|
|||
new self::NativeClassy::•().{self::NativeClassy::goodHasReceiverPtrAndHandle}(new self::NativeClassy::•()){(self::NativeClassy) → void};
|
||||
new self::NativeClassy::•().{self::NativeClassy::meh}(true){(core::bool) → core::String?};
|
||||
new self::NativeClassy::•().{self::NativeClassy::blah}(){() → core::bool};
|
||||
final core::bool b = new self::NativeClassy::•().{self::NativeClassy::myField}{core::bool};
|
||||
new self::NativeClassy::•().{self::NativeClassy::myField} = !b;
|
||||
}
|
||||
constants {
|
||||
#C1 = "#lib"
|
||||
|
|
Loading…
Reference in a new issue