// Try to cover all syntactic constructs. contract AllSyntaxType = type typeDecl /* bla */ type paramTypeDecl('a, 'b) /** Multi- * line * comment */ function foo : _ contract AllSyntax = type typeDecl = int type paramTypeDecl('a, 'b) = (('a, 'b) => 'b) => list('a) => 'b => 'b record nestedRecord = { x : int } record recordType = { z : nestedRecord, y : int } datatype variantType('a) = None | Some('a) let valWithType : map(int, int) => option(int) = (m) => Map.get(m, 42) let valNoType = if(valWithType(Map.empty) == None) print(42 mod 10 * 5 / 3) function funWithType(x : int, y) : (int, list(int)) = (x, 0 :: [y] ++ []) function funNoType() = let foo = (x, y : bool) => if (! (y && x =< 0x0b || true)) [x] else [11..20] let setY(r : recordType) : unit = r{ y = 5 } let setX(r : recordType, x : int) : recordType = r { z.x = x } // nested record update let getY(r) = switch(r) {y = y} => y switch (funWithType(1, -2)) (x, [y, z]) => bar({x = z, y = -y + - -z * (-1)}) (x, y :: _) => () let hash : address = #01ab0fff11 let b = false let qcon = Mod.Con let str = "blabla\nfoo" let chr = '"'