(* Simple test of binding multiple values *)

let (x : int), (y : int) = 1,2

let main (p : unit) : int = x + y

let ((x : int) , (y : int)) = 3,3

let main_paren (p : unit) : int = x + y

let foobar : (int * int) = (23 , 42)
let (foo : int) , (bar : int) = foobar

(* Here to prevent a regression of https://gitlab.com/ligolang/ligo/issues/63#note_254106580 *)

let correct_values_bound (p : unit) : int * int = foo, bar

let non_tuple_rhs (p : unit) : int = bar - foo

(* Here to prevent a regression of https://gitlab.com/ligolang/ligo/issues/63#note_254106580 *)

let big_tuple : int * int * int * int * int = 10, 20, 30, 40, 50

let (a: int), (b: int), (c: int), (d: int), (e: int) = big_tuple

let correct_values_big_tuple (p : unit) : int * int * int * int * int =
  a, b, c, d, e

(* Here to prevent a regression of https://gitlab.com/ligolang/ligo/issues/63#note_254106580 *)

let different_types : int * string = 10, "hello"

let (greet_num : int), (greeting : string) = different_types

let correct_values_different_types (p : unit) : int * string =
  greet_num, greeting
