Quick StartTryGuideAPICommunityBlogGitHub

Standard Library

Below is the API for the OCaml standard library. It's directly copied over from the OCaml Manual, formatted to the Reason syntax and styled accordingly. The API docs are work-in-progress; we'll be polishing these gradually!

If you're targeting JavaScript, the API docs for BuckleScript includes all of below, plus JS-specific APIs.

Module Docstrings

module Docstrings: sig .. end
(Re)Initialise all docstring state

let init: unit => unit;
let warn_bad_docstrings: unit => unit;
Emit warnings for unattached and ambiguous docstrings

Docstrings


type docstring;
Documentation comments
let docstring: (string, Location.t) => docstring;
Create a docstring
let docstring_body: docstring => string;
Get the text of a docstring
let docstring_loc: docstring => Location.t;
Get the location of a docstring

Set functions

These functions are used by the lexer to associate docstrings to the locations of tokens.

let set_pre_docstrings: (Lexing.position, list(docstring)) => unit;
Docstrings immediately preceding a token
let set_post_docstrings: (Lexing.position, list(docstring)) => unit;
Docstrings immediately following a token
let set_floating_docstrings: (Lexing.position, list(docstring)) => unit;
Docstrings not immediately adjacent to a token
let set_pre_extra_docstrings: (Lexing.position, list(docstring)) => unit;
Docstrings immediately following the token which precedes this one
let set_post_extra_docstrings: (Lexing.position, list(docstring)) => unit;
Docstrings immediately preceding the token which follows this one

Items

The Docstrings.docs type represents documentation attached to an item.

type docs = {
   docs_pre : docstring option;
   docs_post : docstring option;
}
let empty_docs: docs;
let docs_attr: docstring => Parsetree.attribute;
let add_docs_attrs: (docs, Parsetree.attributes) => Parsetree.attributes;
Convert item documentation to attributes and add them to an attribute list
let symbol_docs: unit => docs;
Fetch the item documentation for the current symbol. This also marks this documentation (for ambiguity warnings).
let symbol_docs_lazy: unit => Lazy.t(docs);
let rhs_docs: (int, int) => docs;
Fetch the item documentation for the symbols between two positions. This also marks this documentation (for ambiguity warnings).
let rhs_docs_lazy: (int, int) => Lazy.t(docs);
let mark_symbol_docs: unit => unit;
Mark the item documentation for the current symbol (for ambiguity warnings).
let mark_rhs_docs: (int, int) => unit;
Mark as associated the item documentation for the symbols between two positions (for ambiguity warnings)

Fields and constructors

The Docstrings.info type represents documentation attached to a field or constructor.

type info = option(docstring);
let empty_info: info;
let info_attr: docstring => Parsetree.attribute;
let add_info_attrs: (info, Parsetree.attributes) => Parsetree.attributes;
Convert field info to attributes and add them to an attribute list
let symbol_info: unit => info;
Fetch the field info for the current symbol.
let rhs_info: int => info;
Fetch the field info following the symbol at a given position.

Unattached comments

The Docstrings.text type represents documentation which is not attached to anything.

type text = list(docstring);
let empty_text: text;
let text_attr: docstring => Parsetree.attribute;
let add_text_attrs: (text, Parsetree.attributes) => Parsetree.attributes;
Convert text to attributes and add them to an attribute list
let symbol_text: unit => text;
Fetch the text preceding the current symbol.
let symbol_text_lazy: unit => Lazy.t(text);
let rhs_text: int => text;
Fetch the text preceding the symbol at the given position.
let rhs_text_lazy: int => Lazy.t(text);

Extra text

There may be additional text attached to the delimiters of a block (e.g. struct and end). This is fetched by the following functions, which are applied to the contents of the block rather than the delimiters.

let symbol_pre_extra_text: unit => text;
Fetch additional text preceding the current symbol
let symbol_post_extra_text: unit => text;
Fetch additional text following the current symbol
let rhs_pre_extra_text: int => text;
Fetch additional text preceding the symbol at the given position
let rhs_post_extra_text: int => text;
Fetch additional text following the symbol at the given position