sig
  type current_phase = Parser | Invariant_check
  val register_attr :
    Builtin_attributes.current_phase -> string Location.loc -> unit
  val mark_payload_attrs_used : Parsetree.payload -> unit
  val warn_unused : unit -> unit
  val mark_alert_used : Parsetree.attribute -> unit
  val mark_alerts_used : Parsetree.attributes -> unit
  val mark_warn_on_literal_pattern_used : Parsetree.attributes -> unit
  val mark_deprecated_mutable_used : Parsetree.attributes -> unit
  val check_alerts : Location.t -> Parsetree.attributes -> string -> unit
  val check_alerts_inclusion :
    def:Location.t ->
    use:Location.t ->
    Location.t ->
    Parsetree.attributes -> Parsetree.attributes -> string -> unit
  val alerts_of_attrs : Parsetree.attributes -> Misc.alerts
  val alerts_of_sig : Parsetree.signature -> Misc.alerts
  val alerts_of_str : Parsetree.structure -> Misc.alerts
  val check_deprecated_mutable :
    Location.t -> Parsetree.attributes -> string -> unit
  val check_deprecated_mutable_inclusion :
    def:Location.t ->
    use:Location.t ->
    Location.t ->
    Parsetree.attributes -> Parsetree.attributes -> string -> unit
  val error_of_extension : Parsetree.extension -> Location.error
  val warning_attribute : ?ppwarning:bool -> Parsetree.attribute -> unit
  val warning_scope :
    ?ppwarning:bool -> Parsetree.attributes -> (unit -> 'a) -> 'a
  val has_attribute : string -> Parsetree.attributes -> bool
  type attr_action = Mark_used_only | Return
  val select_attributes :
    (string * Builtin_attributes.attr_action) list ->
    Parsetree.attributes -> Parsetree.attributes
  val attr_equals_builtin : Parsetree.attribute -> string -> bool
  val warn_on_literal_pattern : Parsetree.attributes -> bool
  val explicit_arity : Parsetree.attributes -> bool
  val immediate : Parsetree.attributes -> bool
  val immediate64 : Parsetree.attributes -> bool
  val has_unboxed : Parsetree.attributes -> bool
  val has_boxed : Parsetree.attributes -> bool
end