초기화 목록에서 마지막이 아닌 super 생성자 호출

초기화 목록에서 마지막이 아닌 super 생성자 호출

Dart 분석기(analyzer)가 만들어 내는 이 진단은, 생성자의 초기화 목록에서 슈퍼클래스 생성자 호출이 마지막 항목이 아닐 때 알려줘요. super 생성자 호출은 초기화 목록의 맨 끝에 와야 해요.

출처: super_invocation_not_last

본문

이 진단은 이전에는 invalid_super_invocation이라고 불렸어요. 진단 메시지는 "The superconstructor call must be last in an initializer list." 즉 "슈퍼 생성자 호출은 초기화 목록에서 마지막이어야 해요."라는 뜻이에요.

설명

생성자의 초기화 목록(initializer list)에 슈퍼클래스 생성자 호출이 포함돼 있는데, 그 호출이 초기화 목록의 마지막 항목이 아니면 이 진단이 나와요.

예시

다음 코드는 슈퍼클래스 생성자 호출이 초기화 목록의 마지막 항목이 아니라서 이 진단이 나와요:

class A {
  A(int x);
}

class B extends A {
  B(int x) : super(x + 1), assert(x >= 0);
}

해결 방법

슈퍼클래스 생성자 호출을 초기화 목록의 끝으로 옮기면 돼요:

class A {
  A(int x);
}

class B extends A {
  B(int x) : assert(x >= 0), super(x + 1);
}

더 알아보기