package ppxlib

  1. Overview
  2. No Docs
Standard infrastructure for ppx rewriters

Install

dune-project
 Dependency

Authors

Maintainers

Sources

ppxlib-0.32.0.tbz
sha256=507cc73ccf895f22eeb5257a2243838c18a38a09105fcff55eeef9148555422b
sha512=73fef8ab8761bfbfde6ae87cc51eaacc5a5c937f0d628a890f0abdb2bffbf073932c25287a9e3baa2a1947c37f3dfa7f83ddd33c440e2e800971015addc97cd2

doc/src/ppxlib/expansion_helpers.ml.html

Source file expansion_helpers.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
open Import

type affix =
  | Prefix of string
  | Suffix of string
  | PrefixSuffix of string * string

let mangle ?(fixpoint = "t") affix name =
  match (String.(name = fixpoint), affix) with
  | true, (Prefix x | Suffix x) -> x
  | true, PrefixSuffix (p, s) -> p ^ "_" ^ s
  | false, PrefixSuffix (p, s) -> p ^ "_" ^ name ^ "_" ^ s
  | false, Prefix x -> x ^ "_" ^ name
  | false, Suffix x -> name ^ "_" ^ x

let mangle_type_decl ?fixpoint affix { ptype_name = { txt = name; _ }; _ } =
  mangle ?fixpoint affix name

let mangle_lid ?fixpoint affix lid =
  match lid with
  | Lident s -> Lident (mangle ?fixpoint affix s)
  | Ldot (p, s) -> Ldot (p, mangle ?fixpoint affix s)
  | Lapply _ -> invalid_arg "Ppxlib.Expansion_helpers.mangle_lid: Lapply"

module Quoter = Quoter