diff --git a/ghc/compiler/parser/hsparser.y b/ghc/compiler/parser/hsparser.y index 970412abc8551e0f2dbafad9c520c55514dd3757..5c3910a14b510e6a16a1f92c251904ef6109637a 100644 --- a/ghc/compiler/parser/hsparser.y +++ b/ghc/compiler/parser/hsparser.y @@ -408,8 +408,8 @@ import : var { $$ = mkentid(mknoqual($1)); } ; itycon : tycon { $$ = mknoqual($1); } - | OBRACK CBRACK { $$ = creategid(-1); } - | OPAREN CPAREN { $$ = creategid(0); } + | OBRACK CBRACK { $$ = creategid(NILGID); } + | OPAREN CPAREN { $$ = creategid(UNITGID); } | OPAREN commas CPAREN { $$ = creategid($2); } ; @@ -677,9 +677,9 @@ atype : gtycon { $$ = mktname($1); } ; gtycon : qtycon - | OPAREN RARROW CPAREN { $$ = creategid(-2); } - | OBRACK CBRACK { $$ = creategid(-1); } - | OPAREN CPAREN { $$ = creategid(0); } + | OPAREN RARROW CPAREN { $$ = creategid(ARROWGID); } + | OBRACK CBRACK { $$ = creategid(NILGID); } + | OPAREN CPAREN { $$ = creategid(UNITGID); } | OPAREN commas CPAREN { $$ = creategid($2); } ; @@ -1314,14 +1314,14 @@ apatck : qvark { $$ = mkident($1); } gcon : qcon - | OBRACK CBRACK { $$ = creategid(-1); } - | OPAREN CPAREN { $$ = creategid(0); } + | OBRACK CBRACK { $$ = creategid(NILGID); } + | OPAREN CPAREN { $$ = creategid(UNITGID); } | OPAREN commas CPAREN { $$ = creategid($2); } ; gconk : qconk - | obrackkey CBRACK { $$ = creategid(-1); } - | oparenkey CPAREN { $$ = creategid(0); } + | obrackkey CBRACK { $$ = creategid(NILGID); } + | oparenkey CPAREN { $$ = creategid(UNITGID); } | oparenkey commas CPAREN { $$ = creategid($2); } ; diff --git a/ghc/compiler/parser/id.c b/ghc/compiler/parser/id.c index 04228be114e11d2a28be5e864dba431015c48210..053dc449f71f7169caefd0082c4bad98bad0d106 100644 --- a/ghc/compiler/parser/id.c +++ b/ghc/compiler/parser/id.c @@ -281,11 +281,12 @@ qid_to_pmod(q) look at qid.ugn) with a key (number) and a string. Here's the deal - key - -2 function arrow -> - -1 list type constructor [], or the empty list [] - 0 unit type constructor (), or the unity value () - n n-tuple type constructor (,,,) + key + + ARROWCON function arrow -> + LISTCON list type constructor [], or the empty list [] + UNITCON unit type constructor (), or the unity value () + n n-tuple type constructor (,,,) */ qid @@ -293,11 +294,11 @@ creategid(i) long i; { switch(i) { - case -2: + case ARROWGID: return(mkgid(i,install_literal("->"))); - case -1: + case NILGID: return(mkgid(i,install_literal("[]"))); - case 0: + case UNITGID: return(mkgid(i,install_literal("()"))); default: { diff --git a/ghc/compiler/parser/id.h b/ghc/compiler/parser/id.h index b0fd009aa4e820a38c259ac752e12ac29c296b9a..841fdbfdd682964d0698103fafdab531a77cf95c 100644 --- a/ghc/compiler/parser/id.h +++ b/ghc/compiler/parser/id.h @@ -12,4 +12,15 @@ typedef Hstring *hstring; long get_hstring_len PROTO((hstring)); char *get_hstring_bytes PROTO((hstring)); +id installid PROTO((char *)); /* Create a new identifier */ +hstring installHstring PROTO((int, char *)); /* Create a new literal string */ + +/* defines for special-syntax ids, see comment next + to creategid() +*/ +#define ARROWGID (-2) +#define NILGID (-1) +#define UNITGID (0) + + #endif