empty_struct 진단: Struct나 Union의 서브클래스는 비워 둘 수 없어요
empty_struct 진단: Struct나 Union의 서브클래스는 비워 둘 수 없어요
Dart 분석기가 만들어 내는 empty_struct 진단에 대한 설명이에요.
출처: empty_struct
본문
Struct나 Union의 서브클래스에는 필드가 하나 이상 있어야 해요. Struct나 Union을 필드 없이 빈 채로 두는 건 지원되지 않기 때문에, 이렇게 쓰면 이 진단이 나와요.
설명
Struct나 Union의 서브클래스에 필드가 하나도 없으면 분석기가 이 진단을 만들어 내요. FFI에 대한 더 자세한 내용은 dart:ffi를 이용한 C interop 문서를 참고하세요.
예시
다음 코드는 Struct를 상속하는 클래스 C가 필드를 하나도 선언하지 않기 때문에 이 진단을 만들어요.
import 'dart:ffi';
final class C extends Struct {}
흔한 해결 방법
클래스를 struct로 쓰려는 의도였다면, 필드를 하나 이상 선언하면 돼요.
import 'dart:ffi';
final class C extends Struct {
@Int32()
external int x;
}
클래스를 Pointer의 타입 인자로 쓰려는 의도였다면, Struct 대신 Opaque의 서브클래스로 만들면 돼요.
import 'dart:ffi';
final class C extends Opaque {}
클래스를 struct로 쓰려는 의도가 아니라면, extends 절을 제거하거나 바꿔 주면 돼요.
class C {}