assert_in_redirecting_constructor

assert_in_redirecting_constructor

Dart 애널라이저가 생성하는 assert_in_redirecting_constructor 진단에 대한 설명이에요.

출처: 원문

본문

리다이렉팅 생성자(redirecting constructor)는 assert 초기화를 가질 수 없어요.

설명

애널라이저는 리다이렉팅 생성자(같은 클래스의 다른 생성자로 리다이렉트하는 생성자)의 초기화 리스트에 assert가 있을 때 이 진단을 생성해요.

예시

아래 코드는 이름 없는 생성자가 리다이렉팅 생성자이면서 초기화 리스트에 assert를 가지기 때문에 이 진단을 만들어요.

class C {
  C(int x) : assert(x > 0), this.name();
  C.name();
}

일반적인 수정 방법

assert가 필요하지 않다면 제거해요.

class C {
  C(int x) : this.name();
  C.name();
}

assert가 필요하다면 생성자를 팩토리 생성자로 바꿔요.

class C {
  factory C(int x) {
    assert(x > 0);
    return C.name();
  }
  C.name();
}

더 알아보기

생성자와 리다이렉팅 생성자, 팩토리 생성자에 대한 더 자세한 내용은 Dart 언어 문서를 참고해요.