@@ -229,6 +229,7 @@ class FfiTransformer extends Transformer {
229
229
final Field arraySizeDimension5Field;
230
230
final Field arraySizeDimensionsField;
231
231
final Class pointerClass;
232
+ final Class compoundClass;
232
233
final Class structClass;
233
234
final Class ffiStructLayoutClass;
234
235
final Field ffiStructLayoutTypesField;
@@ -330,6 +331,7 @@ class FfiTransformer extends Transformer {
330
331
arraySizeDimensionsField =
331
332
index.getMember ('dart:ffi' , '_ArraySize' , 'dimensions' ),
332
333
pointerClass = index.getClass ('dart:ffi' , 'Pointer' ),
334
+ compoundClass = index.getClass ('dart:ffi' , '_Compound' ),
333
335
structClass = index.getClass ('dart:ffi' , 'Struct' ),
334
336
ffiStructLayoutClass = index.getClass ('dart:ffi' , '_FfiStructLayout' ),
335
337
ffiStructLayoutTypesField =
@@ -459,8 +461,7 @@ class FfiTransformer extends Transformer {
459
461
/// [NativeFunction] <T1 Function(T2, T3) -> S1 Function(S2, S3)
460
462
/// where DartRepresentationOf(Tn) -> Sn
461
463
DartType convertNativeTypeToDartType (DartType nativeType,
462
- {bool allowStructs = false ,
463
- bool allowStructItself = false ,
464
+ {bool allowCompounds = false ,
464
465
bool allowHandle = false ,
465
466
bool allowInlineArray = false }) {
466
467
if (nativeType is ! InterfaceType ) {
@@ -476,11 +477,11 @@ class FfiTransformer extends Transformer {
476
477
}
477
478
return nativeType;
478
479
}
479
- if (hierarchy.isSubclassOf (nativeClass, structClass )) {
480
- if (structClass == nativeClass ) {
481
- return allowStructItself ? nativeType : null ;
480
+ if (hierarchy.isSubclassOf (nativeClass, compoundClass )) {
481
+ if (nativeClass == structClass ) {
482
+ return null ;
482
483
}
483
- return allowStructs ? nativeType : null ;
484
+ return allowCompounds ? nativeType : null ;
484
485
}
485
486
if (nativeType_ == null ) {
486
487
return null ;
@@ -514,11 +515,11 @@ class FfiTransformer extends Transformer {
514
515
if (fun.typeParameters.length != 0 ) return null ;
515
516
516
517
final DartType returnType = convertNativeTypeToDartType (fun.returnType,
517
- allowStructs : allowStructs , allowHandle: true );
518
+ allowCompounds : true , allowHandle: true );
518
519
if (returnType == null ) return null ;
519
520
final List <DartType > argumentTypes = fun.positionalParameters
520
521
.map ((t) => convertNativeTypeToDartType (t,
521
- allowStructs : allowStructs , allowHandle: true ))
522
+ allowCompounds : true , allowHandle: true ))
522
523
.toList ();
523
524
if (argumentTypes.contains (null )) return null ;
524
525
return FunctionType (argumentTypes, returnType, Nullability .legacy);
@@ -740,7 +741,7 @@ class FfiTransformer extends Transformer {
740
741
return dimensions;
741
742
}
742
743
743
- bool isStructSubtype (DartType type) {
744
+ bool isCompoundSubtype (DartType type) {
744
745
if (type is InvalidType ) {
745
746
return false ;
746
747
}
@@ -762,9 +763,9 @@ class FfiTransformer extends Transformer {
762
763
class FfiTransformerData {
763
764
final Map <Field , Procedure > replacedGetters;
764
765
final Map <Field , Procedure > replacedSetters;
765
- final Set <Class > emptyStructs ;
766
+ final Set <Class > emptyCompounds ;
766
767
FfiTransformerData (
767
- this .replacedGetters, this .replacedSetters, this .emptyStructs );
768
+ this .replacedGetters, this .replacedSetters, this .emptyCompounds );
768
769
}
769
770
770
771
/// Checks if any library depends on dart:ffi.
0 commit comments