-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfileInfo.mli
77 lines (63 loc) · 2.42 KB
/
fileInfo.mli
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
(**
* Copyright (c) 2014, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the "hack" directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*)
(*****************************************************************************)
(* This module defines the data structured used to describe the content of
* a file.
* The parser constructs FileInfo.t structs, that contain names and positions
* plus some extra info required for the build.
* After the names have been checked (Naming.make_env), we "simplify" the
* struct and only keep the names defined in the files we know about.
*)
(*****************************************************************************)
open Utils
(*****************************************************************************)
(* Parsing modes *)
(*****************************************************************************)
type file_type =
| PhpFile
| HhFile
[@@deriving show]
type mode =
| Mdecl (* just declare signatures, don't check anything *)
| Mstrict (* check everthing! *)
| Mpartial (* Don't fail if you see a function/class you don't know *)
[@@deriving show]
(*****************************************************************************)
(* The record produced by the parsing phase. *)
(*****************************************************************************)
type id = Pos.t * string
[@@deriving show]
type t = {
file_mode : mode option;
funs : id list;
classes : id list;
typedefs : id list;
consts : id list;
comments : (Pos.t * string) list;
consider_names_just_for_autoload: bool;
}
[@@deriving show]
(*****************************************************************************)
(* The simplified record used after parsing. *)
(*****************************************************************************)
type names = {
n_funs : SSet.t;
n_classes : SSet.t;
n_types : SSet.t;
n_consts : SSet.t;
}
type fast = names Relative_path.Map.t
val empty_names: names
(*****************************************************************************)
(* Functions simplifying the file information. *)
(*****************************************************************************)
val simplify: t -> names
val merge_names: names -> names -> names
val simplify_fast: t Relative_path.Map.t -> names Relative_path.Map.t