==================
Labeled loop
==================

fn main() {
    'outer: loop {
        break 'outer;
    }
}

---

(source_file
  (function_item
    name: (identifier)
    parameters: (parameters)
    body: (block
      (expression_statement
        (loop_expression
          label: (loop_label
            name: (identifier))
          body: (block
            (expression_statement
              (break_expression
                label: (label
                  (identifier))))))))))

==================
Labeled while
==================

fn main() {
    'outer: while true {
        break 'outer;
    }
}

---

(source_file
  (function_item
    name: (identifier)
    parameters: (parameters)
    body: (block
      (expression_statement
        (while_expression
          label: (loop_label
            name: (identifier))
          condition: (boolean_literal)
          body: (block
            (expression_statement
              (break_expression
                label: (label
                  (identifier))))))))))

==================
Labeled for
==================

fn main() {
    'items: for x in list {
        continue 'items;
    }
}

---

(source_file
  (function_item
    name: (identifier)
    parameters: (parameters)
    body: (block
      (expression_statement
        (for_expression
          label: (loop_label
            name: (identifier))
          pattern: (identifier)
          value: (identifier)
          body: (block
            (expression_statement
              (continue_expression
                label: (label
                  (identifier))))))))))

==================
Nested labeled loops
==================

fn main() {
    'outer: loop {
        'inner: loop {
            break 'outer;
        }
    }
}

---

(source_file
  (function_item
    name: (identifier)
    parameters: (parameters)
    body: (block
      (expression_statement
        (loop_expression
          label: (loop_label
            name: (identifier))
          body: (block
            (expression_statement
              (loop_expression
                label: (loop_label
                  name: (identifier))
                body: (block
                  (expression_statement
                    (break_expression
                      label: (label
                        (identifier)))))))))))))

==================
Break with label and value
==================

fn main() {
    let x = 'outer: loop {
        break 'outer 42;
    };
}

---

(source_file
  (function_item
    name: (identifier)
    parameters: (parameters)
    body: (block
      (let_declaration
        pattern: (identifier)
        value: (loop_expression
          label: (loop_label
            name: (identifier))
          body: (block
            (expression_statement
              (break_expression
                label: (label
                  (identifier))
                (integer_literal)))))))))
