Import Upstream version 20180207
[hcoop/debian/mlton.git] / regression / valrec.sml
CommitLineData
7f918cf1
CE
1val rec ((((((((x)))))))) = fn () => ()
2
3val _ = x ()
4
5local
6 val 'a rec f = fn () => ()
7in
8end
9
10local
11 val x = "Hello, world!\n"
12
13 val x = "BUG\n"
14 and rec f = fn () => print x
15in
16 val _ = f ()
17end
18
19local
20 val x = "BUG\n"
21
22 val x = "Hello, world!\n"
23 and rec f = fn y => print y
24in
25 val _ = f x
26end
27
28local
29 val rec rec f = fn () => ()
30in
31end
32
33local
34 val rec f = fn () => ()
35 and rec g = fn () => ()
36in
37end
38
39(* valrec.sml *)
40
41(* Checks parsing, scoping, typing and dynamic semantics of "val rec". *)
42
43fun x x = x
44val _ =
45 case x 1 of
46 1 => ()
47 | _ => raise Fail "bug"
48
49val a = fn x => x
50val a = 1
51and rec b = fn x => a(b(c(d(e(f(g x))))))
52and c : 'a -> 'a as d : 'a -> 'a = fn x => x
53and rec e as f as g = fn x => x
54and h : 'b -> 'b : 'b -> 'b = fn x => x;