1- let extract_local_test = Code_actions. code_action_test ~title: " Extract local"
2- let extract_function_test = Code_actions. code_action_test ~title: " Extract function"
1+ let extract_test = Code_actions. code_action_test ~title: " Extract expression"
32
43let % expect_test " extract local constant" =
5- extract_local_test
4+ extract_test
65 {|
76let f =
87 0 + $ 1 $
98| };
109 [% expect
1110 {|
11+ let const_name1 = 1
1212 let f =
13- let var_name = 1 in
14- 0 + var_name | }]
15- ;;
16-
17- let % expect_test " extract local expression" =
18- extract_local_test
19- {|
20- let f =
21- let x = 2 in
22- $ 0 + 1 + x$ + 1
23- | };
24- [% expect
25- {|
26- let f =
27- let x = 2 in
28- let var_name = 0 + 1 + x in
29- var_name + 1 | }]
13+ 0 + const_name1
14+ | }]
3015;;
3116
3217let % expect_test " extract function single parameter" =
33- extract_function_test
18+ extract_test
3419 {|
20+ let fun_name1 () = ()
3521let f x =
3622 $ (x * 2 )$ + 3
3723| };
3824 [% expect
3925 {|
40- let fun_name x = (x * 2 )
41-
26+ let fun_name1 () = ()
27+ let fun_name2 ( x ) = x * 2
4228 let f x =
43- fun_name x + 3 | }]
29+ fun_name2 x + 3
30+ | }]
4431;;
4532
4633let % expect_test " extract function multiple parameter" =
47- extract_function_test
48- {|
49- let f x =
50- let y = 0 in
51- $ (x * y)$ + 3
52- | };
53- [% expect
54- {|
55- let fun_name y x = (x * y)
56-
57- let f x =
58- let y = 0 in
59- fun_name y x + 3 | }]
60- ;;
61-
62- let % expect_test " extract function with local module" =
63- extract_function_test
64- {|
65- let f x =
66- let module M = struct
67- let y = 0
68- end in
69- $ (x * M. y)$ + 3
70- | };
71- [% expect {|| }]
72- ;;
73-
74- (* TODO: This extraction shouldn't be allowed. *)
75- let % expect_test " extract function with local exception" =
76- extract_function_test
34+ extract_test
7735 {|
7836let f x =
79- let exception Local in
80- $ raise Local$
37+ let y = 0 in
38+ $ (x * y) $ + 3
8139| };
8240 [% expect
8341 {|
84- let fun_name () = raise Local
85-
42+ let fun_name1 (y ) (x ) = x * y
8643 let f x =
87- let exception Local in
88- fun_name () |} ]
44+ let y = 0 in
45+ fun_name1 y x + 3
46+ | }]
8947;;
9048
9149let % expect_test " extract function with shadowed parameter" =
92- extract_function_test
50+ extract_test
9351 {|
9452let x = 0
9553let f x = $ x + 1 $
9654| };
9755 [% expect
9856 {|
9957 let x = 0
100- let fun_name x = x + 1
101-
102- let f x = fun_name x | }]
58+ let fun_name1 ( x ) = x + 1
59+ let f x = fun_name1 x
60+ | }]
10361;;
10462
10563let % expect_test " extract function with bound variable" =
106- extract_function_test
64+ extract_test
10765 {|
10866let x = 0
10967let y = 1
@@ -113,79 +71,81 @@ let f x = $x + y$
11371 {|
11472 let x = 0
11573 let y = 1
116- let fun_name x = x + y
117-
118- let f x = fun_name x | }]
74+ let fun_name1 ( x ) = x + y
75+ let f x = fun_name1 x
76+ | }]
11977;;
12078
12179let % expect_test " extract higher order function" =
122- extract_function_test
80+ extract_test
12381 {|
12482let f x =
12583 $ List. map (fun y -> y + 1 ) x$
12684| };
12785 [% expect
12886 {|
129- let fun_name x = List. map (fun y -> y + 1 ) x
130-
87+ let fun_name1 (x ) = List. map (fun y -> y + 1 ) x
13188 let f x =
132- fun_name x | }]
89+ fun_name1 x
90+ | }]
13391;;
13492
13593let % expect_test " extract higher order function" =
136- extract_function_test
94+ extract_test
13795 {|
13896let f y =
13997 $ List. map (fun y -> y + 1 ) y$
14098| };
14199 [% expect
142100 {|
143- let fun_name y = List. map (fun y -> y + 1 ) y
144-
101+ let fun_name1 (y ) = List. map (fun y -> y + 1 ) y
145102 let f y =
146- fun_name y | }]
103+ fun_name1 y
104+ | }]
147105;;
148106
149107let % expect_test " extract higher order function" =
150- extract_function_test
108+ extract_test
151109 {|
152110let f y =
153- $ List. map (fun y -> y + 1 ) y$
111+ $ List. map (fun y -> y + 1 ) y$
154112| };
155113 [% expect
156114 {|
157- let fun_name y = List. map (fun y -> y + 1 ) y
158-
115+ let fun_name1 (y ) = List. map (fun y -> y + 1 ) y
159116 let f y =
160- fun_name y | }]
117+ fun_name1 y
118+ | }]
161119;;
162120
163121let % expect_test " extract inside let binding" =
164- extract_function_test
122+ extract_test
165123 {|
166124let f y =
167125 let y = y + 1 in
168126 $ y + 2 $
169127| };
170128 [% expect
171129 {|
172- let fun_name y = y + 2
173-
130+ let fun_name1 (y ) = y + 2
174131 let f y =
175132 let y = y + 1 in
176- fun_name y | }]
133+ fun_name1 y
134+ | }]
177135;;
178136
179137let % expect_test " extract free variable" =
180- extract_function_test
138+ extract_test
181139 {|
140+ let z = 0
182141let f () =
183142 $ z + 1 $
184143| };
185144 [% expect
186145 {|
187- let fun_name () = z + 1
188-
146+ let z = 0
147+ let fun_name1 () = z + 1
189148 let f () =
190- fun_name () | }]
149+ fun_name1 ()
150+ | }]
191151;;
0 commit comments