Enforce annotations in Lorentz and Indigo
Clarification and motivation
Currently smart contracts produced by Lorentz and Indigo almost do not have annotations by default. They are generated only for two things:
- For entrypoints (depending on the
ParameterHasEntryPoints
instance). - For
Named
things (type annotations). It happens only for parameters.
We have some issues about adding ways to generate annotations:
- #159 (closed) – to generate other kinds of annotations;
- #20 (closed) – to generate annotations for storage.
Let's imagine that both are implemented.
Good smart contracts should have annotations for nearly each meaningful component of their parameter and storage types. So we should enforce usage of annotations and somehow indicate if a contract does not have annotations that we think it should have.
Acceptance criteria
- The first goal is to revisit existing ways of generating annotations (please do it after #159 (closed) and #20 (closed)). If they don't cover all use cases, please create new issue(s) to add new machinery.
- If some meaningful (we should define what is meaningful) part of storage or parameter type does not have an annotation, one of the following should hold:
- some warning is produced
- contract developer explicitly stated that they don't want an annotation there.
Edited by Ivan Gromakovskii