unnecessary_await_in_return 진단: return에서의 불필요한 await
unnecessary_await_in_return 진단: return에서의 불필요한 await
분석기가 내보내는 진단에는 이름이 있어요. unnecessary_await_in_return은 async 함수나 메서드가 await 표현식을 반환할 때, 그 await가 불필요한 경우 Dart 분석기가 알려주는 진단이에요. 이미 Future를 반환하는 구조에서는 await를 붙여도 결과가 달라지지 않아요.
본문
설명
분석기는 async 함수나 메서드가 await 표현식을 반환하고, await한 Future의 정적 타입이 선언된 반환 타입의 하위 타입(subtype)일 때 이 진단을 만들어요.
async 함수에서 Future를 반환하면 이미 같은 결과로 완료되는 Future를 만들어 내기 때문에 await는 불필요해요.
단, try 블록 안의 await 표현식에 대해서는 이 진단을 만들지 않아요. await를 제거하면 await한 Future에서 발생한 오류를 처리하는 방식이 바뀌기 때문이에요.
예시
다음 코드는 함수 f의 반환 타입이 Future<int>인데, 정적 타입 역시 Future<int>인 Future를 await해서 반환하기 때문에 이 진단을 만들어요.
Future<int> f(Future<int> future) async {
return await future;
}
흔한 해결 방법
불필요한 await를 제거해요.
Future<int> f(Future<int> future) async {
return future;
}