This patch fixes a number of issues with the analysis warnings emitted when a coroutine may reach the end of the function w/o returning.
- Fix bug where coroutines with return_value are incorrectly diagnosed as missing co_return's.
- Rework diagnostic message to no longer say "non-void coroutine", because that implies the coroutine doesn't have a void return type, which it might. In this case a non-void coroutine is one who's promise type does not contain return_void()
As a side-effect of this patch, coroutine bodies that contain an invalid coroutine promise objects are marked as invalid.
Is this check no longer needed because of the changes to AnalysisDeclContext.cpp?
At some point it was needed because we were emitting "return gro" to produce the immediate return value from the coroutine, but, we wanted to flag the case when the user forgot to add "co_return"