Skip to content

Commit a6badce

Browse files
committed
conformance
1 parent db5d449 commit a6badce

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

strings/base_coroutine_foundation.h

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -307,22 +307,22 @@ namespace winrt::impl
307307
template <typename T>
308308
struct free_await_adapter
309309
{
310-
T&& awaitable;
310+
free_await_adapter_impl<T>&& awaitable;
311311

312312
bool await_ready()
313313
{
314-
return free_await_adapter_impl<T>{ static_cast<T&&>(awaitable) }.ready();
314+
return awaitable.ready();
315315
}
316316

317317
template <typename U>
318318
auto await_suspend(std::experimental::coroutine_handle<U> handle)
319319
{
320-
return free_await_adapter_impl<T>{ static_cast<T&&>(awaitable) }.suspend(handle);
320+
return awaitable.suspend(handle);
321321
}
322322

323323
auto await_resume()
324324
{
325-
return free_await_adapter_impl<T>{ static_cast<T&&>(awaitable) }.resume();
325+
return awaitable.resume();
326326
}
327327
};
328328

@@ -369,17 +369,13 @@ namespace winrt::impl
369369
template <typename T, std::enable_if_t<has_awaitable_free<T>::value, int> = 0>
370370
auto get_awaiter(T&& value) noexcept
371371
{
372-
return free_await_adapter<T>{ static_cast<T&&>(value) };
372+
return free_await_adapter<T>{ { static_cast<T&&>(value) }};
373373
}
374374

375375
template <typename T>
376376
struct notify_awaiter
377377
{
378-
decltype(get_awaiter(std::declval<T&&>())) awaitable;
379-
380-
notify_awaiter(T&& awaitable) : awaitable(get_awaiter(static_cast<T&&>(awaitable)))
381-
{
382-
}
378+
decltype(get_awaiter(std::declval<T&&>()))&& awaitable;
383379

384380
bool await_ready()
385381
{
@@ -622,7 +618,7 @@ namespace winrt::impl
622618
throw winrt::hresult_canceled();
623619
}
624620

625-
return notify_awaiter<Expression>{ static_cast<Expression&&>(expression) };
621+
return notify_awaiter<Expression>{ get_awaiter<Expression>(static_cast<Expression&&>(expression)) };
626622
}
627623

628624
cancellation_token<Derived> await_transform(get_cancellation_token_t) noexcept

test/test/generic_types.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,9 @@ TEST_CASE("generic_types")
88
REQUIRE_EQUAL_NAME(L"Windows.Foundation.Uri", Uri);
99
REQUIRE_EQUAL_NAME(L"Windows.Foundation.PropertyType", PropertyType);
1010
REQUIRE_EQUAL_NAME(L"Windows.Foundation.Point", Point);
11+
12+
// Clang 9 doesn't think this is a constant expression.
13+
#ifndef __clang__
1114
REQUIRE_EQUAL_NAME(L"{96369f54-8eb6-48f0-abce-c1b211e627c3}", IStringable);
15+
#endif
1216
}

0 commit comments

Comments
 (0)