diff options
author | Son Ho | 2022-03-03 11:52:34 +0100 |
---|---|---|
committer | Son Ho | 2022-03-03 11:52:34 +0100 |
commit | 449c2cef40e1e255666c5564476007027b1a9b21 (patch) | |
tree | 4cdd707c663ce90e115fccac1a15d2eb3ec7526b /src/Names.ml | |
parent | 848874a4eb5d29742f7afa2567bc424871b1c7ef (diff) |
Move the names from Identifiers to Names
Diffstat (limited to '')
-rw-r--r-- | src/Names.ml | 39 |
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] |