summaryrefslogtreecommitdiff
path: root/src/Names.ml
diff options
context:
space:
mode:
authorSon Ho2022-03-03 11:52:34 +0100
committerSon Ho2022-03-03 11:52:34 +0100
commit449c2cef40e1e255666c5564476007027b1a9b21 (patch)
tree4cdd707c663ce90e115fccac1a15d2eb3ec7526b /src/Names.ml
parent848874a4eb5d29742f7afa2567bc424871b1c7ef (diff)
Move the names from Identifiers to Names
Diffstat (limited to 'src/Names.ml')
-rw-r--r--src/Names.ml39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/Names.ml b/src/Names.ml
new file mode 100644
index 00000000..fff98be9
--- /dev/null
+++ b/src/Names.ml
@@ -0,0 +1,39 @@
+open Identifiers
+
+type name = string list [@@deriving show, ord]
+(** A name such as: `std::collections::vector` (which would be represented as
+ [["std"; "collections"; "vector"]]) *)
+
+(* TODO: remove? *)
+module NameOrderedType : C.OrderedType with type t = name = struct
+ type t = name
+
+ let compare = compare_name
+
+ let to_string = String.concat "::"
+
+ let pp_t = pp_name
+
+ let show_t = show_name
+end
+
+module NameMap = C.MakeMap (NameOrderedType)
+module NameSet = C.MakeSet (NameOrderedType)
+
+type module_name = name [@@deriving show, ord]
+
+type type_name = name [@@deriving show, ord]
+
+module ImplId = IdGen ()
+
+(** A function name *)
+type fun_name =
+ | Regular of name (** "Regular" function name *)
+ | Impl of type_name * ImplId.id * string
+ (** The function comes from an "impl" block.
+
+ As we may have several "impl" blocks for one type, we need to use
+ a block id to disambiguate the functions (in rustc, this identifier
+ is called a "disambiguator").
+ *)
+[@@deriving show, ord]