// Test the pattern matching functionality of PascaLIGO

function match_bool (const i : int) : int is
  block {
    var result : int := 23;
    case i = 2 of
      True  -> result := 42
    | False -> result := 0
    end
  } with result

function match_option (const o : option (int)) : int is
  block {
    var result : int := 23;
    case o of
      None -> skip
    | Some (s) -> result := s
    end
  } with result

function match_expr_bool (const i : int) : int is
  case i = 2 of
    True -> 42
  | False -> 0
  end

function match_expr_option (const o : option (int)) : int is
  case o of
    None -> 42
  | Some (s) -> s
  end

function match_expr_list (const l : list (int)) : int is
  case l of
    nil -> -1
  | hd # tl -> hd
  end
