abi_specific_integer_invalid
'AbiSpecificInteger' を拡張するクラスは、const コンストラクタを 1 つだけ持ち、その他のメンバーがなく、型パラメータを持たない必要があります。
説明
#アナライザーは、AbiSpecificInteger を拡張するクラスが以下のすべての要件を満たさない場合に、この診断を生成します。
- コンストラクタは 1 つだけ存在する必要があります
- コンストラクタは
constとマークされている必要があります - 1 つのコンストラクタ以外のメンバーは存在しない必要があります
- 型パラメータは存在しない必要があります
例
#以下のコードは、クラス C が const コンストラクタを定義していないため、この診断を生成します。
dart
import 'dart:ffi';
@AbiSpecificIntegerMapping({Abi.macosX64 : Int8()})
final class C extends AbiSpecificInteger {
}以下のコードは、コンストラクタが const コンストラクタではないため、この診断を生成します。
dart
import 'dart:ffi';
@AbiSpecificIntegerMapping({Abi.macosX64 : Int8()})
final class C extends AbiSpecificInteger {
C();
}以下のコードは、クラス C が複数のコンストラクタを定義しているため、この診断を生成します。
dart
import 'dart:ffi';
@AbiSpecificIntegerMapping({Abi.macosX64 : Int8()})
final class C extends AbiSpecificInteger {
const C.zero();
const C.one();
}以下のコードは、クラス C がフィールドを定義しているため、この診断を生成します。
dart
import 'dart:ffi';
@AbiSpecificIntegerMapping({Abi.macosX64 : Int8()})
final class C extends AbiSpecificInteger {
final int i;
const C(this.i);
}以下のコードは、クラス C が型パラメータを持っているため、この診断を生成します。
dart
import 'dart:ffi';
@AbiSpecificIntegerMapping({Abi.macosX64 : Int8()})
final class C<T> extends AbiSpecificInteger { // type parameters
const C();
}一般的な修正
#型パラメータがなく、const コンストラクタを 1 つだけ持つという要件を満たすようにクラスを変更してください。
dart
import 'dart:ffi';
@AbiSpecificIntegerMapping({Abi.macosX64 : Int8()})
final class C extends AbiSpecificInteger {
const C();
}