%{ #include "hspincl.h" %} %{{ module U_binding where #include "HsVersions.h" import UgenUtil import U_constr import U_list import U_maybe import U_qid import U_ttype %}} type binding; nullbind : < >; /* And-bind; just concat two decl blobs together */ abind : < gabindfst : binding; gabindsnd : binding; >; /* Import decl */ import : < gibindimod : stringId; gibindqual : long; gibindas : maybe; gibindspec : maybe; gibindsource : long; gibindline : long; >; /* Fixity decl */ fixd : < gfixop : qid; gfixinfx : long; gfixprec : long; gfixline : long; >; /* Class declaration */ cbind : < gcbindc : list; gcbindid : ttype; gcbindw : binding; gcline : long; >; /* Instance declaration */ ibind : < gibindi : ttype; gibindw : binding; giline : long; >; /* data type declaration */ tbind : < gtbindc : list; /* [context entries] */ gtbindid : ttype; /* applied tycon */ gtbindl : list; /* [constr] */ gtbindd : maybe; /* Maybe [deriving] */ gtline : long; >; /* newtype declaration */ ntbind : < gntbindc : list; /* [context entries] */ gntbindid : ttype; /* applied tycon */ gntbindcty : list; /* [constr] (only 1 constrnew) */ gntbindd : maybe; /* Maybe [deriving] */ gntline : long; >; /* type synonym declaration */ nbind : < gnbindid : ttype; gnbindas : ttype; gnline : long; >; /* Pattern binding */ pbind : < gpbindl : VOID_STAR; /* The pattern, of type tree; we can't say 'tree' because that gives mutual recursion in the C */ gpbindr : VOID_STAR; /* The RHS, of type grhsb; same nonsense */ gpline : long; >; /* Function binding */ fbind : < gfbindm : list; /* List of matches */ /* The match encodes the LHS as well as RHS */ gfline : long; >; /* Default decl */ dbind : < gdbindts : list; gdline : long; >; /* Type signature */ sbind : < gsbindids : list; gsbindid : ttype; gsline : long; >; /* FFI declarations */ fobind : < gfobind_id : qid; gfobind_ty : ttype; gfobind_ext : maybe; gfobind_flag : long; gfobind_cc : long; gfobind_kind : long; gfobind_line : long; >; /* user-specified pragmas:XXXX */ vspec_uprag : < gvspec_id : qid; gvspec_tys : list; gvspec_line : long; >; vspec_ty_and_id : < gvspec_ty : ttype; gvspec_tyid : maybe; /* nil or singleton */ >; ispec_uprag : < gispec_clas : qid; gispec_ty : ttype; gispec_line : long; >; inline_uprag: < ginline_id : qid; ginline_line : long; >; noinline_uprag: < gnoinline_id : qid; gnoinline_line : long; >; magicuf_uprag:< gmagicuf_id : qid; gmagicuf_str : stringId; gmagicuf_line : long; >; dspec_uprag : < gdspec_id : qid; gdspec_tys : list; gdspec_line : long; >; end;