[libcxx tests] Clang is more strict now about coroutines
authorDavid Zarzycki <dave@znu.io>
Tue, 23 Jun 2020 10:48:02 +0000 (06:48 -0400)
committerDavid Zarzycki <dave@znu.io>
Tue, 23 Jun 2020 10:51:35 +0000 (06:51 -0400)
As of 516803dc8685ebcc5bce38b05391958ffee22643, clang is now more
strictly enforcing the coroutine specification.

See: https://reviews.llvm.org/D82029

libcxx/test/libcxx/experimental/language.support/support.coroutines/dialect_support.pass.cpp
libcxx/test/std/experimental/language.support/support.coroutines/coroutine.handle/coroutine.handle.prom/promise.pass.cpp
libcxx/test/std/experimental/language.support/support.coroutines/end.to.end/await_result.pass.cpp
libcxx/test/std/experimental/language.support/support.coroutines/end.to.end/bool_await_suspend.pass.cpp
libcxx/test/std/experimental/language.support/support.coroutines/end.to.end/expected.pass.cpp
libcxx/test/std/experimental/language.support/support.coroutines/end.to.end/fullexpr-dtor.pass.cpp
libcxx/test/std/experimental/language.support/support.coroutines/end.to.end/generator.pass.cpp
libcxx/test/std/experimental/language.support/support.coroutines/end.to.end/go.pass.cpp
libcxx/test/support/coroutine_types.h

index 1699d67..2f2a578 100644 (file)
@@ -25,7 +25,7 @@ struct MyFuture {
   struct promise_type {
     typedef coro::coroutine_handle<promise_type> HandleT;
     coro::suspend_never initial_suspend() { return sn; }
-    coro::suspend_always final_suspend() { return sa; }
+    coro::suspend_always final_suspend() noexcept { return sa; }
     coro::suspend_never yield_value(int) { return sn; }
     MyFuture get_return_object() {
       MyFuture f(HandleT::from_promise(*this));
index 200bb96..b6dc79e 100644 (file)
@@ -32,7 +32,7 @@ struct MyCoro {
     void unhandled_exception() {}
     void return_void() {}
     coro::suspend_never initial_suspend() { return {}; }
-    coro::suspend_never final_suspend() { return {}; }
+    coro::suspend_never final_suspend() noexcept { return {}; }
     MyCoro get_return_object() {
       do_runtime_test();
       return {};
index 86746f5..43c71f3 100644 (file)
@@ -23,7 +23,7 @@ struct coro_t {
       return {};
     }
     suspend_never initial_suspend() { return {}; }
-    suspend_never final_suspend() { return {}; }
+    suspend_never final_suspend() noexcept { return {}; }
     void return_void() {}
     static void unhandled_exception() {}
   };
index 679fccb..f9f9f7b 100644 (file)
@@ -25,7 +25,7 @@ struct coro_t {
       return coroutine_handle<promise_type>::from_promise(*this);
     }
     suspend_never initial_suspend() { return {}; }
-    suspend_never final_suspend() { return {}; }
+    suspend_never final_suspend() noexcept { return {}; }
     void return_void() {}
     void unhandled_exception() {}
   };
index 3b227cf..a0c31b6 100644 (file)
@@ -40,7 +40,7 @@ struct expected {
     Data* data;
     DataPtr get_return_object() { data = new Data{}; return {data}; }
     suspend_never initial_suspend() { return {}; }
-    suspend_never final_suspend() { return {}; }
+    suspend_never final_suspend() noexcept { return {}; }
     void return_value(T v) { data->val = std::move(v); data->error = {};}
     void unhandled_exception() {}
   };
index bb6fce5..441fec4 100644 (file)
@@ -45,7 +45,7 @@ struct Bug {
 struct coro2 {
   struct promise_type {
     suspend_never initial_suspend() { return{}; }
-    suspend_never final_suspend() { return{}; }
+    suspend_never final_suspend() noexcept { return{}; }
     coro2 get_return_object() { return{}; }
     void return_void() {}
     Bug yield_value(int) { return {}; }
index 08685b9..2c1e229 100644 (file)
@@ -29,7 +29,7 @@ struct minig {
       return {};
     }
     suspend_always initial_suspend() { return {}; }
-    suspend_always final_suspend() { return {}; }
+    suspend_always final_suspend() noexcept { return {}; }
     minig get_return_object() { return minig{this}; };
     void return_void() {}
     void unhandled_exception() {}
index b825fee..540498f 100644 (file)
@@ -46,7 +46,7 @@ struct goroutine
     suspend_never initial_suspend() {
       return {};
     }
-    suspend_never final_suspend() {
+    suspend_never final_suspend() noexcept {
       return {};
     }
     void return_void() {}
index e5d40b1..04b27a1 100644 (file)
@@ -20,7 +20,7 @@ template <typename Ty> struct generator {
       return {};
     }
     std::experimental::suspend_always initial_suspend() { return {}; }
-    std::experimental::suspend_always final_suspend() { return {}; }
+    std::experimental::suspend_always final_suspend() noexcept { return {}; }
     generator get_return_object() { return generator{this}; };
     void return_void() {}
     void unhandled_exception() {}