ppx_compare Mangled

Reviewed By: cristianoc

Differential Revision: D4232369

fbshipit-source-id: 3d4dcc3
master
Josh Berdine 9 years ago committed by Facebook Github Bot
parent 5107815c18
commit 5bd1cfab26

@ -16,24 +16,7 @@ open! Utils;
/** Module for Mangled Names */ /** Module for Mangled Names */
let module F = Format; let module F = Format;
type t = {plain: string, mangled: option string}; type t = {plain: string, mangled: option string} [@@deriving compare];
let mangled_compare so1 so2 =>
switch (so1, so2) {
| (None, None) => 0
| (None, Some _) => (-1)
| (Some _, None) => 1
| (Some s1, Some s2) => string_compare s1 s2
};
let compare pn1 pn2 => {
let n = string_compare pn1.plain pn2.plain;
if (n != 0) {
n
} else {
mangled_compare pn1.mangled pn2.mangled
}
};
let equal pn1 pn2 => compare pn1 pn2 == 0; let equal pn1 pn2 => compare pn1 pn2 == 0;
@ -81,9 +64,7 @@ let from_package_class package_name class_name =>
/** Pretty print a mangled name */ /** Pretty print a mangled name */
let pp f pn => F.fprintf f "%s" (to_string pn); let pp f pn => F.fprintf f "%s" (to_string pn);
type mangled_t = t;
let module MangledSet = Set.Make { let module MangledSet = Set.Make {
type t = mangled_t; type nonrec t = t;
let compare = compare; let compare = compare;
}; };

@ -16,11 +16,7 @@ open! Utils;
/** Module for Mangled Names */ /** Module for Mangled Names */
/** Type of mangled names */ /** Type of mangled names */
type t; type t [@@deriving compare];
/** Comparison for mangled names */
let compare: t => t => int;
/** Equality for mangled names */ /** Equality for mangled names */

Loading…
Cancel
Save