package dune-private-libs

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file ast.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
26
27
28
29
30
31
32
33
34
35
36
open Stdune

type t =
  | Atom of Loc.t * Atom.t
  | Quoted_string of Loc.t * string
  | Template of Template.t
  | List of Loc.t * t list

let atom_or_quoted_string loc s =
  match T.atom_or_quoted_string s with
  | Atom a -> Atom (loc, a)
  | Quoted_string s -> Quoted_string (loc, s)
  | Template _
  | List _ ->
    assert false

let loc
    ( Atom (loc, _)
    | Quoted_string (loc, _)
    | List (loc, _)
    | Template { loc; _ } ) =
  loc

let rec remove_locs t : T.t =
  match t with
  | Template t -> Template (Template.remove_locs t)
  | Atom (_, s) -> Atom s
  | Quoted_string (_, s) -> Quoted_string s
  | List (_, l) -> List (List.map l ~f:remove_locs)

let rec add_loc (t : T.t) ~loc =
  match t with
  | Atom s -> Atom (loc, s)
  | Quoted_string s -> Quoted_string (loc, s)
  | List l -> List (loc, List.map l ~f:(add_loc ~loc))
  | Template t -> Template { t with loc }
OCaml

Innovation. Community. Security.