================ @@ -291,6 +318,50 @@ void mixed_coreturn_template2(bool b, T) { return; // expected-error {{not allowed in coroutine}} } +struct promise_handle; + +struct Handle : std::coroutine_handle<promise_handle> { // expected-note 4{{not viable}} + // expected-note@-1 4{{not viable}} + using promise_type = promise_handle; +}; + +struct promise_handle { + Handle get_return_object() noexcept { + { return Handle(std::coroutine_handle<Handle::promise_type>::from_promise(*this)); } + } + suspend_never initial_suspend() const noexcept { return {}; } + suspend_never final_suspend() const noexcept { return {}; } + void return_void() const noexcept {} + void unhandled_exception() const noexcept {} +}; + +Handle mixed_return_value() { + co_await a; // expected-note {{function is a coroutine due to use of 'co_await' here}} + return 0; // expected-error {{return statement not allowed in coroutine}} + // expected-error@-1 {{no viable conversion from returned value of type}} + // CHECK-NOT: error: no viable conversion from returned value of type + // CHECK: error: return statement not allowed in coroutine + // CHECK: error: no viable conversion from returned value of type +} + +Handle mixed_return_value_return_first(bool b) { + if (b) { + return 0; // expected-error {{no viable conversion from returned value of type}} + // expected-error@-1 {{return statement not allowed in coroutine}} ---------------- ilya-biryukov wrote:
Could you run `clang-format` over these lines? (E.g. via `git-clang-format` or "Format Lines" action from VSCode with Clangd installed). The `// expected-error@-1` should get nicely aligned with the previous lines. https://github.com/llvm/llvm-project/pull/100985 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits