// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -std=c++14 -fcoroutines-ts -fsyntax-only -Wall -Wextra -Wuninitialized  -fblocks
#include "Inputs/std-coroutine.h"

using namespace std::experimental;


struct A {
  bool await_ready() { return true; }
  int await_resume() { return 42; }
  template <typename F>
  void await_suspend(F) {}
};


struct coro_t {
  struct promise_type {
    coro_t get_return_object() { return {}; }
    suspend_never initial_suspend() { return {}; }
    suspend_never final_suspend() { return {}; }
    A yield_value(int) { return {}; }
    void return_void() {}
    static void unhandled_exception() {}
  };
};

coro_t f(int n) {
  if (n == 0)
    co_return;
  co_yield 42;
  int x = co_await A{};
}

template <class Await>
coro_t g(int n) {
  if (n == 0)
    co_return;
  co_yield 42;
  int x = co_await Await{};
}

int main() {
  f(0);
  g<A>(0);
}
