logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Builtin_attributes - Support for the builtin attributes:

Documentation

       Module Builtin_attributes
        : sigend

       Support for the builtin attributes:

       -ocaml.alert

       -ocaml.boxed

       -ocaml.deprecated

       -ocaml.deprecated_mutable

       -ocaml.explicit_arity

       -ocaml.immediate

       -ocaml.immediate64

       -ocaml.inline

       -ocaml.inlined

       -ocaml.noalloc

       -ocaml.poll

       -ocaml.ppwarning

       -ocaml.specialise

       -ocaml.specialised

       -ocaml.tailcall

       -ocaml.tail_mod_cons

       -ocaml.unboxed

       -ocaml.untagged

       -ocaml.unrolled

       -ocaml.warnerror

       -ocaml.warning

       -ocaml.warn_on_literal_pattern

       Warning: this module is unstable and part of Compiler_libs .

   Attributetrackingforwarning53typecurrent_phase =
        | Parser
        | Invariant_check

       register_attr must be called on the locations of all attributes that should be tracked for the purpose of
       misplaced  attribute  warnings.  In particular, it should be called on all attributes that are present in
       the source program except those that are contained in the payload of another attribute (because these may
       be left behind by a ppx and intentionally ignored by the compiler).

       The current_phase argument indicates when this function is being called

       -either when an attribute is created in the parser or when we see an attribute while running the check in
       the Ast_invariants module.  This is used to ensure that we track only attributes from the  final  version
       of  the  parse  tree:  we  skip adding attributes seen at parse time if we can see that a ppx will be run
       later, because the Ast_invariants check is always run on the result of a ppx.

       Note that the Ast_invariants check is also run on parse trees created from marshalled ast files if no ppx
       is being used, ensuring we don't miss attributes in that case.

       valregister_attr : current_phase->stringLocation.loc->unitvalmark_payload_attrs_used : Parsetree.payload->unit

       Marks the attributes hiding in the payload of another attribute  used,  for  the  purposes  of  misplaced
       attribute  warnings  (see  comment on current_phase above).  In the parser, it's simplest to add these to
       the table and remove them later, rather than  threading  through  state  tracking  whether  we're  in  an
       attribute payload.

       valwarn_unused : unit->unit

       Issue  misplaced  attribute warnings for all attributes created with mk_internal but not yet marked used.
       Does nothing if compilation is stopped before lambda due to command-line flags.

   Warning53helpersforenvironmentattributes
       Some attributes, like deprecation markers, do not affect the compilation of the definition on which  they
       appear,  but  rather result in warnings on future uses of that definition.  This is implemented by moving
       the raw attributes into the environment, where they will be noticed on future accesses.

       To make misplaced attribute warnings work appropriately for these attributes, we mark  them  "used"  when
       they are moved into the environment.  This is done with the helper functions in this section.

       valmark_alert_used : Parsetree.attribute->unit

       Marks  the  attribute used for the purposes of misplaced attribute warnings if it is an alert.  Call this
       when moving things allowed to have alert attributes into the environment.

       valmark_alerts_used : Parsetree.attributes->unit

       The same as List.itermark_alert_used .

       valmark_warn_on_literal_pattern_used : Parsetree.attributes->unit

       Marks "warn_on_literal_pattern" attributes used for the purposes of misplaced attribute  warnings.   Call
       this when moving constructors into the environment.

       valmark_deprecated_mutable_used : Parsetree.attributes->unit

       Marks  "deprecated_mutable"  attributes used for the purposes of misplaced attribute warnings.  Call this
       when moving labels of mutable fields into the environment.

   Helpersforalertandwarningattributesvalcheck_alerts : Location.t->Parsetree.attributes->string->unitvalcheck_alerts_inclusion : def:Location.t->use:Location.t->Location.t->Parsetree.attributes->Parsetree.attributes->string->unitvalalerts_of_attrs : Parsetree.attributes->Misc.alertsvalalerts_of_sig : mark:bool->Parsetree.signature->Misc.alertsvalalerts_of_str : mark:bool->Parsetree.structure->Misc.alertsvalcheck_deprecated_mutable : Location.t->Parsetree.attributes->string->unitvalcheck_deprecated_mutable_inclusion   :   def:Location.t->use:Location.t->Location.t->Parsetree.attributes->Parsetree.attributes->string->unitvalerror_of_extension : Parsetree.extension->Location.errorvalwarning_attribute : ?ppwarning:bool->Parsetree.attribute->unit

       Apply warning settings from the specified  attribute.   "ocaml.warning"/"ocaml.warnerror"  (and  variants
       without the prefix) are processed and marked used for warning 53.  Other attributes are ignored.

       Also implement ocaml.ppwarning (unless ~ppwarning:false is passed).

       valwarning_scope : ?ppwarning:bool->Parsetree.attributes->(unit->'a)->'a

       Execute  a  function  in  a  new  scope  for warning settings.  This means that the effect of any call to
       warning_attribute during the execution of this function will be discarded after execution.

       The function also takes a list of attributes which are processed  with  warning_attribute  in  the  fresh
       scope before the function is executed.

   Helpersforsearchingforparticularattributesvalhas_attribute : string->Parsetree.attributes->boolhas_attributenameattrs is true if an attribute with name name or "ocaml."^name is present in attrs .
       It marks that attribute used for the purposes of misplaced attribute warnings.

       typeattr_action =
        | Mark_used_only
        | Return

       select_attributesactionsattrs finds the elements of attrs that appear in  actions  and  either  returns
       them or just marks them used, according to the corresponding attr_action .

       Each  element  (nm,action) of the actions list is an attribute along with an attr_action specifying what
       to do with that attribute.  The action is used to accommodate different compiler configurations.   If  an
       attribute is used only in some compiler configurations, it's important that we still look for it and mark
       it used when compiling with other configurations.  Otherwise, we would issue spurious misplaced attribute
       warnings.

       valselect_attributes : (string*attr_action)list->Parsetree.attributes->Parsetree.attributesvalattr_equals_builtin : Parsetree.attribute->string->boolattr_equals_builtinattrs  is true if the name of the attribute is s or "ocaml."^s .  This is useful
       for manually inspecting attribute names, but note that doing so will not result in marking the  attribute
       used for the purpose of warning 53, so it is usually preferable to use has_attribute or select_attributes
       .

       valwarn_on_literal_pattern : Parsetree.attributes->boolvalexplicit_arity : Parsetree.attributes->boolvalimmediate : Parsetree.attributes->boolvalimmediate64 : Parsetree.attributes->boolvalhas_unboxed : Parsetree.attributes->boolvalhas_boxed : Parsetree.attributes->bool

OCamldoc                                           2025-06-12                             Builtin_attributes(3o)

Module

       Module   Builtin_attributes

Name

       Builtin_attributes - Support for the builtin attributes:

See Also