summaryrefslogtreecommitdiff
path: root/ast_convenience_411.mli
diff options
context:
space:
mode:
Diffstat (limited to 'ast_convenience_411.mli')
-rw-r--r--ast_convenience_411.mli112
1 files changed, 112 insertions, 0 deletions
diff --git a/ast_convenience_411.mli b/ast_convenience_411.mli
new file mode 100644
index 0000000..ec55e6b
--- /dev/null
+++ b/ast_convenience_411.mli
@@ -0,0 +1,112 @@
+open Migrate_parsetree.Ast_411
+
+(* This file is part of the ppx_tools package. It is released *)
+(* under the terms of the MIT license (see LICENSE file). *)
+(* Copyright 2013 Alain Frisch and LexiFi *)
+
+(** {1 Convenience functions to help build and deconstruct AST fragments.} *)
+
+open Asttypes
+open Ast_helper
+open Parsetree
+
+(** {2 Compatibility modules} *)
+
+module Label : sig
+ type t = Asttypes.arg_label
+
+ type desc = Asttypes.arg_label =
+ Nolabel
+ | Labelled of string
+ | Optional of string
+
+ val explode : t -> desc
+
+ val nolabel : t
+ val labelled : string -> t
+ val optional : string -> t
+
+end
+
+(** {2 Provides a unified abstraction over differences in Parsetree.constant and Asttypes.constant
+ * types defined in ocaml 4.03 and 4.02 respectively}*)
+module Constant : sig
+ type t = Parsetree.constant =
+ Pconst_integer of string * char option
+ | Pconst_char of char
+ | Pconst_string of string * Location.t * string option
+ | Pconst_float of string * char option
+
+ (** Convert Asttypes.constant to Constant.t *)
+ val of_constant : Parsetree.constant -> t
+
+ (** Convert Constant.t to Asttypes.constant *)
+ val to_constant : t -> Parsetree.constant
+
+end
+
+(** {2 Misc} *)
+
+val lid: ?loc:loc -> string -> lid
+
+(** {2 Expressions} *)
+
+val evar: ?loc:loc -> ?attrs:attrs -> string -> expression
+val let_in: ?loc:loc -> ?attrs:attrs -> ?recursive:bool -> value_binding list -> expression -> expression
+
+val constr: ?loc:loc -> ?attrs:attrs -> string -> expression list -> expression
+val record: ?loc:loc -> ?attrs:attrs -> ?over:expression -> (string * expression) list -> expression
+val tuple: ?loc:loc -> ?attrs:attrs -> expression list -> expression
+
+val nil: ?loc:loc -> ?attrs:attrs -> unit -> expression
+val cons: ?loc:loc -> ?attrs:attrs -> expression -> expression -> expression
+val list: ?loc:loc -> ?attrs:attrs -> expression list -> expression
+
+val unit: ?loc:loc -> ?attrs:attrs -> unit -> expression
+
+val func: ?loc:loc -> ?attrs:attrs -> (pattern * expression) list -> expression
+val lam: ?loc:loc -> ?attrs:attrs -> ?label:Label.t -> ?default:expression -> pattern -> expression -> expression
+val app: ?loc:loc -> ?attrs:attrs -> expression -> expression list -> expression
+
+val str: ?loc:loc -> ?attrs:attrs -> string -> expression
+val int: ?loc:loc -> ?attrs:attrs -> int -> expression
+val int32: ?loc:loc -> ?attrs:attrs -> int32 -> expression
+val int64: ?loc:loc -> ?attrs:attrs -> int64 -> expression
+val char: ?loc:loc -> ?attrs:attrs -> char -> expression
+val float: ?loc:loc -> ?attrs:attrs -> float -> expression
+
+val sequence: ?loc:loc -> ?attrs:attrs -> expression list -> expression
+(** Return [()] if the list is empty. Tail rec. *)
+
+(** {2 Patterns} *)
+
+val pvar: ?loc:loc -> ?attrs:attrs -> string -> pattern
+val pconstr: ?loc:loc -> ?attrs:attrs -> string -> pattern list -> pattern
+val precord: ?loc:loc -> ?attrs:attrs -> ?closed:closed_flag -> (string * pattern) list -> pattern
+val ptuple: ?loc:loc -> ?attrs:attrs -> pattern list -> pattern
+
+val pnil: ?loc:loc -> ?attrs:attrs -> unit -> pattern
+val pcons: ?loc:loc -> ?attrs:attrs -> pattern -> pattern -> pattern
+val plist: ?loc:loc -> ?attrs:attrs -> pattern list -> pattern
+
+val pstr: ?loc:loc -> ?attrs:attrs -> string -> pattern
+val pint: ?loc:loc -> ?attrs:attrs -> int -> pattern
+val pchar: ?loc:loc -> ?attrs:attrs -> char -> pattern
+val pfloat: ?loc:loc -> ?attrs:attrs -> float -> pattern
+
+val punit: ?loc:loc -> ?attrs:attrs -> unit -> pattern
+
+
+(** {2 Types} *)
+
+val tconstr: ?loc:loc -> ?attrs:attrs -> string -> core_type list -> core_type
+
+(** {2 AST deconstruction} *)
+
+val get_str: expression -> string option
+val get_str_with_quotation_delimiter: expression -> (string * string option) option
+val get_lid: expression -> string option
+
+val has_attr: string -> attributes -> bool
+val find_attr: string -> attributes -> payload option
+val find_attr_expr: string -> attributes -> expression option