============================================
Async function
============================================

async fn abc() {}

async fn main() {
    let x = futures.await?;
}

---

(source_file
  (function_item
    (function_modifiers)
    (identifier)
    (parameters)
    (block))
  (function_item (function_modifiers) (identifier) (parameters)
    (block
      (let_declaration (identifier) (try_expression
        (await_expression (identifier)))))))

============================================
Await expression
============================================

futures.await;
futures.await?;
futures.await?.await?;
futures.await?.function().await?;

---

(source_file
  (await_expression (identifier))
  (try_expression
    (await_expression (identifier)))
  (try_expression
    (await_expression
      (try_expression
        (await_expression (identifier)))))
  (try_expression
    (await_expression
      (call_expression
        (field_expression
          (try_expression
            (await_expression (identifier)))
          (field_identifier))
        (arguments)))))

============================================
Async Block
============================================

async {}
async { let x = 10; }
async move {}

---

(source_file
  (async_block
    (block))
  (async_block
    (block
      (let_declaration
        (identifier)
        (integer_literal))))
  (async_block
    (block)))
