unnecessary_set_literal 진단: 불필요한 집합 리터럴

unnecessary_set_literal 진단: 불필요한 집합 리터럴

Dart 분석기가 내보내는 진단에는 이름이 있어요. unnecessary_set_literal반환 타입이 void, Future<void>, FutureOr<void>인 함수가 표현식 함수 본문(=>)을 쓰면서 단일 요소를 담은 집합(set) 리터럴을 반환할 때 알려주는 진단이에요.

출처: unnecessary_set_literal

본문

설명

분석기는 반환 타입이 void, Future<void>, 또는 FutureOr<void>인 함수가 표현식 함수 본문(=>)을 쓰고, 반환하는 값이 단일 요소를 담은 집합 리터럴일 때 이 진단을 만들어요.

언어가 허용하기는 하지만, void 함수에서 값을 반환하는 것은 호출부에서 쓸 수 없기 때문에 유용하지 않아요. 특히 이 경우의 반환은 종종 문법에 대한 오해에서 비롯돼요. 중괄호는 필요하지 않으니 제거할 수 있어요.

예시

다음 코드는 g에 전달되는 클로저(closure)의 반환 타입이 void인데 집합을 반환하기 때문에 이 진단을 만들어요.

void f() {
  g(() => {1});
}

void g(void Function() p) {}

흔한 해결 방법

값을 감싼 중괄호를 제거해요.

void f() {
  g(() => 1);
}

void g(void Function() p) {}

더 알아보기