You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.1 KiB

/*
* Copyright (c) 2015 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
open! Utils;
let module F = Format;
let module L = Logging;
/** Location in the original source file */
type t = {
line: int, /** The line number. -1 means "do not know" */
col: int, /** The column number. -1 means "do not know" */
file: DB.source_file /** The name of the source file */
}
[@@deriving compare];
let equal loc1 loc2 => compare loc1 loc2 == 0;
/** Dump a location */
let d (loc: t) => L.add_print_action (L.PTloc, Obj.repr loc);
/** Dummy location */
let dummy = {line: (-1), col: (-1), file: DB.source_file_empty};
/** Pretty print a location */
let pp f (loc: t) => F.fprintf f "[line %d]" loc.line;
let to_string loc => {
let s = string_of_int loc.line;
if (loc.col !== (-1)) {
s ^ ":" ^ string_of_int loc.col
} else {
s
}
};