Implement syntax checks for pocket universes
Summary:
Implement some local (per file) check for Pocket Universes syntax:
- In a class, each `enum` definition must be uniquely named
- In a single enum definition, each case type must be uniquely named
- In a single enum definition, each case expr must be uniquely named
- In a single enum definition, each atom mapping must be uniquely named
- In a single atom mapping each type definition must be uniquely named
- In a single atom mapping each expr definition must be uniquely named
Things we don't test here:
- that each definition is complete (all symbols are defined exactly one,
it requires information for the parent).
- that there is not incompatibilities with the parent's definitions.
It will be done during typing or decl.
Reviewed By: CatherineGasnier
Differential Revision:
D14621055
fbshipit-source-id:
719f6a52a1e45fb6581b40cfd47b29ada0f676be