brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 7a06299 Raw
35 lines · cpp
1// RUN: %clang_cc1 -std=c++20 -ast-dump %s | FileCheck %s2#include "Inputs/std-coroutine.h"3 4// Github issue: https://github.com/llvm/llvm-project/issues/782905namespace GH78290 {6class Gen {7   public:8    class promise_type {9       public:10        template<typename... Args>11        explicit promise_type(Args...) {}12        // CHECK:       CXXConstructorDecl {{.*}} used promise_type 'void ()' {{.*}}13        // CHECK-NEXT:     TemplateArgument pack14        // CHECK-NEXT:     CompoundStmt {{.*}}15        Gen get_return_object() { return {}; }16 17        void unhandled_exception() {}18        void return_void() {}19        std::suspend_always await_transform(Gen gen) { return {}; }20 21        std::suspend_always initial_suspend() { return {}; }22        // CHECK: CXXMethodDecl {{.*}} used initial_suspend {{.*}}23        std::suspend_always final_suspend() noexcept { return {}; }24        // CHECK: CXXMethodDecl {{.*}} used final_suspend {{.*}}25    };26};27 28Gen CoroutineBody() {29    if constexpr (0) {30        co_await Gen{};31    }32    co_await Gen{};33}34} // namespace GH7829035