Skip to content

Commit a3c8465

Browse files
committed
compat
Signed-off-by: Paul-Elliot <peada@free.fr>
1 parent 4efd65a commit a3c8465

File tree

3 files changed

+61
-12
lines changed

3 files changed

+61
-12
lines changed

src/document/generator.ml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ open Types
2121
module O = Codefmt
2222
open O.Infix
2323

24+
let filter_map f x =
25+
List.rev
26+
@@ List.fold_left
27+
(fun acc x -> match f x with Some x -> x :: acc | None -> acc)
28+
[] x
29+
2430
let label t =
2531
match t with
2632
| Odoc_model.Lang.TypeExpr.Label s -> O.txt s
@@ -293,7 +299,7 @@ module Make (Syntax : SYNTAX) = struct
293299
| Some info -> Some (info, loc)
294300
| None -> None
295301
in
296-
let infos = List.filter_map mapper infos in
302+
let infos = filter_map mapper infos in
297303
let contents = Impl.impl ~infos source_code in
298304
{ Source_page.url; contents }
299305
end

src/loader/compat.cppo.ml

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,56 @@ let get_type_desc = Types.get_desc
44
let get_type_desc t = t.Types.desc
55
#endif
66

7+
type 'a pattern =
8+
#if OCAML_VERSION >= (4,11,0)
9+
'a Typedtree.general_pattern
10+
#else
11+
Typedtree.pattern
12+
#endif
13+
14+
type 'a pattern_desc =
15+
#if OCAML_VERSION >= (4,11,0)
16+
'a Typedtree.pattern_desc
17+
#else
18+
Typedtree.pattern_desc
19+
#endif
20+
721
(** Extract longident and constructor description from a pattern construct,
822
when it is one. *)
9-
let get_pattern_construct_info (type a) : a Typedtree.pattern_desc -> _ = function
23+
let get_pattern_construct_info (type a) : a pattern_desc -> _ = function
1024
#if OCAML_VERSION >= (4,13,0)
11-
Typedtree.Tpat_construct (l, { cstr_res; _ }, _, _)
25+
| Typedtree.Tpat_construct (l, { cstr_res; _ }, _, _)
1226
#else
13-
Tpat_construct (l, { cstr_res; _ }, _)
27+
| Tpat_construct (l, { cstr_res; _ }, _)
1428
#endif
1529
-> Some (l, cstr_res)
1630
| _ -> None
31+
32+
33+
module Tast_iterator = struct
34+
#if OCAML_VERSION >= (4,09,0)
35+
include Tast_iterator
36+
#else
37+
open Asttypes
38+
open Typedtree
39+
40+
type iterator =
41+
{
42+
expr: iterator -> expression -> unit;
43+
module_expr: iterator -> module_expr -> unit;
44+
class_type: iterator -> class_type -> unit;
45+
module_type: iterator -> module_type -> unit;
46+
pat: iterator -> pattern -> unit;
47+
typ: iterator -> core_type -> unit;
48+
}
49+
50+
let default_iterator = {
51+
expr = fun _ _ -> () ;
52+
module_expr = fun _ _ -> () ;
53+
class_type = fun _ _ -> () ;
54+
module_type = fun _ _ -> () ;
55+
pat = fun _ _ -> () ;
56+
typ = fun _ _ -> () ;
57+
}
58+
#endif
59+
end

src/loader/occurrences.ml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ module Global_analysis = struct
5656
| _ -> ())
5757
| _ -> ()
5858

59-
let pat poses (type a) : a Typedtree.general_pattern -> unit = function
59+
let pat poses : _ Compat.pattern -> unit = function
6060
| { Typedtree.pat_desc; pat_loc; _ } -> (
6161
match Compat.get_pattern_construct_info pat_desc with
6262
| Some (l, cstr_res) -> (
@@ -113,31 +113,31 @@ let of_cmt (cmt : Cmt_format.cmt_infos) =
113113
let poses = ref [] in
114114
let module_expr iterator mod_expr =
115115
Global_analysis.module_expr poses mod_expr;
116-
Tast_iterator.default_iterator.module_expr iterator mod_expr
116+
Compat.Tast_iterator.default_iterator.module_expr iterator mod_expr
117117
in
118118
let expr iterator e =
119119
Global_analysis.expr poses e;
120-
Tast_iterator.default_iterator.expr iterator e
120+
Compat.Tast_iterator.default_iterator.expr iterator e
121121
in
122122
let pat iterator e =
123123
Global_analysis.pat poses e;
124-
Tast_iterator.default_iterator.pat iterator e
124+
Compat.Tast_iterator.default_iterator.pat iterator e
125125
in
126126
let typ iterator ctyp_expr =
127127
Global_analysis.core_type poses ctyp_expr;
128-
Tast_iterator.default_iterator.typ iterator ctyp_expr
128+
Compat.Tast_iterator.default_iterator.typ iterator ctyp_expr
129129
in
130130
let module_type iterator mty =
131131
Global_analysis.module_type poses mty;
132-
Tast_iterator.default_iterator.module_type iterator mty
132+
Compat.Tast_iterator.default_iterator.module_type iterator mty
133133
in
134134
let class_type iterator cl_type =
135135
Global_analysis.class_type poses cl_type;
136-
Tast_iterator.default_iterator.class_type iterator cl_type
136+
Compat.Tast_iterator.default_iterator.class_type iterator cl_type
137137
in
138138
let iterator =
139139
{
140-
Tast_iterator.default_iterator with
140+
Compat.Tast_iterator.default_iterator with
141141
expr;
142142
pat;
143143
module_expr;

0 commit comments

Comments
 (0)