==================
Empty template literal
==================

fn main() {
    let x = ``;
}

---

(source_file
  (function_item
    name: (identifier)
    parameters: (parameters)
    body: (block
      (let_declaration
        pattern: (identifier)
        value: (template_literal)))))

==================
Template literal with content
==================

fn main() {
    let msg = `Hello ${name}!`;
}

---

(source_file
  (function_item
    name: (identifier)
    parameters: (parameters)
    body: (block
      (let_declaration
        pattern: (identifier)
        value: (template_literal
          (template_content)
          (interpolation
            expression: (identifier))
          (template_content))))))

==================
Template literal with expression interpolation
==================

fn main() {
    let expr = `result: ${1 + 2}`;
}

---

(source_file
  (function_item
    name: (identifier)
    parameters: (parameters)
    body: (block
      (let_declaration
        pattern: (identifier)
        value: (template_literal
          (template_content)
          (interpolation
            expression: (binary_expression
              left: (integer_literal)
              right: (integer_literal))))))))

==================
Object literal
==================

fn main() {
    let obj = #{ name: "test", count: 42 };
}

---

(source_file
  (function_item
    name: (identifier)
    parameters: (parameters)
    body: (block
      (let_declaration
        pattern: (identifier)
        value: (object_literal
          (object_entry
            key: (identifier)
            value: (string_literal
              (string_content)))
          (object_entry
            key: (identifier)
            value: (integer_literal)))))))

==================
Empty object literal
==================

fn main() {
    let empty = #{};
}

---

(source_file
  (function_item
    name: (identifier)
    parameters: (parameters)
    body: (block
      (let_declaration
        pattern: (identifier)
        value: (object_literal)))))

==================
Array literal
==================

fn main() {
    let items = [1, 2, 3];
}

---

(source_file
  (function_item
    name: (identifier)
    parameters: (parameters)
    body: (block
      (let_declaration
        pattern: (identifier)
        value: (array_expression
          (integer_literal)
          (integer_literal)
          (integer_literal))))))
