package ppx_here
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=a8883745acd30a269228d4cdfe2ad169994c44364d23ed5049e532fc250d7400
md5=f11895dc064fcf56bb323423041469ed
Description
Part of the Jane Street's PPX rewriters collection.
Published: 20 Nov 2019
README
ppx_here
A ppx rewriter that defines an extension node whose value is its source position.
Syntax
ppx_here
rewrites the extension [%here]
in expressions, by replacing it by a value of type Source_code_position.t
(i.e. Lexing.position
) corresponding to the current position. It respects line number directives.
For instance:
let _ =
print_endline [%here].Lexing.pos_fname
becomes:
let _ =
print_endline
{
Lexing.pos_fname = ppx/ppx_here/test/test.ml";
pos_lnum = 2;
pos_cnum = 26;
pos_bol = 8;
}.Lexing.pos_fname
Usage
This is normally used so exceptions can contain better positions. An example is Core_kernel.Option.value_exn
, which takes an optional position so that if you have a stack trace, you can get still the origin of the exception.
It can also be used in cases where stack traces are useless (for instance in monads with a complicated control flow).
Command line flag
If the flag -dirname <dir>
is given, relative filenames are made relative to <dir>
. <dir>
can be a relative path.
<dir>
can be chosen as the path from the root of the repository to the directory of the source, to make filenames unique within the repository (which avoids ambiguities as there can be many files called server.ml
, common.ml
or config.ml
).
Dev Dependencies
None
Used by (19)
-
cohttp-eio
>= "6.0.0~beta2"
-
conduit-async
= "2.3.0" | >= "4.0.0"
- dap
- h1_parser
- http
-
nuscr
>= "2.1.0"
-
obeam
>= "0.1.0"
- oci
-
pa_ppx
< "0.07" | >= "0.10"
-
ppx_assert
= "v0.13.0"
-
ppx_bap
< "v0.14.0"
-
ppx_bin_prot
= "v0.13.0"
-
ppx_expect
>= "v0.13.0" & < "v0.14.0"
-
ppx_fail
= "v0.13.0"
-
ppx_jane
= "v0.13.0"
-
ppx_sexp_message
= "v0.13.0"
-
ppx_sexp_value
= "v0.13.0"
- timmy
-
toplevel_backend
< "v0.14.0"
Conflicts
None