import Kind( Kind(..) )
import Name( nameOccName, nameModule )
import Module
+import PackageConfig ( mainPackageId )
import ParserCoreUtils
import LexCore
import Literal
: '%module' modid tdefs vdefgs { HsExtCore $2 $3 $4 }
modid :: { Module }
- : CNAME { mkModuleFS (mkFastString $1) }
+ : CNAME { mkModule mainPackageId -- ToDo: wrong
+ (mkModuleNameFS (mkFastString $1)) }
-------------------------------------------------------------
-- Type and newtype declarations are in HsSyn syntax
-- same as the module being compiled, and Iface syntax only
-- has OccNames in binding positions
-qd_occ :: { OccName }
+qd_occ :: { FastString }
: var_occ { $1 }
| d_occ { $1 }
aexp :: { IfaceExpr }
: var_occ { IfaceLcl $1 }
- | modid '.' qd_occ { IfaceExt (ExtPkg $1 $3) }
+ | modid '.' qd_occ { IfaceExt (ExtPkg $1 (mkVarOccFS $3)) }
| lit { IfaceLit $1 }
| '(' exp ')' { $2 }
| '(' CHAR '::' aty ')' { MachChar $2 }
| '(' STRING '::' aty ')' { MachStr (mkFastString $2) }
-tv_occ :: { OccName }
- : NAME { mkOccName tvName $1 }
+tv_occ :: { FastString }
+ : NAME { mkFastString $1 }
-var_occ :: { OccName }
- : NAME { mkVarOcc $1 }
+var_occ :: { FastString }
+ : NAME { mkFastString $1 }
-- Type constructor
-- Data constructor occurrence in an expression;
-- use the varName because that's the worker Id
-d_occ :: { OccName }
- : CNAME { mkVarOcc $1 }
+d_occ :: { FastString }
+ : CNAME { mkFastString $1 }
{
-- are very limited (see the productions for 'ty', so the translation
-- isn't hard
toHsType :: IfaceType -> LHsType RdrName
-toHsType (IfaceTyVar v) = noLoc $ HsTyVar (mkRdrUnqual v)
+toHsType (IfaceTyVar v) = noLoc $ HsTyVar (mkRdrUnqual (mkTyVarOcc v))
toHsType (IfaceAppTy t1 t2) = noLoc $ HsAppTy (toHsType t1) (toHsType t2)
toHsType (IfaceFunTy t1 t2) = noLoc $ HsFunTy (toHsType t1) (toHsType t2)
toHsType (IfaceTyConApp (IfaceTc tc) ts) = foldl mkHsAppTy (noLoc $ HsTyVar (ifaceExtRdrName tc)) (map toHsType ts)
toHsType (IfaceForAllTy tv t) = add_forall (toHsTvBndr tv) (toHsType t)
toHsTvBndr :: IfaceTvBndr -> LHsTyVarBndr RdrName
-toHsTvBndr (tv,k) = noLoc $ KindedTyVar (mkRdrUnqual tv) k
+toHsTvBndr (tv,k) = noLoc $ KindedTyVar (mkRdrUnqual (mkTyVarOcc tv)) k
ifaceExtRdrName :: IfaceExtName -> RdrName
ifaceExtRdrName (ExtPkg mod occ) = mkOrig mod occ