@@ -42,6 +42,10 @@ let module_substitution ~idents ~targets m test_data =
42
42
fprintf std_formatter "AFTER \n======\n%!";
43
43
fprintf std_formatter "S%a\n\n%!" (Component.Fmt.module_ cfg) m'
44
44
```
45
+ ``` mdx-error
46
+ Line 22, characters 49-66:
47
+ Error: Unbound type constructor Ident.path_module
48
+ ```
45
49
46
50
Module substitution test
47
51
@@ -69,27 +73,8 @@ the equations for t, u and v point to SubTargets rather than SubstituteMe
69
73
type vv = SubstituteMe.v
70
74
end
71
75
|} ;;
72
- BEFORE
73
- ======
74
- S:
75
- sig
76
- type tt/5 = local(SubstituteMe/2,false).t
77
- type uu/4 = local(SubstituteMe/2,false).u
78
- type vv/3 = local(SubstituteMe/2,false).v
79
- end
80
- (canonical=None)
81
-
82
- AFTER
83
- ======
84
- S:
85
- sig
86
- type tt/6 = resolved(SubTargets/1).t
87
- type uu/7 = resolved(SubTargets/1).u
88
- type vv/8 = resolved(SubTargets/1).v
89
- end
90
- (canonical=None)
91
-
92
- - : unit = ()
76
+ Line 1, characters 1-20:
77
+ Error: Unbound value module_substitution
93
78
```
94
79
95
80
Now test by compiling signatures and printing the result:
@@ -137,38 +122,38 @@ let compile mli =
137
122
end
138
123
|} ;;
139
124
- : Component.Signature.t =
140
- module type Monad/30 =
125
+ module type Monad/21 =
141
126
sig
142
- type t/31
143
- val map/32 : ([a] resolved(t/31 )) -> ((a) -> b) -> [b] resolved(t/31 )
144
- val join/33 : ([[a] resolved(t/31 )] resolved(t/31 )) -> [a] resolved(t/31 )
127
+ type t/22
128
+ val map/23 : ([a] resolved(t/22 )) -> ((a) -> b) -> [b] resolved(t/22 )
129
+ val join/24 : ([[a] resolved(t/22 )] resolved(t/22 )) -> [a] resolved(t/22 )
145
130
end
146
- module SomeMonad/29 :
131
+ module SomeMonad/20 :
147
132
sig
148
- type t/34
149
- include r(Monad/30 ) with [resolved(root(Monad/30 ).t) = [a] resolved(t/34 )]
133
+ type t/25
134
+ include r(Monad/21 ) with [resolved(root(Monad/21 ).t) = [a] resolved(t/25 )]
150
135
(sig :
151
- val map/35 : ([a] resolved(t/34 )) -> ((a) -> b) -> [b] resolved(t/34 )
152
- val join/36 : ([[a] resolved(t/34 )] resolved(t/34 )) -> [a] resolved(t/34 )
153
- (removed=type (a) t = ([a] local(t/34 ,false)))
136
+ val map/26 : ([a] resolved(t/25 )) -> ((a) -> b) -> [b] resolved(t/25 )
137
+ val join/27 : ([[a] resolved(t/25 )] resolved(t/25 )) -> [a] resolved(t/25 )
138
+ (removed=type (a) t = ([a] local(t/25 ,false)))
154
139
end)
155
140
end (canonical=None)
156
- module ComplexTypeExpr/28 :
141
+ module ComplexTypeExpr/19 :
157
142
sig
158
- type t/37
159
- include r(Monad/30 ) with [resolved(root(Monad/30 ).t) = ([resolved(int) * a] resolved(t/37 ) * [a * resolved(int)] resolved(t/37 ))]
143
+ type t/28
144
+ include r(Monad/21 ) with [resolved(root(Monad/21 ).t) = ([resolved(int) * a] resolved(t/28 ) * [a * resolved(int)] resolved(t/28 ))]
160
145
(sig :
161
- val map/38 : (([resolved(int) * a] resolved(t/37 ) * [a * resolved(int)] resolved(t/37 ))) -> ((a) -> b) -> ([resolved(int) * b] resolved(t/37 ) * [b * resolved(int)] resolved(t/37 ))
162
- val join/39 : (([resolved(int) * ([resolved(int) * a] resolved(t/37 ) * [a * resolved(int)] resolved(t/37 ))] resolved(t/37 ) * [([resolved(int) * a] resolved(t/37 ) * [a * resolved(int)] resolved(t/37 )) * resolved(int)] resolved(t/37 ))) -> ([resolved(int) * a] resolved(t/37 ) * [a * resolved(int)] resolved(t/37 ))
163
- (removed=type (a) t = (([identifier(int,false) * a] local(t/37 ,false) * [a * identifier(int,false)] local(t/37 ,false))))
146
+ val map/29 : (([resolved(int) * a] resolved(t/28 ) * [a * resolved(int)] resolved(t/28 ))) -> ((a) -> b) -> ([resolved(int) * b] resolved(t/28 ) * [b * resolved(int)] resolved(t/28 ))
147
+ val join/30 : (([resolved(int) * ([resolved(int) * a] resolved(t/28 ) * [a * resolved(int)] resolved(t/28 ))] resolved(t/28 ) * [([resolved(int) * a] resolved(t/28 ) * [a * resolved(int)] resolved(t/28 )) * resolved(int)] resolved(t/28 ))) -> ([resolved(int) * a] resolved(t/28 ) * [a * resolved(int)] resolved(t/28 ))
148
+ (removed=type (a) t = (([identifier(int,false) * a] local(t/28 ,false) * [a * identifier(int,false)] local(t/28 ,false))))
164
149
end)
165
150
end (canonical=None)
166
- module Erase/27 :
151
+ module Erase/18 :
167
152
sig
168
- include r(Monad/30 ) with [resolved(root(Monad/30 ).t) = a]
153
+ include r(Monad/21 ) with [resolved(root(Monad/21 ).t) = a]
169
154
(sig :
170
- val map/40 : (a) -> ((a) -> b) -> b
171
- val join/41 : (a) -> a
155
+ val map/31 : (a) -> ((a) -> b) -> b
156
+ val join/32 : (a) -> a
172
157
(removed=type (a) t = (a))
173
158
end)
174
159
end (canonical=None)
@@ -191,22 +176,22 @@ More tests with two type variables:
191
176
end
192
177
|} ;;
193
178
- : Component.Signature.t =
194
- module type Monad_2/54 =
179
+ module type Monad_2/45 =
195
180
sig
196
- type t/55
197
- val map/56 : ([a * err] resolved(t/55 )) -> f:((a) -> b) -> [b * err] resolved(t/55 )
198
- val join/57 : ([[a * e] resolved(t/55 ) * e] resolved(t/55 )) -> [a * e] resolved(t/55 )
199
- val both/58 : ([a * e] resolved(t/55 )) -> ([b * e] resolved(t/55 )) -> [(a * b) * e] resolved(t/55 )
181
+ type t/46
182
+ val map/47 : ([a * err] resolved(t/46 )) -> f:((a) -> b) -> [b * err] resolved(t/46 )
183
+ val join/48 : ([[a * e] resolved(t/46 ) * e] resolved(t/46 )) -> [a * e] resolved(t/46 )
184
+ val both/49 : ([a * e] resolved(t/46 )) -> ([b * e] resolved(t/46 )) -> [(a * b) * e] resolved(t/46 )
200
185
end
201
- module SwappedVars/53 :
186
+ module SwappedVars/44 :
202
187
sig
203
- type t/59
204
- include r(Monad_2/54 ) with [resolved(root(Monad_2/54 ).t) = [b * a] resolved(t/59 )]
188
+ type t/50
189
+ include r(Monad_2/45 ) with [resolved(root(Monad_2/45 ).t) = [b * a] resolved(t/50 )]
205
190
(sig :
206
- val map/60 : ([err * a] resolved(t/59 )) -> f:((a) -> b) -> [err * b] resolved(t/59 )
207
- val join/61 : ([e * [e * a] resolved(t/59 )] resolved(t/59 )) -> [e * a] resolved(t/59 )
208
- val both/62 : ([e * a] resolved(t/59 )) -> ([e * b] resolved(t/59 )) -> [e * (a * b)] resolved(t/59 )
209
- (removed=type (a, b) t = ([b * a] local(t/59 ,false)))
191
+ val map/51 : ([err * a] resolved(t/50 )) -> f:((a) -> b) -> [err * b] resolved(t/50 )
192
+ val join/52 : ([e * [e * a] resolved(t/50 )] resolved(t/50 )) -> [e * a] resolved(t/50 )
193
+ val both/53 : ([e * a] resolved(t/50 )) -> ([e * b] resolved(t/50 )) -> [e * (a * b)] resolved(t/50 )
194
+ (removed=type (a, b) t = ([b * a] local(t/50 ,false)))
210
195
end)
211
196
end (canonical=None)
212
197
```
@@ -226,18 +211,18 @@ Edge cases:
226
211
end
227
212
|} ;;
228
213
- : Component.Signature.t =
229
- module type S/69 =
214
+ module type S/60 =
230
215
sig
231
- type t/70
232
- val map/71 : ([a] resolved(t/70 )) -> ((a) -> b) -> [b] resolved(t/70 )
216
+ type t/61
217
+ val map/62 : ([a] resolved(t/61 )) -> ((a) -> b) -> [b] resolved(t/61 )
233
218
end
234
- module M/68 :
219
+ module M/59 :
235
220
sig
236
- type t/72
237
- include r(S/69 ) with [resolved(root(S/69 ).t) = [(alias (poly_var [ `A of (a * b) ]) b)] resolved(t/72 )]
221
+ type t/63
222
+ include r(S/60 ) with [resolved(root(S/60 ).t) = [(alias (poly_var [ `A of (a * b) ]) b)] resolved(t/63 )]
238
223
(sig :
239
- val map/73 : ([(alias (poly_var [ `A of (a * b) ]) b)] resolved(t/72 )) -> ((a) -> b) -> [(alias (poly_var [ `A of (b * b) ]) b)] resolved(t/72 )
240
- (removed=type (a) t = ([(alias (poly_var [ `A of (a * b) ]) b)] local(t/72 ,false)))
224
+ val map/64 : ([(alias (poly_var [ `A of (a * b) ]) b)] resolved(t/63 )) -> ((a) -> b) -> [(alias (poly_var [ `A of (b * b) ]) b)] resolved(t/63 )
225
+ (removed=type (a) t = ([(alias (poly_var [ `A of (a * b) ]) b)] local(t/63 ,false)))
241
226
end)
242
227
end (canonical=None)
243
228
```
0 commit comments