Pular para o conteúdo principal

abi_specific_integer_invalid

Detalhes sobre o diagnóstico 'abi_specific_integer_invalid' produzido pelo analisador do Dart.

Classes extending 'AbiSpecificInteger' must have exactly one const constructor, no other members, and no type parameters.

Descrição

#

O analisador emite este diagnóstico quando uma classe que estende AbiSpecificInteger não atende a todos os requisitos a seguir:

  • deve haver exatamente um construtor
  • o construtor deve ser marcado com const
  • não pode haver membros além desse único construtor
  • não pode haver parâmetros de tipo

Exemplos

#

O código a seguir produz este diagnóstico porque a classe C não define um construtor const:

dart
import 'dart:ffi';
​
@AbiSpecificIntegerMapping({Abi.macosX64: Int8()})
final class C extends AbiSpecificInteger {}

O código a seguir produz este diagnóstico porque o construtor não é um construtor const:

dart
import 'dart:ffi';
​
@AbiSpecificIntegerMapping({Abi.macosX64: Int8()})
final class C extends AbiSpecificInteger {
  C();
}

O código a seguir produz este diagnóstico porque a classe C define vários construtores:

dart
import 'dart:ffi';
​
@AbiSpecificIntegerMapping({Abi.macosX64: Int8()})
final class C extends AbiSpecificInteger {
  const C.zero();
  const C.one();
}

O código a seguir produz este diagnóstico porque a classe C define um campo:

dart
import 'dart:ffi';
​
@AbiSpecificIntegerMapping({Abi.macosX64: Int8()})
final class C extends AbiSpecificInteger {
  final int i;
​
  const C(this.i);
}

O código a seguir produz este diagnóstico porque a classe C tem um parâmetro de tipo:

dart
import 'dart:ffi';
​
@AbiSpecificIntegerMapping({Abi.macosX64: Int8()})
// type parameters
final class C<T> extends AbiSpecificInteger {
  const C();
}

Correções comuns

#

Altere a classe para que ela atenda aos requisitos de não ter parâmetros de tipo e de ter um único membro, que é um construtor const:

dart
import 'dart:ffi';
​
@AbiSpecificIntegerMapping({Abi.macosX64: Int8()})
final class C extends AbiSpecificInteger {
  const C();
}

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.