summaryrefslogtreecommitdiff
path: root/testsuite/tests/parsing/extended_indexoperators.ml
blob: 348a500606a72312ab819afc742a685c8c520b9f (plain)
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
|}]