12345678910111213141516171819202122232425262728293031323334open!ImportmoduletypeS=sigtypeasttypetvalcreate_list:astlist->tlist(** Add to hash state via [hash_fold_int] to signify what clause we're in. [None] for
inherited polymorphic variant clauses, since their observers will have salt for
concrete tags. *)valsalt:t->intoption(** location of the clause's definition *)vallocation:t->location(** types of the clause's arguments *)valcore_type_list:t->core_typelist(** constructing a pattern to match the clause *)valpattern:t->loc:location->patternlist->pattern(** constructing an expression to create an instance of the clause *)valexpression:t->loc:location->core_type->expressionlist->expressionendmoduletypeClause_syntax=sigmoduletypeS=SmoduleVariant:Swithtypeast=constructor_declarationmodulePolymorphic_variant:Swithtypeast=row_fieldend