annot
The decorator @annot("foo")
sets the annotation %foo
on the compiled Michelson code of record fields and variant constructors.
By default, a variant is compiled to a comb of Michelson or
type
constructors, and each leaf in the nested tree of or
that
corresponds to a constructor is annotated with that name (%foo
).
Similarly, a record is compiled to a comb of Michelson pair
type
constructors, and each leaf in the nested tree of pair
that
corresponds to a field is annotated with that name (%foo
).
In other words, the decorator @annot("foo")
allows the Michelson
annotation for a given field or constructor to be customized. This is
useful for interoperability, where third-party programs or contracts
expect specific Michelson annotations, even if the LIGO code might not
use those names internally.
For example, this code assigns annotations to the fields in a record:
The resulting Michelson code has annotations on the output: