=====================================
simple literal
=====================================

[a: 1, a_b@12?: 2, A_B@12!: 3, Mod: 4, __struct__: 5]

---

(source
  (list
    (keywords
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer)))))

=====================================
trailing separator
=====================================

[a: 1,]

---

(source
  (list
    (keywords
      (pair
        (keyword)
        (integer)))))

=====================================
with leading items
=====================================

[1, {:c, 1}, a: 1, b: 2]

---

(source
  (list
    (integer)
    (tuple
      (atom)
      (integer))
    (keywords
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer)))))

=====================================
operator key
=====================================

[~~~: 1, ==: 2, >: 3]

---

(source
  (list
    (keywords
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer)))))

=====================================
special atom key
=====================================

[...: 1, %{}: 2, {}: 3, %: 4, <<>>: 5, ..//: 6]

---

(source
  (list
    (keywords
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer)))))

=====================================
reserved token key
=====================================

[not: 1, and: 2]
[nil: 1, true: 2]

---

(source
  (list
    (keywords
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer))))
  (list
    (keywords
      (pair
        (keyword)
        (integer))
      (pair
        (keyword)
        (integer)))))

=====================================
quoted key
=====================================

[
  "key1 ?? !! ' \n": 1,
  'key2 ?? !! " \n': 2
]

---

(source
  (list
    (keywords
      (pair
        (quoted_keyword
          (quoted_content)
          (escape_sequence))
        (integer))
      (pair
        (quoted_keyword
          (quoted_content)
          (escape_sequence))
        (integer)))))

=====================================
key interpolation
=====================================

[
  "hey #{name}!": 1,
  'hey #{name}!': 2
]

---

(source
  (list
    (keywords
      (pair
        (quoted_keyword
          (quoted_content)
          (interpolation
            (identifier))
          (quoted_content))
        (integer))
      (pair
        (quoted_keyword
          (quoted_content)
          (interpolation
            (identifier))
          (quoted_content))
        (integer)))))

=====================================
[field names]
=====================================

[a: 1, b: 2]
---

(source
  (list
    (keywords
      (pair
        key: (keyword)
        value: (integer))
      (pair
        key: (keyword)
        value: (integer)))))

=====================================
[error] with trailing items
=====================================

[a: 1, b: 2, 1 => 1]

---

(source
  (list
    (ERROR
      (keywords
        (pair
          (keyword)
          (integer))
        (pair
          (keyword)
          (integer))))
    (binary_operator
      (integer)
      (integer))))
