1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
(* TEST
flags = "-dsource";
expect;
*)
let (.?[]) = Hashtbl.find_opt
let (.@[]) = Hashtbl.find
let ( .@[]<- ) = Hashtbl.add
let (.@{}) = Hashtbl.find
let ( .@{}<- ) = Hashtbl.add
let (.@()) = Hashtbl.find
let ( .@()<- ) = Hashtbl.add ;;
[%%expect {|
let (.?[]) = Hashtbl.find_opt;;
val ( .?[] ) : ('a, 'b) Hashtbl.t -> 'a -> 'b option = <fun>
let (.@[]) = Hashtbl.find;;
val ( .@[] ) : ('a, 'b) Hashtbl.t -> 'a -> 'b = <fun>
let (.@[]<-) = Hashtbl.add;;
val ( .@[]<- ) : ('a, 'b) Hashtbl.t -> 'a -> 'b -> unit = <fun>
let (.@{}) = Hashtbl.find;;
val ( .@{} ) : ('a, 'b) Hashtbl.t -> 'a -> 'b = <fun>
let (.@{}<-) = Hashtbl.add;;
val ( .@{}<- ) : ('a, 'b) Hashtbl.t -> 'a -> 'b -> unit = <fun>
let (.@()) = Hashtbl.find;;
val ( .@() ) : ('a, 'b) Hashtbl.t -> 'a -> 'b = <fun>
let (.@()<-) = Hashtbl.add;;
val ( .@()<- ) : ('a, 'b) Hashtbl.t -> 'a -> 'b -> unit = <fun>
|}]
let h: (string,int) Hashtbl.t = Hashtbl.create 17;;
[%%expect {|
let h : (string, int) Hashtbl.t = Hashtbl.create 17;;
val h : (string, int) Hashtbl.t = <abstr>
|}]
let () =
h .@ ("One") <- 1
; assert (h.@{"One"} = 1)
; Format.printf "%d" h.@{"One"}
; assert (h.?["Two"] = None)
[%%expect {|
let () =
h.@("One") <- 1;
assert ((h.@{"One"}) = 1);
Format.printf "%d" (h.@{"One"});
assert ((h.?["Two"]) = None);;
|}]
(* from GPR#1392 *)
let ( #? ) x y = (x, y)
let ( .%() ) x y = x.(y)
let x = [| 0 |]
let _ = 1 #? x.(0)
let _ = 1 #? x.%(0);;
[%%expect {|
let (#?) x y = (x, y);;
val ( #? ) : 'a -> 'b -> 'a * 'b = <fun>
let (.%()) x y = x.(y);;
val ( .%() ) : 'a array -> int -> 'a = <fun>
let x = [|0|];;
val x : int array = [|0|]
let _ = 1 #? (x.(0));;
- : int * int = (1, 0)
let _ = 1 #? (x.%(0));;
- : int * int = (1, 0)
|}]
(* from GPR#1467 *)
let _ = x.%(((); (); 0))
let _ = x.%((Format.printf "hello"; 0))
[%%expect {|
let _ = x.%(((); (); 0));;
- : int = 0
let _ = x.%((Format.printf "hello"; 0));;
- : int = 0
|}]
|