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