Comments & Documentation
C3 uses three distinct comment types:
- The normal
//
single line comment. - The classic
/* ... */
multi-line C style comment, but unlike in C they are allowed to nest. - Documentation comments
<* ... *>
the text within these comments will be parsed as documentation and optional Contracts on the following code.
Doc contracts
Documentation contracts start with <*
and must be terminated using *>
.
Any initial text up until the first @
-directive on a new line will be interpreted as
free text documentation.
For example:
Doc Contracts Are Parsed
The following was extracted:
- The function description: “Here are some docs.”
- The
num_foo
parameter has the description: “The number of foos”. - A Contract annotation for the compiler:
@required num_foo > 4
which tells the compiler and a user of the function that a precondition is thatnum_foo
must be greater than 4. - A function Attribute marking it as
@deprecated
, which displays warnings. - A custom function Attribute
@mycustom
. The compiler is free to silently ignore custom Attributes, they can be used to optionally emit warnings, but are otherwise ignored.
Available annotations
Name | format |
---|---|
@param | @param <param> <description> |
@return | @return <description> |
@return! | @return! <fault1>, <fault2>, ... |
@deprecated | @deprecated <optional description> |
@require | @require <expr1>, <expr2>, ... |
@ensure | @ensure <expre1>, <expr2>, ... |
@pure | @pure |
See Contracts for information regarding @require
, @ensure
, @const
, @pure
, @checked
.