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"
3
2
4
3
let % expect_test " extract local constant" =
5
- extract_local_test
4
+ extract_test
6
5
{|
7
6
let f =
8
7
0 + $ 1 $
9
8
| };
10
9
[% expect
11
10
{|
11
+ let const_name1 = 1
12
12
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
+ | }]
30
15
;;
31
16
32
17
let % expect_test " extract function single parameter" =
33
- extract_function_test
18
+ extract_test
34
19
{|
20
+ let fun_name1 () = ()
35
21
let f x =
36
22
$ (x * 2 )$ + 3
37
23
| };
38
24
[% expect
39
25
{|
40
- let fun_name x = (x * 2 )
41
-
26
+ let fun_name1 () = ()
27
+ let fun_name2 ( x ) = x * 2
42
28
let f x =
43
- fun_name x + 3 | }]
29
+ fun_name2 x + 3
30
+ | }]
44
31
;;
45
32
46
33
let % 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
77
35
{|
78
36
let f x =
79
- let exception Local in
80
- $ raise Local$
37
+ let y = 0 in
38
+ $ (x * y) $ + 3
81
39
| };
82
40
[% expect
83
41
{|
84
- let fun_name () = raise Local
85
-
42
+ let fun_name1 (y ) (x ) = x * y
86
43
let f x =
87
- let exception Local in
88
- fun_name () |} ]
44
+ let y = 0 in
45
+ fun_name1 y x + 3
46
+ | }]
89
47
;;
90
48
91
49
let % expect_test " extract function with shadowed parameter" =
92
- extract_function_test
50
+ extract_test
93
51
{|
94
52
let x = 0
95
53
let f x = $ x + 1 $
96
54
| };
97
55
[% expect
98
56
{|
99
57
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
+ | }]
103
61
;;
104
62
105
63
let % expect_test " extract function with bound variable" =
106
- extract_function_test
64
+ extract_test
107
65
{|
108
66
let x = 0
109
67
let y = 1
@@ -113,79 +71,81 @@ let f x = $x + y$
113
71
{|
114
72
let x = 0
115
73
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
+ | }]
119
77
;;
120
78
121
79
let % expect_test " extract higher order function" =
122
- extract_function_test
80
+ extract_test
123
81
{|
124
82
let f x =
125
83
$ List. map (fun y -> y + 1 ) x$
126
84
| };
127
85
[% expect
128
86
{|
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
131
88
let f x =
132
- fun_name x | }]
89
+ fun_name1 x
90
+ | }]
133
91
;;
134
92
135
93
let % expect_test " extract higher order function" =
136
- extract_function_test
94
+ extract_test
137
95
{|
138
96
let f y =
139
97
$ List. map (fun y -> y + 1 ) y$
140
98
| };
141
99
[% expect
142
100
{|
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
145
102
let f y =
146
- fun_name y | }]
103
+ fun_name1 y
104
+ | }]
147
105
;;
148
106
149
107
let % expect_test " extract higher order function" =
150
- extract_function_test
108
+ extract_test
151
109
{|
152
110
let f y =
153
- $ List. map (fun y -> y + 1 ) y$
111
+ $ List. map (fun y -> y + 1 ) y$
154
112
| };
155
113
[% expect
156
114
{|
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
159
116
let f y =
160
- fun_name y | }]
117
+ fun_name1 y
118
+ | }]
161
119
;;
162
120
163
121
let % expect_test " extract inside let binding" =
164
- extract_function_test
122
+ extract_test
165
123
{|
166
124
let f y =
167
125
let y = y + 1 in
168
126
$ y + 2 $
169
127
| };
170
128
[% expect
171
129
{|
172
- let fun_name y = y + 2
173
-
130
+ let fun_name1 (y ) = y + 2
174
131
let f y =
175
132
let y = y + 1 in
176
- fun_name y | }]
133
+ fun_name1 y
134
+ | }]
177
135
;;
178
136
179
137
let % expect_test " extract free variable" =
180
- extract_function_test
138
+ extract_test
181
139
{|
140
+ let z = 0
182
141
let f () =
183
142
$ z + 1 $
184
143
| };
185
144
[% expect
186
145
{|
187
- let fun_name () = z + 1
188
-
146
+ let z = 0
147
+ let fun_name1 () = z + 1
189
148
let f () =
190
- fun_name () | }]
149
+ fun_name1 ()
150
+ | }]
191
151
;;
0 commit comments