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