// Try to cover all syntactic constructs. @compiler > 0 @compiler =< 10.1.1.1.1.1.2.3.4 namespace Ns = datatype d('a) = D | S(int) | M('a, list('a), int) private function fff() = 123 let const = 1 stateful entrypoint f (1, x) = (_) => x payable contract AllSyntaxType = /** Multi- * line * comment */ stateful function foo : _ entrypoint bar : int => (int * 'a) contract AllSyntax = datatype mickiewicz = Adam | Mickiewicz record goethe('a, 'b) = { johann : int, wolfgang : 'a, von : 'a * 'b * int, goethe : unit } type dante = Ns.d(int) type shakespeare('a) = goethe('a, 'a) type state = shakespeare(int) let cc = "str" entrypoint init() = { johann = 1000, wolfgang = -10, /* TODO: This does not compile because of bug in the parser tester. von = (2 + 2, 0, List.sum([x | k <- [1,2,3] , let l = k + 1 , if(l < 10) , let f(x) = x + 100 , Adam <- [Adam, Mickiewicz] , let x = f(l) ])), */ von = (2 + 2, 0, List.sum([1,2,3,4])), goethe = () } function f() = let kp = "nietzsche" // let p = "Пушкин" // TODO: this also doesn't do right round_trip... let k(x : bytes(8)) : bytes(8) = Bytes.to_int(#fedcba9876543210) let f : () => address = () => ak_2gx9MEFxKvY9vMG5YnqnXWv1hCsX7rgnfvBLJS4aQurustR1rt if(Bits.test(Bits.all, 10)) abort("ohno") if(true && false) require(true, "ohyes") elif(false || 2 == 2) () else () if(true) f(1,2)((1,2)) else switch(1::[1,2,3]) [] => 1 a::b => 123 1::2::3 => 123123 [2,3,4] => 1 _ => 13 1::[2] => 2138 put(state{johann = 1}) let m = {["foo"] = 19, /*hey wanna talk about inlined comments?*/ ["bar"] = 42} let n = {} m{ ["x" = 0] @ z = z + state.johann } let sh : shakespeare(shakespeare(int)) = {wolfgang = state} sh{wolfgang.wolfgang = sh.wolfgang} // comment exit("hope you had fun reading this")