forked from OSchip/llvm-project
Fix coroutine test failures caused by API misusages.
More tests to come. I think that from_address overload should be deleted or ill-formed, except for the 'void*' one; The user cannot possibly have a typed pointer to the coroutine state. llvm-svn: 304131
This commit is contained in:
parent
96ab48f9da
commit
bae0a1d43c
|
@ -212,6 +212,15 @@ public:
|
|||
return __tmp;
|
||||
}
|
||||
|
||||
// NOTE: this overload isn't required by the standard but is needed so
|
||||
// the deleted _Promise* overload doesn't make from_address(nullptr)
|
||||
// ambiguous.
|
||||
// FIXME: should from_address work with nullptr?
|
||||
_LIBCPP_ALWAYS_INLINE
|
||||
static coroutine_handle from_address(nullptr_t) _NOEXCEPT {
|
||||
return {};
|
||||
}
|
||||
|
||||
// from_address cannot be used with the coroutines promise type.
|
||||
static coroutine_handle from_address(_Promise*) = delete;
|
||||
|
||||
|
|
|
@ -48,8 +48,8 @@ void do_test() {
|
|||
assert(bool(c) == false);
|
||||
}
|
||||
{ // non-null case
|
||||
int dummy = 42;
|
||||
C c = C::from_address(&dummy);
|
||||
char dummy = 42;
|
||||
C c = C::from_address((void*)&dummy);
|
||||
assert(c.address() == &dummy);
|
||||
assert(bool(c) == true);
|
||||
}
|
||||
|
|
|
@ -42,8 +42,8 @@ void do_test() {
|
|||
assert(c.address() == nullptr);
|
||||
}
|
||||
{
|
||||
int dummy = 42;
|
||||
C c = C::from_address(&dummy);
|
||||
char dummy = 42;
|
||||
C c = C::from_address((void*)&dummy);
|
||||
assert(c.address() == &dummy);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,8 +37,8 @@ void do_test() {
|
|||
assert(c.address() == nullptr);
|
||||
}
|
||||
{
|
||||
int dummy = 42;
|
||||
C c = C::from_address(&dummy);
|
||||
char dummy = 42;
|
||||
C c = C::from_address((void*)&dummy);
|
||||
assert(c.address() == &dummy);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue