empty_struct 진단: Struct나 Union의 서브클래스는 비워 둘 수 없어요

empty_struct 진단: Struct나 Union의 서브클래스는 비워 둘 수 없어요

Dart 분석기가 만들어 내는 empty_struct 진단에 대한 설명이에요.

출처: empty_struct

본문

StructUnion의 서브클래스에는 필드가 하나 이상 있어야 해요. StructUnion을 필드 없이 빈 채로 두는 건 지원되지 않기 때문에, 이렇게 쓰면 이 진단이 나와요.

설명

StructUnion의 서브클래스에 필드가 하나도 없으면 분석기가 이 진단을 만들어 내요. 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 {}

더 알아보기