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