Module Liquidsoap_lang_ast.Parsed_term

The term the parser produces, before desugaring. This is what the formatter and the LSP consume.

include module type of struct include Runtime_term end
module Vars = Runtime_term.Vars

Sets of variables.

module Methods = Runtime_term.Methods
type custom = Runtime_term.custom
val hash_fold_custom : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> custom -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_custom : custom -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
type custom_handler = Runtime_term.custom_handler = {
  1. name : string;
  2. to_string : custom -> string;
  3. to_json : pos:Liquidsoap_lang_prelude.Pos.t list -> custom -> Liquidsoap_lang_data.Json.t;
  4. compare : custom -> custom -> int;
  5. typ : Liquidsoap_lang_types.Type.t;
}
val hash_fold_custom_handler : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> custom_handler -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_custom_handler : custom_handler -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
type custom_term = Runtime_term.custom_term = {
  1. value : custom;
  2. handler : custom_handler;
}
val hash_fold_custom_term : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> custom_term -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_custom_term : custom_term -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
type 'a term = 'a Runtime_term.term = {
  1. t : Liquidsoap_lang_types.Type.t;
  2. term : 'a;
  3. flags : Liquidsoap_lang_data.Flags.flags;
  4. methods : 'a term Methods.t;
}
val has_flag : 'a term -> Liquidsoap_lang_data.Flags.flag -> bool
type ('a, 'b) func_argument = ('a, 'b) Runtime_term.func_argument = {
  1. label : string;
  2. as_variable : string option;
  3. default : 'a option;
  4. typ : 'b;
  5. pos : Liquidsoap_lang_prelude.Pos.t option;
}
val hash_fold_func_argument : 'a 'b. (Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> 'a -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state) -> (Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> 'b -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state) -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> ('a, 'b) func_argument -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
type ('a, 'b) func = ('a, 'b) Runtime_term.func = {
  1. mutable free_vars : Vars.t option;
  2. name : string option;
  3. arguments : ('a, 'b) func_argument list;
  4. body : 'a;
}
type 'a app = 'a * (string * 'a) list
type ('a, 'b) cast = ('a, 'b) Runtime_term.cast = {
  1. cast : 'a;
  2. typ : 'b;
}
val hash_fold_cast : 'a 'b. (Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> 'a -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state) -> (Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> 'b -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state) -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> ('a, 'b) cast -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
type ('a, 'b) common_ast = [
  1. | `Custom of custom_term
  2. | `Tuple of 'a list
  3. | `Null
  4. | `Cast of ('a, 'b) cast
  5. | `Open of 'a * 'a
  6. | `Var of string
  7. | `Seq of 'a * 'a
]
val hash_fold_common_ast : 'a 'b. (Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> 'a -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state) -> (Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> 'b -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state) -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> ('a, 'b) common_ast -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
type 'a let_t = 'a Runtime_term.let_t = {
  1. doc : Liquidsoap_lang_data.Doc.Value.t option;
  2. replace : bool;
  3. pat : [ `PVar of string list | `PTuple of string list ];
  4. mutable gen : Liquidsoap_lang_types.Type.var list;
  5. def : 'a;
  6. body : 'a;
}
type cached_env = Runtime_term.cached_env = {
  1. var_name : int;
  2. var_id : int;
  3. env : Liquidsoap_lang_types.Typing.env;
}
type 'a runtime_ast = [
  1. | `Int of int
  2. | `Cache_env of cached_env Stdlib.ref
  3. | `Float of float
  4. | `String of string
  5. | `Bool of bool
  6. | `Let of 'a let_t
  7. | `List of 'a list
  8. | `App of 'a * (string * 'a) list
  9. | `Invoke of 'a Runtime_term.invoke
  10. | `Hide of 'a * string list
  11. | `Encoder of string * 'a {encoder_params}2/shadowed/(62ebb5badd19bad411468f202cbb56aa)
  12. | `Fun of ('a, Liquidsoap_lang_types.Type.t) func
]
module Custom = Term.Custom
type comment = [
  1. | `Before of string list
  2. | `After of string list
]
type pos = Term.parsed_pos
type term_annotation = [
  1. | `Deprecated of string
  2. | `Implicit
]
type string_param = [
  1. | `Verbatim of string
  2. | `String of pos * (char * string)
]
val hash_fold_string_param : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> string_param -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_string_param : string_param -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
type track_annotation = string * string_param
val hash_fold_track_annotation : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> track_annotation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_track_annotation : track_annotation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
type inc_type = [
  1. | `Lib
  2. | `Extra
  3. | `Default
]
val hash_fold_inc_type : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> inc_type -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_inc_type : inc_type -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
type inc = {
  1. inc_type : inc_type;
  2. inc_name : string;
  3. inc_pos : pos;
}
val hash_fold_inc : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> inc -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_inc : inc -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
type pattern = {
  1. pat_pos : pos;
  2. pat_entry : pattern_entry;
}
and pattern_entry = [
  1. | `PVar of string list
    (*

    a field

    *)
  2. | `PTuple of pattern list
    (*

    a tuple

    *)
  3. | `PList of pattern list * (pos * string) option * pattern list
    (*

    a list

    *)
  4. | `PMeth of pattern option * (string * meth_term_default) list
    (*

    a value with methods

    *)
]
and meth_term_default = [
  1. | `Nullable
  2. | `Pattern of pattern
  3. | `None
]
val hash_fold_pattern : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> pattern -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_pattern_entry : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> pattern_entry -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_meth_term_default : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> meth_term_default -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_pattern : pattern -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_pattern_entry : pattern_entry -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_meth_term_default : meth_term_default -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
type _of = {
  1. only : string list;
  2. except : string list;
  3. source : string;
}
val hash_fold__of : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> _of -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash__of : _of -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
type _if = {
  1. if_condition : t;
  2. if_then_block : block;
  3. if_elsif : if_elsif list;
  4. if_else_block : block option;
  5. if_end_pos : pos;
}
and block = {
  1. block_body : statement list;
  2. block_pos : pos;
}
and statement = {
  1. stmt : statement_ast;
  2. stmt_pos : pos;
  3. mutable stmt_comments : (pos * comment) list;
}
and statement_ast = [
  1. | `Expr of t
  2. | `Binding of _let
  3. | `Open of t
  4. | `Include of inc
]
and static_cond = [
  1. | `Defined of bool * string
  2. | `Version of [ `Eq | `Geq | `Leq | `Gt | `Lt ] * Liquidsoap_lang_prelude.Lang_string.Version.t
  3. | `Encoder of bool * string
]
and static_if = {
  1. static_cond : static_cond;
  2. static_then : block;
  3. static_else : block option;
}
and if_elsif = {
  1. elsif_condition : t;
  2. elsif_then_block : block;
  3. elsif_pos : pos;
}
and _while = {
  1. while_condition : t;
  2. while_do_block : block;
}
and _for = {
  1. for_variable : string;
  2. for_from : t;
  3. for_to : t;
  4. for_do_block : block;
}
and iterable_for = {
  1. iterable_for_variable : string;
  2. iterable_for_iterator : t;
  3. iterable_for_do_block : block;
}
and _try_handler = {
  1. try_handler_variable : string;
  2. try_handler_errors_list : t option;
  3. try_handler_block : block;
  4. try_handler_pos : pos;
}
and _try = {
  1. try_body_block : block;
  2. try_handler : _try_handler option;
  3. try_finally_block : block option;
}
and let_decoration = [
  1. | `None
  2. | `Recursive
  3. | `Replaces
  4. | `Eval
  5. | `Sqlite_query
  6. | `Sqlite_row
  7. | `Yaml_parse
  8. | `Xml_parse
  9. | `Json_parse of (string * t) list
]
and binding_kind = [
  1. | `Bare
  2. | `Let
  3. | `Def
]
and _let = {
  1. kind : binding_kind;
  2. decoration : let_decoration;
  3. pat : pattern;
  4. arglist : fun_arg list option;
  5. cast : type_annotation option;
  6. def : t;
}
and invoke = {
  1. invoked : t;
  2. optional : bool;
  3. meth : invoke_meth;
}
and invoke_meth = [
  1. | `String of string
  2. | `App of string * app_arg list
]
and app_arg = [
  1. | `Term of string * t
  2. | `Argsof of _of
]
and parsed_func_argument = {
  1. label : string;
  2. as_variable : pattern option;
  3. default : t option;
  4. typ : type_annotation option;
  5. pos : pos;
  6. annotations : term_annotation list;
}
and fun_arg = [
  1. | `Term of parsed_func_argument
  2. | `Argsof of _of
]
and list_el = [
  1. | `Term of t
  2. | `Ellipsis of t
]
and time_el = {
  1. week : int option;
  2. hours : int option;
  3. minutes : int option;
  4. seconds : int option;
}
and meth_annotation = {
  1. optional_meth : bool;
  2. name : string;
  3. typ : type_annotation;
  4. json_name : string option;
}
and source_track_annotation = {
  1. track_name : string;
  2. track_type : string;
  3. track_params : track_annotation list;
}
and source_annotation = [
  1. | `Abstract
  2. | `Tracks of source_tracks
]
and source_tracks = {
  1. extensible : bool;
  2. tracks : source_track_annotation list;
}
and argument = bool * string * type_annotation
and type_annotation = [
  1. | `Named of string
  2. | `Nullable of type_annotation
  3. | `List of type_annotation
  4. | `Ref of type_annotation
  5. | `Json_object of type_annotation
  6. | `Tuple of type_annotation list
  7. | `Arrow of argument list * type_annotation
  8. | `Record of meth_annotation list
  9. | `Method of type_annotation * meth_annotation list
  10. | `Invoke of type_annotation * string
  11. | `Source of string * source_annotation
  12. | `Getter of type_annotation
]
and parsed_ast = [
  1. | `If of _if
  2. | `Inline_if of _if
  3. | `Static_if of static_if
  4. | `While of _while
  5. | `For of _for
  6. | `Iterable_for of iterable_for
  7. | `List of list_el list
  8. | `Try of _try
  9. | `Regexp of string * char list
  10. | `Time_interval of time_el * time_el
  11. | `Time of time_el
  12. | `App of t * app_arg list
  13. | `Invoke of invoke
  14. | `Fun of fun_arg list * t
  15. | `RFun of string * fun_arg list * t
  16. | `Not of t
  17. | `Get of t
  18. | `Set of t * t
  19. | `Methods of t option * methods list
  20. | `Negative of t
  21. | `Append of t * t
  22. | `Assoc of t * t
  23. | `Infix of t * string * t
  24. | `BoolOp of string * t list
  25. | `Coalesce of t * t
  26. | `At of t * t
  27. | `Simple_fun of block
  28. | `String_interpolation of char * string_interpolation list
  29. | `Int of string
  30. | `Bool of bool
  31. | `Float of string
  32. | `String of char * string
  33. | `Raw_string of string * string
  34. | `Block of block
  35. | `Parenthesis of t
  36. | `Encoder of encoder
  37. | (t, type_annotation) common_ast
]
and t = {
  1. term : parsed_ast;
  2. pos : pos;
  3. mutable comments : (pos * comment) list;
  4. annotations : term_annotation list;
}
and methods = [
  1. | `Ellipsis of t
  2. | `Method of string * t
]
and string_interpolation = [
  1. | `String of string
  2. | `Term of t
]
and encoder_params = [ `Anonymous of string_param | `Encoder of encoder | `Labelled of string_param * t ] list
and encoder = string * encoder_params
val hash_fold__if : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> _if -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_block : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> block -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_statement : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> statement -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_statement_ast : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> statement_ast -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_static_cond : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> static_cond -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_static_if : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> static_if -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_if_elsif : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> if_elsif -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold__while : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> _while -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold__for : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> _for -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_iterable_for : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> iterable_for -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold__try_handler : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> _try_handler -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold__try : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> _try -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_let_decoration : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> let_decoration -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_binding_kind : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> binding_kind -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold__let : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> _let -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_invoke : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> invoke -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_invoke_meth : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> invoke_meth -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_app_arg : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> app_arg -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_parsed_func_argument : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> parsed_func_argument -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_fun_arg : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> fun_arg -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_list_el : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> list_el -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_time_el : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> time_el -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_meth_annotation : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> meth_annotation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_source_track_annotation : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> source_track_annotation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_source_annotation : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> source_annotation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_source_tracks : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> source_tracks -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_argument : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> argument -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_type_annotation : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> type_annotation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_parsed_ast : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> parsed_ast -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_t : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> t -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_methods : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> methods -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_string_interpolation : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> string_interpolation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_encoder_params : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> encoder_params -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash_fold_encoder : Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state -> encoder -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.state
val hash__if : _if -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_block : block -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_statement : statement -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_statement_ast : statement_ast -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_static_cond : static_cond -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_static_if : static_if -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_if_elsif : if_elsif -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash__while : _while -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash__for : _for -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_iterable_for : iterable_for -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash__try_handler : _try_handler -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash__try : _try -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_let_decoration : let_decoration -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_binding_kind : binding_kind -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash__let : _let -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_invoke : invoke -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_invoke_meth : invoke_meth -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_app_arg : app_arg -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_parsed_func_argument : parsed_func_argument -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_fun_arg : fun_arg -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_list_el : list_el -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_time_el : time_el -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_meth_annotation : meth_annotation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_source_track_annotation : source_track_annotation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_source_annotation : source_annotation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_source_tracks : source_tracks -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_argument : argument -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_type_annotation : type_annotation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_parsed_ast : parsed_ast -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash : t -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_methods : methods -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_string_interpolation : string_interpolation -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_encoder_params : encoder_params -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val hash_encoder : encoder -> Liquidsoap_lang_prelude.Term_hash.Ppx_hash_lib.Std.Hash.hash_value
val unit : [> `Tuple of 'a list ]
val make : ?comments:??? -> ?annotations:??? -> pos:pos -> parsed_ast -> t
val map_children : ?block:??? -> (t -> t) -> [< `App of t * [ `Argsof of _of | `Term of string * t ] list | `Append of t * t | `Assoc of t * t | `At of t * t | `Block of block | `Bool of 'a | `BoolOp of 'b * t list | `Cast of (t, 'c) cast | `Coalesce of t * t | `Custom of 'd | `Encoder of ('f * [< `Anonymous of 'g | `Encoder of 'e | `Labelled of 'h * t ] list) as 'e | `Float of 'i | `For of _for | `Fun of ([< `Argsof of 'k | `Term of parsed_func_argument ] as 'j) list * t | `Get of t | `If of _if | `Infix of t * 'l * t | `Inline_if of _if | `Int of 'm | `Invoke of invoke | `Iterable_for of iterable_for | `List of [< `Ellipsis of t | `Term of t ] list | `Methods of t option * [< `Ellipsis of t | `Method of 'n * t ] list | `Negative of t | `Not of t | `Null | `Open of t * t | `Parenthesis of t | `RFun of 'o * 'p list * t | `Raw_string of 'q | `Regexp of 'r | `Seq of t * t | `Set of t * t | `Simple_fun of block | `Static_if of static_if | `String of 's | `String_interpolation of 't * [< `String of 'u | `Term of t ] list | `Time of 'v | `Time_interval of 'w | `Try of _try | `Tuple of t list | `Var of 'x | `While of _while ] -> [> `App of t * [> `Argsof of _of | `Term of string * t ] list | `Append of t * t | `Assoc of t * t | `At of t * t | `Block of block | `Bool of 'a | `BoolOp of 'b * t list | `Cast of (t, 'c) cast | `Coalesce of t * t | `Custom of 'd | `Encoder of ('f * [> `Anonymous of 'g | `Encoder of 'y | `Labelled of 'h * t ] list) as 'y | `Float of 'i | `For of _for | `Fun of [> `Argsof of 'k | `Term of parsed_func_argument ] list * t | `Get of t | `If of _if | `Infix of t * 'l * t | `Inline_if of _if | `Int of 'm | `Invoke of invoke | `Iterable_for of iterable_for | `List of [> `Ellipsis of t | `Term of t ] list | `Methods of t option * [> `Ellipsis of t | `Method of 'n * t ] list | `Negative of t | `Not of t | `Null | `Open of t * t | `Parenthesis of t | `RFun of 'o * [> `Argsof of 'k | `Term of parsed_func_argument ] list * t | `Raw_string of 'q | `Regexp of 'r | `Seq of t * t | `Set of t * t | `Simple_fun of block | `Static_if of static_if | `String of 's | `String_interpolation of 't * [> `String of 'u | `Term of t ] list | `Time of 'v | `Time_interval of 'w | `Try of _try | `Tuple of t list | `Var of 'x | `While of _while ]

map_children fn ast applies fn to every direct child term of ast, and map_block / map_statement do the same for blocks and statements.

Children are visited in source order, using explicit let bindings rather than record literals: OCaml leaves record field evaluation order unspecified, and iter_term below relies on the order to break ties when attaching a comment to the closest of two equally distant terms.

These are the one place that knows the shape of parsed_ast; iter_term and Term_preprocessor.expand_term are both written on top of them.

?block overrides how blocks are rebuilt. `%include` expansion needs it: splicing turns one statement into several, which map_statement alone cannot express.

val map_block : ?block:??? -> (t -> t) -> block -> block
val map_static_if : ?block:??? -> (t -> t) -> static_if -> static_if
val map_let : (t -> t) -> _let -> _let
val map_statement : ?block:??? -> (t -> t) -> statement -> statement
val iter_anchors : (pos -> [> `Statement | `Term ] -> (((pos * comment) list -> (pos * comment) list) -> unit) -> 'a) -> t -> unit

Visit every node a comment can be attached to: terms and statements. fn receives the node's position, whether it is a statement, and a function that updates its comment list. A binding is a statement, so its doc comment has no term to land on. Nodes are visited outermost first.

val iter_term : (t -> 'a) -> t -> unit
val iter_block : (t -> 'a) -> block -> unit

Visit every term in b, including those inside its statements.