[libcxx] [Coroutine] Conform Coroutine Implementation
authorChuanqi Xu <yedeng.yd@linux.alibaba.com>
Tue, 16 Nov 2021 06:05:34 +0000 (14:05 +0800)
committerChuanqi Xu <yedeng.yd@linux.alibaba.com>
Tue, 16 Nov 2021 06:13:13 +0000 (14:13 +0800)
commit2e6ae1d3f2de1aa96ace695ddd6dc58ef259e248
treeb639ad8ffdc958a2965e89fddc23df1a1a9aeb32
parent1585b13024db5a0f7d96bc2d8e4aa7171ce09bb9
[libcxx] [Coroutine] Conform Coroutine Implementation

Since coroutine is merged in C++ standard and the support for coroutine
seems relatively stable. It's the time to move the implementation of
coroutine out of the experimental directory and the std::experimental
namespace. This patch creates header <coroutine> with conformed
implementation with C++ standard. To avoid breaking user's code too
fast, the <experimental/coroutine> header is remained. Note that
<experimental/coroutine> is deprecated and it would be removed in
LLVM15.

Reviewed By: Quuxplusone, ldionne

Differential Revision: https://reviews.llvm.org/D109433
55 files changed:
libcxx/docs/FeatureTestMacroTable.rst
libcxx/docs/Status/Cxx20Issues.csv
libcxx/docs/Status/SpaceshipProjects.csv
libcxx/include/CMakeLists.txt
libcxx/include/__config
libcxx/include/__coroutine/coroutine_handle.h [new file with mode: 0644]
libcxx/include/__coroutine/coroutine_traits.h [new file with mode: 0644]
libcxx/include/__coroutine/noop_coroutine_handle.h [new file with mode: 0644]
libcxx/include/__coroutine/trivial_awaitables.h [new file with mode: 0644]
libcxx/include/coroutine [new file with mode: 0644]
libcxx/include/experimental/__config
libcxx/include/experimental/coroutine
libcxx/include/module.modulemap
libcxx/include/version
libcxx/test/libcxx/diagnostics/detail.headers/coroutine/coroutine_handle.module.verify.cpp [new file with mode: 0644]
libcxx/test/libcxx/diagnostics/detail.headers/coroutine/coroutine_traits.module.verify.cpp [new file with mode: 0644]
libcxx/test/libcxx/diagnostics/detail.headers/coroutine/noop_coroutine_handle.module.verify.cpp [new file with mode: 0644]
libcxx/test/libcxx/diagnostics/detail.headers/coroutine/trivial_awaitables.module.verify.cpp [new file with mode: 0644]
libcxx/test/libcxx/double_include.sh.cpp
libcxx/test/libcxx/inclusions/coroutine.inclusions.compile.pass.cpp [new file with mode: 0644]
libcxx/test/libcxx/min_max_macros.compile.pass.cpp
libcxx/test/libcxx/no_assert_include.compile.pass.cpp
libcxx/test/std/experimental/language.support/support.coroutines/end.to.end/generator.pass.cpp
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.capacity/operator_bool.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.compare/equal_comp.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.compare/less_comp.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.completion/done.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.con/assign.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.con/construct.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.export/address.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.export/from_address.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.hash/hash.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.noop/noop_coroutine.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.prom/promise.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.resumption/destroy.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/coroutine.handle.resumption/resume.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.handle/void_handle.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.traits/promise_type.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.trivial.awaitables/suspend_always.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/coroutine.trivial.awaitables/suspend_never.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/end.to.end/await_result.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/end.to.end/bool_await_suspend.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/end.to.end/expected.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/end.to.end/fullexpr-dtor.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/end.to.end/generator.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/end.to.end/go.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/end.to.end/multishot_func.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.coroutines/end.to.end/oneshot_func.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.limits/support.limits.general/coroutine.version.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
libcxx/test/support/coroutine_types.h [deleted file]
libcxx/utils/generate_feature_test_macro_components.py
libcxx/utils/generate_header_inclusion_tests.py
libcxx/utils/generate_header_tests.py
libcxx/utils/libcxx/test/features.py