diff options
-rw-r--r-- | compiler/iface/LoadIface.hs | 18 | ||||
-rw-r--r-- | compiler/utils/Outputable.hs | 8 | ||||
-rw-r--r-- | testsuite/tests/showIface/Orphans.stdout | 12 | ||||
-rw-r--r-- | testsuite/tests/simplCore/should_compile/T4306.stdout | 2 | ||||
-rw-r--r-- | testsuite/tests/simplCore/should_compile/T4918.stdout | 4 |
5 files changed, 28 insertions, 16 deletions
diff --git a/compiler/iface/LoadIface.hs b/compiler/iface/LoadIface.hs index 4524402985..34ba1cbb7a 100644 --- a/compiler/iface/LoadIface.hs +++ b/compiler/iface/LoadIface.hs @@ -1047,6 +1047,15 @@ ifaceStats eps Printing interfaces * * ************************************************************************ + +Note [Name qualification with --show-iface] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In order to disambiguate between identifiers from different modules, we qualify +all names that don't originate in the current module. In order to keep visual +noise as low as possible, we keep local names unqualified. + +For some background on this choice see trac #15269. -} -- | Read binary interface, and print it out @@ -1057,8 +1066,15 @@ showIface hsc_env filename = do iface <- initTcRnIf 's' hsc_env () () $ readBinIface IgnoreHiWay TraceBinIFaceReading filename let dflags = hsc_dflags hsc_env + -- See Note [Name qualification with --show-iface] + qualifyImportedNames mod _ + | mod == mi_module iface = NameUnqual + | otherwise = NameNotInScope1 + print_unqual = QueryQualify qualifyImportedNames + neverQualifyModules + neverQualifyPackages putLogMsg dflags NoReason SevDump noSrcSpan - (defaultDumpStyle dflags) (pprModIface iface) + (mkDumpStyle dflags print_unqual) (pprModIface iface) -- Show a ModIface but don't display details; suitable for ModIfaces stored in -- the EPT. diff --git a/compiler/utils/Outputable.hs b/compiler/utils/Outputable.hs index 4df9adfe84..929c7f3d58 100644 --- a/compiler/utils/Outputable.hs +++ b/compiler/utils/Outputable.hs @@ -181,12 +181,8 @@ data PrintUnqualified = QueryQualify { queryQualifyPackage :: QueryQualifyPackage } --- | given an /original/ name, this function tells you which module --- name it should be qualified with when printing for the user, if --- any. For example, given @Control.Exception.catch@, which is in scope --- as @Exception.catch@, this function will return @Just "Exception"@. --- Note that the return value is a ModuleName, not a Module, because --- in source code, names are qualified by ModuleNames. +-- | Given a `Name`'s `Module` and `OccName`, decide whether and how to qualify +-- it. type QueryQualifyName = Module -> OccName -> QualifyName -- | For a given module, we need to know whether to print it with diff --git a/testsuite/tests/showIface/Orphans.stdout b/testsuite/tests/showIface/Orphans.stdout index d61a5c98f3..63fcd79a19 100644 --- a/testsuite/tests/showIface/Orphans.stdout +++ b/testsuite/tests/showIface/Orphans.stdout @@ -1,6 +1,6 @@ -instance [orphan] IsList [Bool] = $fIsListBool -instance IsList [X] = $fIsListX -family instance Item [X] = D:R:ItemX -family instance [orphan] Item [Bool] = D:R:ItemBool -"myrule1" [orphan] forall @ a id @ (a -> a) (id @ a) = id @ a -"myrule2" forall id @ (X -> X) f = f +instance [orphan] GHC.Exts.IsList [GHC.Types.Bool] = $fIsListBool +instance GHC.Exts.IsList [X] = $fIsListX +family instance GHC.Exts.Item [X] = D:R:ItemX +family instance [orphan] GHC.Exts.Item [GHC.Types.Bool] +"myrule1" [orphan] forall @ a +"myrule2" forall GHC.Base.id @ (X -> X) f = f diff --git a/testsuite/tests/simplCore/should_compile/T4306.stdout b/testsuite/tests/simplCore/should_compile/T4306.stdout index 3d52e94830..b2a93ff1cc 100644 --- a/testsuite/tests/simplCore/should_compile/T4306.stdout +++ b/testsuite/tests/simplCore/should_compile/T4306.stdout @@ -1 +1 @@ - $wupd :: Double# -> Double# + $wupd :: GHC.Prim.Double# -> GHC.Prim.Double# diff --git a/testsuite/tests/simplCore/should_compile/T4918.stdout b/testsuite/tests/simplCore/should_compile/T4918.stdout index 257dbb5952..4e957c0309 100644 --- a/testsuite/tests/simplCore/should_compile/T4918.stdout +++ b/testsuite/tests/simplCore/should_compile/T4918.stdout @@ -1,2 +1,2 @@ - {- HasNoCafRefs, Strictness: m, Unfolding: (C# 'p'#) -} - {- HasNoCafRefs, Strictness: m, Unfolding: (C# 'q'#) -} + {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.C# 'p'#) -} + {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.C# 'q'#) -} |