# HG changeset patch # User Adam Chlipala # Date 1325536732 18000 # Node ID 570636457047347f0a39f63e0f45c7c00057047a # Parent 1a8f7d667c00d408ee8a519bce887ce6937018b7 Add arguments to [type] declarations and signature items diff -r 1a8f7d667c00 -r 570636457047 src/urweb.grm --- a/src/urweb.grm Sat Dec 31 16:08:17 2011 -0500 +++ b/src/urweb.grm Mon Jan 02 15:38:52 2012 -0500 @@ -473,8 +473,14 @@ in [(DCon (SYMBOL, SOME k, c), loc)] end) - | LTYPE SYMBOL EQ cexp ([(DCon (SYMBOL, SOME (KType, s (LTYPEleft, cexpright)), cexp), - s (LTYPEleft, cexpright))]) + | LTYPE SYMBOL cargl2 EQ cexp (let + val loc = s (LTYPEleft, cexpright) + + val k = (KWild, loc) + val (c, k) = cargl2 (cexp, k) + in + [(DCon (SYMBOL, SOME k, c), loc)] + end) | DATATYPE dtypes ([(DDatatype dtypes, s (DATATYPEleft, dtypesright))]) | DATATYPE SYMBOL dargs EQ DATATYPE CSYMBOL DOT path (case dargs of @@ -756,8 +762,20 @@ (SgiCon (SYMBOL, SOME k, c), loc) end end) - | LTYPE SYMBOL EQ cexp ((SgiCon (SYMBOL, SOME (KType, s (LTYPEleft, cexpright)), cexp), - s (LTYPEleft, cexpright))) + | LTYPE SYMBOL cargl2 cexpO (let + val loc = s (LTYPEleft, cexpOright) + + val k = (KWild, loc) + in + case cexpO of + NONE => (SgiConAbs (SYMBOL, k), loc) + | SOME cexp => + let + val (c, k) = cargl2 (cexp, k) + in + (SgiCon (SYMBOL, SOME k, c), loc) + end + end) | DATATYPE dtypes ((SgiDatatype dtypes, s (DATATYPEleft, dtypesright))) | DATATYPE SYMBOL dargs EQ DATATYPE CSYMBOL DOT path (case dargs of