Author: ericwf Date: Thu May 25 13:52:34 2017 New Revision: 303895 URL: http://llvm.org/viewvc/llvm-project?rev=303895&view=rev Log: Update coroutine_handle<P>::promise to reflect N4663.
This patch updates the promise() member to match the current spec. Specifically it removes the non-const overload and make the return type of the const overload non-const. This patch also makes the ASSERT_NOT_NOEXCEPT tests libc++ specific, since other implementations may be free to strengthen the specification. Modified: libcxx/trunk/include/experimental/coroutine libcxx/trunk/test/std/experimental/language.support/support.coroutines/coroutine.handle/coroutine.handle.prom/promise.sh.cpp Modified: libcxx/trunk/include/experimental/coroutine URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/experimental/coroutine?rev=303895&r1=303894&r2=303895&view=diff ============================================================================== --- libcxx/trunk/include/experimental/coroutine (original) +++ libcxx/trunk/include/experimental/coroutine Thu May 25 13:52:34 2017 @@ -194,15 +194,9 @@ public: return *this; } - _LIBCPP_INLINE_VISIBILITY - _Promise& promise() { - return *reinterpret_cast<_Promise*>( - __builtin_coro_promise(this->__handle_, alignof(_Promise), false)); - } - _LIBCPP_INLINE_VISIBILITY - _Promise const& promise() const { - return *reinterpret_cast<_Promise const*>( + _Promise& promise() const { + return *reinterpret_cast<_Promise*>( __builtin_coro_promise(this->__handle_, alignof(_Promise), false)); } Modified: libcxx/trunk/test/std/experimental/language.support/support.coroutines/coroutine.handle/coroutine.handle.prom/promise.sh.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/experimental/language.support/support.coroutines/coroutine.handle/coroutine.handle.prom/promise.sh.cpp?rev=303895&r1=303894&r2=303895&view=diff ============================================================================== --- libcxx/trunk/test/std/experimental/language.support/support.coroutines/coroutine.handle/coroutine.handle.prom/promise.sh.cpp (original) +++ libcxx/trunk/test/std/experimental/language.support/support.coroutines/coroutine.handle/coroutine.handle.prom/promise.sh.cpp Thu May 25 13:52:34 2017 @@ -39,12 +39,12 @@ void do_test(coro::coroutine_handle<Prom // FIXME Add a runtime test { ASSERT_SAME_TYPE(decltype(H.promise()), Promise&); - ASSERT_NOT_NOEXCEPT(H.promise()); + LIBCPP_ASSERT_NOT_NOEXCEPT(H.promise()); } { auto const& CH = H; - ASSERT_SAME_TYPE(decltype(CH.promise()), Promise const&); - ASSERT_NOT_NOEXCEPT(CH.promise()); + ASSERT_SAME_TYPE(decltype(CH.promise()), Promise&); + LIBCPP_ASSERT_NOT_NOEXCEPT(CH.promise()); } } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits