mixin_class_declares_non_trivial_generative_constructor 진단: mixin class는 자명하지 않은 생성자를 선언할 수 없어요

mixin_class_declares_non_trivial_generative_constructor 진단: mixin class는 자명하지 않은 생성자를 선언할 수 없어요

분석기가 내보내는 진단에는 이름이 있어요. mixin_class_declares_non_trivial_generative_constructormixin class가 자명하지 않은(non-trivial) 생성자(generative constructor)를 선언할 때 Dart 분석기가 알려주는 컴파일 타임 진단이에요. 자명한(trivial) 생성자는 허용되지만, 매개변수나 본문, 초기화식이 있는 자명하지 않은 생성자는 허용되지 않아요.

출처: mixin_class_declares_non_trivial_generative_constructor

본문

설명

분석기는 mixin class가 자명하지 않은 생성자를 선언하면 이 진단을 만들어요. 자명한 생성자는 허용되지만, 매개변수나 본문, 초기화식이 있는 자명하지 않은 생성자는 허용되지 않아요.

예시

다음 코드는 mixin class A가 초기화식을 가진 생성자를 정의하고 있어서 이 진단이 나와요.

mixin class A {
 A() : assert(true);
}

흔한 해결 방법

생성자의 초기화식이나 본문, 매개변수를 제거해서 자명하게 만들 수 있다면, 그렇게 해 줘요.

mixin class A {
 A(); // Trivial constructor
}

생성자를 자명하게 만들 수 없다면, mixin class를 일반 class로 바꿔서 extends 나 implements 하거나, mixin 기능을 분리해 줘요.

class A {
 A() : assert(true);
}

// 동작을 섞어 넣기 위한 별도의 mixin
mixin class AM {}

더 알아보기