================
misc types
================

fn x(
  b: (bool, bool),
  c: [bool; 10],
  clk: clock,
) __builtin__
---

(source_file
  (unit_definition
    (identifier)
    (parameter_list
      (typed_parameter
        (parameter (identifier))
        (type
          (tuple_type
            (type (builtin_type))
            (type (builtin_type)))))
      (typed_parameter
        (parameter (identifier))
        (type
          (array_type
            (type (builtin_type))
            (type (int_literal)))))
      (typed_parameter
        (parameter (identifier))
        (type
          (builtin_type))))
    (builtin_marker)))

===
Mut wire
===


fn x(
  b: inv &bool,
) __builtin__
---

(source_file
  (unit_definition
    (identifier)
    (parameter_list
      (typed_parameter
        (parameter (identifier))
        (type
          (inverted (type (wire (type (builtin_type))))))))
    (builtin_marker)))


===
wire
===


fn x(
  b: &bool,
) __builtin__
---

(source_file
  (unit_definition
    (identifier)
    (parameter_list
      (typed_parameter
        (parameter (identifier))
        (type
          (wire (type (builtin_type))))))
    (builtin_marker)))


===
inverted type
===


fn x(
  b: inv T,
) __builtin__
---

(source_file
  (unit_definition
    (identifier)
    (parameter_list
      (typed_parameter
        (parameter (identifier))
        (type
          (inverted (type (identifier))))))
    (builtin_marker)))

===
Generic type argument
===

fn x<T>() __builtin__

---

(source_file
  (unit_definition
    (identifier)
    (generic_parameters
      (generic_param (identifier)))
    (parameter_list)
    (builtin_marker)))


===
Generic integer type argument
===

fn x<#uint T>() __builtin__

---

(source_file
  (unit_definition
    (identifier)
    (generic_parameters
      (generic_param
        meta: (identifier)
        (identifier)))
    (parameter_list)
    (builtin_marker)))
