From f861423bc48045a6f907ef794eac0111754fe058 Mon Sep 17 00:00:00 2001 From: "Rune K. Svendsen" <runesvend@gmail.com> Date: Thu, 17 Aug 2023 16:30:07 +0200 Subject: [PATCH] dump-decls: fix "Ambiguous module name"-error Fixes errors of the following kind, which happen when dump-decls is run on a package that contains a module name that clashes with that of another package. ``` dump-decls: <no location info>: error: Ambiguous module name `System.Console.ANSI.Types': it was found in multiple packages: ansi-terminal-0.11.4 ansi-terminal-types-0.11.5 ``` --- utils/dump-decls/Main.hs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/utils/dump-decls/Main.hs b/utils/dump-decls/Main.hs index 3fc5c851c494..7083558cdebb 100644 --- a/utils/dump-decls/Main.hs +++ b/utils/dump-decls/Main.hs @@ -6,7 +6,8 @@ import GHC.Core.Class (classMinimalDef) import GHC.Core.TyCo.FVs (tyConsOfType) import GHC.Driver.Ppr (showSDocForUser) import GHC.Unit.State (lookupUnitId, lookupPackageName) -import GHC.Unit.Info (UnitInfo, unitExposedModules, PackageName(..)) +import GHC.Unit.Info (UnitInfo, unitExposedModules, unitId, PackageName(..)) +import GHC.Unit.Types (UnitId) import GHC.Data.FastString (fsLit) import GHC.Driver.Env (hsc_units, hscEPS) import GHC.Utils.Outputable @@ -163,14 +164,14 @@ reportUnitDecls :: UnitInfo -> Ghc SDoc reportUnitDecls unit_info = do let exposed :: [ModuleName] exposed = map fst (unitExposedModules unit_info) - vcat <$> mapM reportModuleDecls exposed + vcat <$> mapM (reportModuleDecls $ unitId unit_info) exposed -reportModuleDecls :: ModuleName -> Ghc SDoc -reportModuleDecls modl_nm +reportModuleDecls :: UnitId -> ModuleName -> Ghc SDoc +reportModuleDecls unit_id modl_nm | modl_nm `elem` ignoredModules = do return $ vcat [ mod_header, text "-- ignored", text "" ] | otherwise = do - modl <- GHC.lookupQualifiedModule NoPkgQual modl_nm + modl <- GHC.lookupQualifiedModule (OtherPkg unit_id) modl_nm mb_mod_info <- GHC.getModuleInfo modl mod_info <- case mb_mod_info of Nothing -> fail "Failed to find module" -- GitLab