abi_specific_integer_invalid
扩展“AbiSpecificInteger”的类必须只有一个 const 构造函数,不能有其他成员,也不能有类型参数。
描述
#当扩展 AbiSpecificInteger
的类不满足以下所有要求时,分析器会生成此诊断消息
- 必须只有一个构造函数
- 构造函数必须标记为
const
- 除了这一个构造函数之外,不能有任何其他成员
- 不能有任何类型参数
示例
#以下代码会生成此诊断消息,因为类 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
构造函数)的要求
dart
import 'dart:ffi';
@AbiSpecificIntegerMapping({Abi.macosX64 : Int8()})
final class C extends AbiSpecificInteger {
const C();
}