(** WARNING: this file is partially auto-generated. Do not edit `GAst.ml`
    by hand. Edit `GAst.template.ml` instead, or improve the code
    generation tool so avoid the need for hand-writing things.

    `GAst.template.ml` contains the manual definitions and some `(*
    __REPLACEn__ *)` comments. These comments are replaced by auto-generated
    definitions by running `make generate-ml` in the crate root. The
    code-generation code is in `charon/src/bin/generate-ml`.
 *)

open Generated_Types
open Generated_Meta
open Generated_Expressions

module FunDeclId = Expressions.FunDeclId
module GlobalDeclId = Expressions.GlobalDeclId
module TraitDeclId = Types.TraitDeclId
module TraitImplId = Types.TraitImplId
module TraitClauseId = Types.TraitClauseId

(* Imports *)
type builtin_fun_id = Types.builtin_fun_id [@@deriving show, ord]
type fun_id = Types.fun_id [@@deriving show, ord]
type fn_ptr_kind = Types.fn_ptr_kind [@@deriving show, ord]
type fun_decl_id = Types.fun_decl_id [@@deriving show, ord]

(* __REPLACE0__ *)

(* __REPLACE1__ *)

class ['self] iter_trait_decl_base =
  object (self : 'self)
    inherit [_] iter_global_decl
    method visit_trait_method_id_map
        : 'a. ('env -> 'a -> unit) -> 'env -> 'a trait_method_id_map -> unit =
      TraitMethodId.Map.visit_iter
  end

class ['self] map_trait_decl_base =
  object (self : 'self)
    inherit [_] map_global_decl
    method visit_trait_method_id_map
        : 'a 'b. ('env -> 'a -> 'b) -> 'env -> 'a trait_method_id_map -> 'b trait_method_id_map =
      TraitMethodId.Map.visit_map
  end

(* __REPLACE2__ *)

(* __REPLACE3__ *)
