diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/backpack/BkpSyn.hs | 3 | ||||
-rw-r--r-- | compiler/backpack/DriverBkp.hs | 9 | ||||
-rw-r--r-- | compiler/hsSyn/HsImpExp.hs | 2 | ||||
-rw-r--r-- | compiler/parser/Parser.y | 10 | ||||
-rw-r--r-- | compiler/rename/RnNames.hs | 2 |
5 files changed, 15 insertions, 11 deletions
diff --git a/compiler/backpack/BkpSyn.hs b/compiler/backpack/BkpSyn.hs index ae03324b34..e019d03b24 100644 --- a/compiler/backpack/BkpSyn.hs +++ b/compiler/backpack/BkpSyn.hs @@ -73,5 +73,6 @@ data IncludeDecl n = IncludeDecl { -- | Rename a module from one name to another. The identity renaming -- means that the module should be brought into scope. -data Renaming = Renaming { renameFrom :: ModuleName, renameTo :: ModuleName } +data Renaming = Renaming { renameFrom :: Located ModuleName + , renameTo :: Maybe (Located ModuleName) } type LRenaming = Located Renaming diff --git a/compiler/backpack/DriverBkp.hs b/compiler/backpack/DriverBkp.hs index ccf74c8c9b..cdbe06d51f 100644 --- a/compiler/backpack/DriverBkp.hs +++ b/compiler/backpack/DriverBkp.hs @@ -213,9 +213,12 @@ hsunitDeps :: HsUnit HsComponentId -> [(UnitId, ModRenaming)] hsunitDeps unit = concatMap get_dep (hsunitBody unit) where get_dep (L _ (IncludeD (IncludeDecl (L _ hsuid) mb_lrn))) = [(convertHsUnitId hsuid, go mb_lrn)] - where go Nothing = ModRenaming True [] - go (Just lrns) = ModRenaming False (map convRn lrns) - where convRn (L _ (Renaming from to)) = (from, to) + where + go Nothing = ModRenaming True [] + go (Just lrns) = ModRenaming False (map convRn lrns) + where + convRn (L _ (Renaming (L _ from) Nothing)) = (from, from) + convRn (L _ (Renaming (L _ from) (Just (L _ to)))) = (from, to) get_dep _ = [] buildUnit :: SessionType -> ComponentId -> [(ModuleName, Module)] -> LHsUnit HsComponentId -> BkpM () diff --git a/compiler/hsSyn/HsImpExp.hs b/compiler/hsSyn/HsImpExp.hs index 6d709cceb4..011a80af22 100644 --- a/compiler/hsSyn/HsImpExp.hs +++ b/compiler/hsSyn/HsImpExp.hs @@ -53,7 +53,7 @@ data ImportDecl name ideclSafe :: Bool, -- ^ True => safe import ideclQualified :: Bool, -- ^ True => qualified ideclImplicit :: Bool, -- ^ True => implicit import (of Prelude) - ideclAs :: Maybe ModuleName, -- ^ as Module + ideclAs :: Maybe (Located ModuleName), -- ^ as Module ideclHiding :: Maybe (Bool, Located [LIE name]) -- ^ (True => hiding, names) } diff --git a/compiler/parser/Parser.y b/compiler/parser/Parser.y index d72aabd2e7..2c90086c56 100644 --- a/compiler/parser/Parser.y +++ b/compiler/parser/Parser.y @@ -575,8 +575,8 @@ rns :: { OrdList LRenaming } | rn { unitOL $1 } rn :: { LRenaming } - : modid 'as' modid { sLL $1 $> $ Renaming (unLoc $1) (unLoc $3) } - | modid { sL1 $1 $ Renaming (unLoc $1) (unLoc $1) } + : modid 'as' modid { sLL $1 $> $ Renaming $1 (Just $3) } + | modid { sL1 $1 $ Renaming $1 Nothing } unitbody :: { OrdList (LHsUnitDecl PackageName) } : '{' unitdecls '}' { $2 } @@ -847,9 +847,9 @@ optqualified :: { ([AddAnn],Bool) } : 'qualified' { ([mj AnnQualified $1],True) } | {- empty -} { ([],False) } -maybeas :: { ([AddAnn],Located (Maybe ModuleName)) } - : 'as' modid { ([mj AnnAs $1,mj AnnVal $2] - ,sLL $1 $> (Just (unLoc $2))) } +maybeas :: { ([AddAnn],Located (Maybe (Located ModuleName))) } + : 'as' modid { ([mj AnnAs $1] + ,sLL $1 $> (Just $2)) } | {- empty -} { ([],noLoc Nothing) } maybeimpspec :: { Located (Maybe (Bool, Located [LIE RdrName])) } diff --git a/compiler/rename/RnNames.hs b/compiler/rename/RnNames.hs index 549bccb80e..8da11bed1c 100644 --- a/compiler/rename/RnNames.hs +++ b/compiler/rename/RnNames.hs @@ -266,7 +266,7 @@ rnImportDecl this_mod ++ "Safe, Trustworthy or Unsafe")) let - qual_mod_name = as_mod `orElse` imp_mod_name + qual_mod_name = fmap unLoc as_mod `orElse` imp_mod_name imp_spec = ImpDeclSpec { is_mod = imp_mod_name, is_qual = qual_only, is_dloc = loc, is_as = qual_mod_name } |