diff --git a/src/passes/1-parser/pascaligo/AST.ml b/src/passes/1-parser/pascaligo/AST.ml index 08a1b9a8f..10cadbd15 100644 --- a/src/passes/1-parser/pascaligo/AST.ml +++ b/src/passes/1-parser/pascaligo/AST.ml @@ -432,8 +432,6 @@ and for_collect = { kwd_for : kwd_for; var : variable; bind_to : (arrow * variable) option; - colon : colon; - elt_type : type_expr; kwd_in : kwd_in; collection : collection; expr : expr; diff --git a/src/passes/1-parser/pascaligo/AST.mli b/src/passes/1-parser/pascaligo/AST.mli index 85789cb8d..8c62d8664 100644 --- a/src/passes/1-parser/pascaligo/AST.mli +++ b/src/passes/1-parser/pascaligo/AST.mli @@ -422,8 +422,6 @@ and for_collect = { kwd_for : kwd_for; var : variable; bind_to : (arrow * variable) option; - colon : colon; - elt_type : type_expr; kwd_in : kwd_in; collection : collection; expr : expr; diff --git a/src/passes/1-parser/pascaligo/Parser.mly b/src/passes/1-parser/pascaligo/Parser.mly index be3d81d08..47721fa77 100644 --- a/src/passes/1-parser/pascaligo/Parser.mly +++ b/src/passes/1-parser/pascaligo/Parser.mly @@ -647,19 +647,17 @@ for_loop: block = $5} in For (ForInt {region; value}) } -| For var option(arrow_clause) COLON type_expr +| For var option(arrow_clause) In collection expr block { - let region = cover $1 $9.region in + let region = cover $1 $7.region in let value = { kwd_for = $1; var = $2; bind_to = $3; - colon = $4; - elt_type = $5; - kwd_in = $6; - collection = $7; - expr = $8; - block = $9} + kwd_in = $4; + collection = $5; + expr = $6; + block = $7} in For (ForCollect {region; value})} collection: diff --git a/src/passes/1-parser/pascaligo/ParserLog.ml b/src/passes/1-parser/pascaligo/ParserLog.ml index ad9b9312e..183b5276b 100644 --- a/src/passes/1-parser/pascaligo/ParserLog.ml +++ b/src/passes/1-parser/pascaligo/ParserLog.ml @@ -359,13 +359,11 @@ and print_var_assign buffer {value; _} = print_expr buffer expr and print_for_collect buffer ({value; _} : for_collect reg) = - let {kwd_for; var; bind_to; colon; elt_type; + let {kwd_for; var; bind_to; kwd_in; collection; expr; block} = value in print_token buffer kwd_for "for"; print_var buffer var; print_bind_to buffer bind_to; - print_token buffer colon ":"; - print_type_expr buffer elt_type; print_token buffer kwd_in "in"; print_collection buffer collection; print_expr buffer expr; @@ -1221,23 +1219,19 @@ and pp_var_assign buffer ~pad:(_,pc) asgn = and pp_for_collect buffer ~pad:(_,pc) collect = let () = - let pad = mk_pad 4 0 pc in + let pad = mk_pad 3 0 pc in match collect.bind_to with None -> pp_ident buffer ~pad collect.var | Some (_, var) -> pp_var_binding buffer ~pad (collect.var, var) in let () = - let _, pc as pad = mk_pad 4 1 pc in - pp_node buffer ~pad ""; - pp_type_expr buffer ~pad:(mk_pad 1 0 pc) collect.elt_type in - let () = - let _, pc as pad = mk_pad 4 2 pc in + let _, pc as pad = mk_pad 3 1 pc in pp_node buffer ~pad ""; pp_collection buffer ~pad:(mk_pad 2 0 pc) collect.collection; pp_expr buffer ~pad:(mk_pad 1 0 pc) collect.expr in let () = - let pad = mk_pad 4 3 pc in + let pad = mk_pad 3 2 pc in let statements = collect.block.value.statements in pp_node buffer ~pad ""; pp_statements buffer ~pad statements diff --git a/src/test/contracts/loop.ligo b/src/test/contracts/loop.ligo index 2f250cf18..ef3af8527 100644 --- a/src/test/contracts/loop.ligo +++ b/src/test/contracts/loop.ligo @@ -2,138 +2,136 @@ function counter (var n : nat) : nat is block { var i : nat := 0n ; - while (i < n) block { - i := i + 1n ; + while i < n block { + i := i + 1n; } } with i function while_sum (var n : nat) : nat is block { var i : nat := 0n ; var r : nat := 0n ; - while (i < n) block { - i := i + 1n ; - r := r + i ; + while i < n block { + i := i + 1n; + r := r + i; } } with r function for_sum (var n : nat) : int is block { var acc : int := 0 ; for i := 1 to int(n) - begin - acc := acc + i ; + begin + acc := acc + i; end -} with acc +} with acc function for_collection_list (var nee : unit) : (int * string) is block { - var acc : int := 0 ; - var st : string := "to" ; - var mylist : list(int) := list 1 ; 1 ; 1 end ; - for x : int in list mylist - begin - acc := acc + x ; - st := st^"to" ; - end + var acc : int := 0; + var st : string := "to"; + var mylist : list(int) := list 1; 1; 1 end; + for x in list mylist + begin + acc := acc + x; + st := st ^ "to"; + end } with (acc, st) function for_collection_set (var nee : unit) : (int * string) is block { - var acc : int := 0 ; - var st : string := "to" ; - var myset : set(int) := set 1 ; 2 ; 3 end ; - for x : int in set myset - begin - acc := acc + x ; - st := st^"to" ; - end + var acc : int := 0; + var st : string := "to"; + var myset : set(int) := set 1; 2; 3 end; + for x in set myset + begin + acc := acc + x ; + st := st^"to" ; + end } with (acc, st) function for_collection_if_and_local_var (var nee : unit) : int is block { var acc : int := 0 ; const theone : int = 1 ; var myset : set(int) := set 1 ; 2 ; 3 end ; - for x : int in set myset - begin - const thetwo : int = 2 ; - if (x=theone) then - acc := acc + x ; - else if (x=thetwo) then - acc := acc + thetwo ; - else - acc := acc + 10 ; - end + for x in set myset + begin + const thetwo : int = 2 ; + if x=theone then + acc := acc + x + else if x=thetwo then + acc := acc + thetwo; + else + acc := acc + 10; + end } with acc function for_collection_rhs_capture (var nee : unit) : int is block { var acc : int := 0 ; const mybigint : int = 1000 ; var myset : set(int) := set 1 ; 2 ; 3 end ; - for x : int in set myset - begin - if (x=1) then - acc := acc + mybigint ; - else - acc := acc + 10 ; - end + for x in set myset + begin + if x=1 then acc := acc + mybigint; + else acc := acc + 10; + end } with acc function for_collection_proc_call (var nee : unit) : int is block { var acc : int := 0 ; var myset : set(int) := set 1 ; 2 ; 3 end ; - for x : int in set myset - begin - if (x=1) then - acc := acc + for_collection_rhs_capture(unit) ; - else - acc := acc + 10 ; - end + for x in set myset + begin + if x=1 then + acc := acc + for_collection_rhs_capture(unit); + else + acc := acc + 10; + end } with acc function for_collection_comp_with_acc (var nee : unit) : int is block { var myint : int := 0 ; var mylist : list(int) := list 1 ; 10 ; 15 end; - for x : int in list mylist - begin - if (x < myint) then skip ; - else myint := myint + 10 ; - end + for x in list mylist + begin + if x < myint then skip; + else myint := myint + 10 + end } with myint function for_collection_with_patches (var nee : unit) : map(string,int) is block { var myint : int := 12 ; - var mylist : list(string) := list "I" ; "am" ; "foo" end; + var mylist : list(string) := list "I"; "am"; "foo" end; var mymap : map(string,int) := map end; - for x : string in list mylist - begin - patch mymap with map [ x -> myint ]; - end + for x in list mylist + begin + patch mymap with map [x -> myint]; + end } with mymap function for_collection_empty (var nee : unit) : int is block { var acc : int := 0 ; - var myset : set(int) := set 1 ; 2 ; 3 end ; - for x : int in set myset - begin - skip ; - end + var myset : set(int) := set 1; 2; 3 end; + for x in set myset + begin + skip + end } with acc function for_collection_map_kv (var nee : unit) : (int * string) is block { - var acc : int := 0 ; - var st : string := "" ; - var mymap : map(string,int) := map "1" -> 1 ; "2" -> 2 ; "3" -> 3 end ; - for k -> v : (string * int) in map mymap - begin - acc := acc + v ; - st := st^k ; - end + var acc : int := 0; + var st : string := ""; + var mymap : map(string,int) := map "1" -> 1; "2" -> 2; "3" -> 3 end; + for k -> v in map mymap + begin + acc := acc + v; + st := st ^ k; + end } with (acc, st) function for_collection_map_k (var nee : unit) : string is block { var st : string := "" ; var mymap : map(string,int) := map "1" -> 1 ; "2" -> 2 ; "3" -> 3 end ; - for k : string in map mymap - begin - st := st^k ; - end + for k in map mymap + begin + st := st ^ k; + end } with st // function nested_for_collection (var nee : unit) : (int*string) is block { @@ -147,10 +145,10 @@ function for_collection_map_k (var nee : unit) : string is block { // for st : string in set myset // begin // myst := myst ^ st ; -// end +// end // end // } with (myint,myst) function dummy (const n : nat) : nat is block { - while (False) block { skip } + while False block { skip } } with n