sig
  type loc = unit
  type unop =
      Jdelete
    | Jvoid
    | Jtypeof
    | Jadd2_pre
    | Jsub2_pre
    | Jadd_pre
    | Jsub_pre
    | Jtilde
    | Jnot
    | Jadd2_post
    | Jsub2_post
  and binop =
      Jhashref
    | Jmul
    | Jdiv
    | Jmod
    | Jadd
    | Jsub
    | Jlt
    | Jgt
    | Jleq
    | Jgeq
    | Jlsr
    | Jlsl
    | Jasr
    | Jeq
    | Jneq
    | Jinstanceof
    | Jseq
    | Jsneq
    | Jland
    | Jlor
    | Jand
    | Jxor
    | Jor
    | Jcomma
    | Jassign
    | Jmul_assign
    | Jdiv_assign
    | Jmod_assign
    | Jadd_assign
    | Jsub_assign
    | Jlsl_assign
    | Jlsr_assign
    | Jasr_assign
    | Jand_assign
    | Jxor_assign
    | Jor_assign
  and exp =
      Jthis of Ocamljs.Inline.Jslib_ast.loc
    | Jvar of Ocamljs.Inline.Jslib_ast.loc * string
    | Jarray of Ocamljs.Inline.Jslib_ast.loc * Ocamljs.Inline.Jslib_ast.exp
    | Jobject of Ocamljs.Inline.Jslib_ast.loc *
        (Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.exp) list
    | Jstring of Ocamljs.Inline.Jslib_ast.loc * string * bool
    | Jnum of Ocamljs.Inline.Jslib_ast.loc * string
    | Jnull of Ocamljs.Inline.Jslib_ast.loc
    | Jbool of Ocamljs.Inline.Jslib_ast.loc * bool
    | Jregexp of Ocamljs.Inline.Jslib_ast.loc * string * string
    | Jfun of Ocamljs.Inline.Jslib_ast.loc * string option * string list *
        Ocamljs.Inline.Jslib_ast.stmt
    | Jfieldref of Ocamljs.Inline.Jslib_ast.loc *
        Ocamljs.Inline.Jslib_ast.exp * string
    | Junop of Ocamljs.Inline.Jslib_ast.loc * Ocamljs.Inline.Jslib_ast.unop *
        Ocamljs.Inline.Jslib_ast.exp
    | Jbinop of Ocamljs.Inline.Jslib_ast.loc *
        Ocamljs.Inline.Jslib_ast.binop * Ocamljs.Inline.Jslib_ast.exp *
        Ocamljs.Inline.Jslib_ast.exp
    | Jite of Ocamljs.Inline.Jslib_ast.loc * Ocamljs.Inline.Jslib_ast.exp *
        Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.exp
    | Jcall of Ocamljs.Inline.Jslib_ast.loc * Ocamljs.Inline.Jslib_ast.exp *
        Ocamljs.Inline.Jslib_ast.exp
    | Jnew of Ocamljs.Inline.Jslib_ast.loc * Ocamljs.Inline.Jslib_ast.exp *
        Ocamljs.Inline.Jslib_ast.exp option
    | Jexp_nil of Ocamljs.Inline.Jslib_ast.loc
    | Jexp_cons of Ocamljs.Inline.Jslib_ast.loc *
        Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.exp
    | Jexp_Ant of Ocamljs.Inline.Jslib_ast.loc * string
  and stmt =
      Jvars of Ocamljs.Inline.Jslib_ast.loc *
        (string * Ocamljs.Inline.Jslib_ast.exp option) list
    | Jfuns of Ocamljs.Inline.Jslib_ast.loc * string * string list *
        Ocamljs.Inline.Jslib_ast.stmt
    | Jreturn of Ocamljs.Inline.Jslib_ast.loc *
        Ocamljs.Inline.Jslib_ast.exp option
    | Jcontinue of Ocamljs.Inline.Jslib_ast.loc * string option
    | Jbreak of Ocamljs.Inline.Jslib_ast.loc * string option
    | Jswitch of Ocamljs.Inline.Jslib_ast.loc *
        Ocamljs.Inline.Jslib_ast.exp *
        (Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.stmt) list *
        Ocamljs.Inline.Jslib_ast.stmt
    | Jites of Ocamljs.Inline.Jslib_ast.loc * Ocamljs.Inline.Jslib_ast.exp *
        Ocamljs.Inline.Jslib_ast.stmt * Ocamljs.Inline.Jslib_ast.stmt option
    | Jthrow of Ocamljs.Inline.Jslib_ast.loc * Ocamljs.Inline.Jslib_ast.exp
    | Jexps of Ocamljs.Inline.Jslib_ast.loc * Ocamljs.Inline.Jslib_ast.exp
    | Jtrycatch of Ocamljs.Inline.Jslib_ast.loc *
        Ocamljs.Inline.Jslib_ast.stmt *
        (string * Ocamljs.Inline.Jslib_ast.stmt) option *
        Ocamljs.Inline.Jslib_ast.stmt
    | Jfor of Ocamljs.Inline.Jslib_ast.loc *
        (string * Ocamljs.Inline.Jslib_ast.exp option) list *
        Ocamljs.Inline.Jslib_ast.exp option *
        Ocamljs.Inline.Jslib_ast.exp option *
        Ocamljs.Inline.Jslib_ast.exp option * Ocamljs.Inline.Jslib_ast.stmt
    | Jdowhile of Ocamljs.Inline.Jslib_ast.loc *
        Ocamljs.Inline.Jslib_ast.stmt * Ocamljs.Inline.Jslib_ast.exp
    | Jwhile of Ocamljs.Inline.Jslib_ast.loc * Ocamljs.Inline.Jslib_ast.exp *
        Ocamljs.Inline.Jslib_ast.stmt
    | Jblock of Ocamljs.Inline.Jslib_ast.loc * Ocamljs.Inline.Jslib_ast.stmt
    | Jwith of Ocamljs.Inline.Jslib_ast.loc * Ocamljs.Inline.Jslib_ast.exp *
        Ocamljs.Inline.Jslib_ast.stmt
    | Jlabel of Ocamljs.Inline.Jslib_ast.loc * string *
        Ocamljs.Inline.Jslib_ast.stmt
    | Jstmt_nil of Ocamljs.Inline.Jslib_ast.loc
    | Jstmt_cons of Ocamljs.Inline.Jslib_ast.loc *
        Ocamljs.Inline.Jslib_ast.stmt * Ocamljs.Inline.Jslib_ast.stmt
    | Jstmt_Ant of Ocamljs.Inline.Jslib_ast.loc * string
end