@@ -10,26 +10,37 @@ let extract_extension str =
10
10
11
11
let transformed_count = Hashtbl. create 10
12
12
13
- let increment_transformed_count (ext_name : string ) =
14
- match Hashtbl. find_opt transformed_count ext_name with
15
- | None -> Hashtbl. add transformed_count ext_name 1
16
- | Some count -> Hashtbl. replace transformed_count ext_name (count + 1 )
13
+ let escaped_name_for_ext ? fn_name (ext_name : string ) =
14
+ match fn_name with
15
+ | Some fn_name -> ext_name ^ " _ " ^ fn_name
16
+ | None -> ext_name
17
17
18
- let get_transformed_count ext_name =
19
- match Hashtbl. find_opt transformed_count ext_name with
18
+ let increment_transformed_count ?fn_name (ext_name : string ) =
19
+ let name = escaped_name_for_ext ?fn_name ext_name in
20
+ match Hashtbl. find_opt transformed_count name with
21
+ | None -> Hashtbl. add transformed_count name 1
22
+ | Some count -> Hashtbl. replace transformed_count name (count + 1 )
23
+
24
+ let get_transformed_count ?fn_name ext_name =
25
+ match
26
+ Hashtbl. find_opt transformed_count (escaped_name_for_ext ?fn_name ext_name)
27
+ with
20
28
| None -> 0
21
29
| Some count -> count
22
30
23
31
type transformMode = LetBinding | ModuleBinding
24
32
25
33
let make_lident ?fn_name ~extension_name ~transform_mode filename =
26
34
Longident. parse
27
- (Printf. sprintf " %s__%s.M %i%s"
35
+ (Printf. sprintf " %s__%s%s__M %i%s"
28
36
(if String. ends_with filename ~suffix: " .res" then
29
37
Filename. (chop_suffix (basename filename) " .res" )
30
38
else Filename. (chop_suffix (basename filename) " .resi" ))
31
39
extension_name
32
- (get_transformed_count extension_name)
40
+ (match fn_name with
41
+ | None -> " "
42
+ | Some fn_name -> " _" ^ fn_name)
43
+ (get_transformed_count ?fn_name extension_name)
33
44
(match (transform_mode, fn_name) with
34
45
| LetBinding , Some fn_name -> " ." ^ fn_name
35
46
| LetBinding , None -> " .default"
@@ -50,7 +61,7 @@ let transform_expr expr =
50
61
match extract_extension ext_name with
51
62
| None -> expr
52
63
| Some (extension_name , fn_name ) ->
53
- increment_transformed_count extension_name;
64
+ increment_transformed_count ?fn_name extension_name;
54
65
let loc = expr.pexp_loc in
55
66
let filename = loc.loc_start.pos_fname in
56
67
let lid =
@@ -87,8 +98,8 @@ let structure_item structure_item =
87
98
when ext_name |> should_transform -> (
88
99
match extract_extension ext_name with
89
100
| None -> structure_item
90
- | Some (extension_name , _fn_name ) ->
91
- increment_transformed_count extension_name;
101
+ | Some (extension_name , fn_name ) ->
102
+ increment_transformed_count ?fn_name extension_name;
92
103
{
93
104
structure_item with
94
105
pstr_desc =
@@ -117,8 +128,8 @@ let structure_item structure_item =
117
128
when ext_name |> should_transform -> (
118
129
match extract_extension ext_name with
119
130
| None -> structure_item
120
- | Some (extension_name , _fn_name ) ->
121
- increment_transformed_count extension_name;
131
+ | Some (extension_name , fn_name ) ->
132
+ increment_transformed_count ?fn_name extension_name;
122
133
{
123
134
structure_item with
124
135
pstr_desc =
0 commit comments