1234567891011121314151617181920212223242526272829303132333435open!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(** weight of the clause relative to other clauses in the generator distribution *)valweight:t->expression(** 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