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();
}