X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fparser%2FParserCore.y;h=a9669b23ec4619608b42aa0d47267c6a93584aa0;hb=56dfaffd65d96d27a74c906c2201fd392e06f154;hp=4d2fc70657cd43c04f26394d46ae3bb5a52c774a;hpb=6b73e439b8bdb5629fffd6ec726806bc7e258ff3;p=ghc-hetmet.git diff --git a/compiler/parser/ParserCore.y b/compiler/parser/ParserCore.y index 4d2fc70..a9669b2 100644 --- a/compiler/parser/ParserCore.y +++ b/compiler/parser/ParserCore.y @@ -10,6 +10,7 @@ import OccName import Kind( Kind(..) ) import Name( nameOccName, nameModule ) import Module +import PackageConfig ( mainPackageId ) import ParserCoreUtils import LexCore import Literal @@ -72,7 +73,8 @@ module :: { HsExtCore RdrName } : '%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 @@ -168,7 +170,7 @@ vdef :: { (IfaceIdBndr, IfaceExpr) } -- 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 } @@ -212,7 +214,7 @@ kind :: { IfaceKind } 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 } @@ -260,11 +262,11 @@ lit :: { Literal } | '(' 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 @@ -278,8 +280,8 @@ d_pat_occ :: { OccName } -- 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 } { @@ -314,14 +316,14 @@ eqTc (IfaceTc (ExtPkg mod occ)) tycon -- 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