diff options
| author | Manuel M T Chakravarty <chak@cse.unsw.edu.au> | 2006-09-18 23:51:47 +0000 |
|---|---|---|
| committer | Manuel M T Chakravarty <chak@cse.unsw.edu.au> | 2006-09-18 23:51:47 +0000 |
| commit | 0cfba505ee10cf12737077449a6cb4d98e56263c (patch) | |
| tree | 62fb6e87bb5b2f1017b301594ca3f87b63a74616 /compiler/parser | |
| parent | a357abfc2ed4f0ac6eae1cf542fe4fb3bebe686e (diff) | |
| download | haskell-0cfba505ee10cf12737077449a6cb4d98e56263c.tar.gz | |
Type tags in import/export lists
Tue Sep 12 16:57:32 EDT 2006 Manuel M T Chakravarty <chak@cse.unsw.edu.au>
* Type tags in import/export lists
- To write something like GMapKey(type GMap, empty, lookup, insert)
- Requires -findexed-types
Diffstat (limited to 'compiler/parser')
| -rw-r--r-- | compiler/parser/Parser.y.pp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/compiler/parser/Parser.y.pp b/compiler/parser/Parser.y.pp index 0a8b0b6eec..8d55414c6e 100644 --- a/compiler/parser/Parser.y.pp +++ b/compiler/parser/Parser.y.pp @@ -376,12 +376,20 @@ export :: { LIE RdrName } | 'module' modid { LL (IEModuleContents (unLoc $2)) } qcnames :: { [RdrName] } - : qcnames ',' qcname { unLoc $3 : $1 } - | qcname { [unLoc $1] } + : qcnames ',' qcname_ext { unLoc $3 : $1 } + | qcname_ext { [unLoc $1] } +qcname_ext :: { Located RdrName } -- Variable or data constructor + -- or tagged type constructor + : qcname { $1 } + | 'type' qcon { sL (comb2 $1 $2) + (setRdrNameSpace (unLoc $2) + tcClsName) } + +-- Cannot pull into qcname_ext, as qcname is also used in expression. qcname :: { Located RdrName } -- Variable or data constructor - : qvar { $1 } - | qcon { $1 } + : qvar { $1 } + | qcon { $1 } ----------------------------------------------------------------------------- -- Import Declarations |
