[Git][ghc/ghc][wip/mpickering/get-link-deps] Ordering of graph
Matthew Pickering (@mpickering)
gitlab at gitlab.haskell.org
Mon Jan 6 12:32:28 UTC 2025
Matthew Pickering pushed to branch wip/mpickering/get-link-deps at Glasgow Haskell Compiler / GHC
Commits:
1d910b5e by Matthew Pickering at 2025-01-06T12:19:34+00:00
Ordering of graph
- - - - -
20 changed files:
- compiler/GHC/Data/Graph/Directed/Reachability.hs
- compiler/GHC/Driver/Backpack.hs
- compiler/GHC/Driver/Make.hs
- compiler/GHC/Unit/Module/Graph.hs
- testsuite/tests/backpack/reexport/bkpreex02.stderr
- testsuite/tests/backpack/reexport/bkpreex03.stdout
- testsuite/tests/backpack/should_compile/bkp14.stderr
- testsuite/tests/backpack/should_compile/bkp31.stderr
- testsuite/tests/backpack/should_compile/bkp32.stderr
- testsuite/tests/backpack/should_compile/bkp51.stderr
- testsuite/tests/backpack/should_fail/bkpfail07.stderr
- testsuite/tests/backpack/should_fail/bkpfail12.stderr
- testsuite/tests/backpack/should_fail/bkpfail13.stderr
- testsuite/tests/backpack/should_fail/bkpfail14.stderr
- testsuite/tests/backpack/should_fail/bkpfail15.stderr
- testsuite/tests/backpack/should_fail/bkpfail21.stderr
- testsuite/tests/count-deps/CountDepsAst.stdout
- testsuite/tests/count-deps/CountDepsParser.stdout
- testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits002.stdout
- testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits003.stdout
Changes:
=====================================
compiler/GHC/Data/Graph/Directed/Reachability.hs
=====================================
@@ -7,7 +7,7 @@ module GHC.Data.Graph.Directed.Reachability
, graphReachability, cyclicGraphReachability
-- * Reachability queries
- , allReachable, allReachableMany, allReachableManyWithRoots
+ , allReachable, allReachableMany
, isReachable, isReachableMany
)
where
@@ -132,23 +132,6 @@ allReachableMany (ReachabilityIndex index from to) roots = map from (IS.toList h
hits = {-# SCC "allReachableMany" #-}
IS.unions $ map (expectJust "reachablesG" . flip IM.lookup index) roots_i
--- | 'allReachableManyWithRoots' returns all nodes reachable from the many given @roots at .
---
--- Properties:
--- * The list of nodes includes the @roots@ node!
--- * The list of nodes is deterministically ordered, but according to an
--- internal order determined by the indices attributed to graph nodes.
--- * This function has $O(n)$ complexity where $n$ is the number of @roots at .
---
--- If you need a topologically sorted list, consider using the functions
--- exposed from 'GHC.Data.Graph.Directed' on 'Graph' instead ('reachableG').
-allReachableManyWithRoots :: ReachabilityIndex node -> [node] {-^ The @roots@ -} -> [node] {-^ All nodes reachable from all @roots@ -}
-allReachableManyWithRoots (ReachabilityIndex index from to) roots = map from (IS.toList hits)
- where roots_i = [ v | Just v <- map to roots ]
- hits = IS.union (IS.fromList roots_i)
- (IS.unions $ map (expectJust "reachablesG" . flip IM.lookup index) roots_i)
-
-
-- | Fast reachability query.
--
-- On graph @g@ with nodes @a@ and @b@, @isReachable g a b@
=====================================
compiler/GHC/Driver/Backpack.hs
=====================================
@@ -750,8 +750,11 @@ hsunitModuleGraph do_link unit = do
if Set.member mod_name hsig_set
then return Nothing
else fmap Just $ summariseRequirement pn mod_name
-
- let graph_nodes = nodes ++ req_nodes ++ (instantiationNodes (homeUnitId $ hsc_home_unit hsc_env) (hsc_units hsc_env))
+ let inodes = instantiationNodes (homeUnitId $ hsc_home_unit hsc_env) (hsc_units hsc_env)
+ -- TODO: Backpack mode does not properly support ExternalPackage nodes yet
+ -- Module nodes do not get given package dependencies (see hsModuleToModSummary).
+ let pkg_nodes = ordNub $ map (\(_, iud) -> PackageNode [] (instUnitInstanceOf iud)) inodes
+ let graph_nodes = nodes ++ req_nodes ++ (map (uncurry InstantiationNode) $ inodes) ++ pkg_nodes
key_nodes = map mkNodeKey graph_nodes
all_nodes = graph_nodes ++ [LinkNode key_nodes (homeUnitId $ hsc_home_unit hsc_env) | do_link]
-- This error message is not very good but .bkp mode is just for testing so
=====================================
compiler/GHC/Driver/Make.hs
=====================================
@@ -264,8 +264,8 @@ depanalPartial diag_wrapper msg excluded_mods allow_dup_roots = do
-- In the future, perhaps more of the work of instantiation could be moved here,
-- instead of shoved in with the module compilation nodes. That could simplify
-- backpack, and maybe hs-boot too.
-instantiationNodes :: UnitId -> UnitState -> [ModuleGraphNode]
-instantiationNodes uid unit_state = InstantiationNode uid <$> iuids_to_check
+instantiationNodes :: UnitId -> UnitState -> [(UnitId, InstantiatedUnit)]
+instantiationNodes uid unit_state = map (uid,) iuids_to_check
where
iuids_to_check :: [InstantiatedUnit]
iuids_to_check =
@@ -1500,16 +1500,21 @@ topSortModuleGraph drop_hs_boot_nodes module_graph mb_root_mod =
-- Module nodes must be in reverse lexigraphic order.
-- All modules nodes must appear before package nodes or link nodes.
--
+ -- MP: This is just the ordering which the tests needed in Jan 2025, it does
+ -- not arise from nature.
+ --
-- Given the current implementation of scc, the result is in
-- The order is sensitive to the internal implementation in Data.Graph,
-- if it changes in future then this ordering will need to be modified.
- cmpModuleGraphNodes (NodeKey_Module k1) (NodeKey_Module k2) = compare k2 k1
- cmpModuleGraphNodes (NodeKey_Link uid1) (NodeKey_Link uid2) = compare uid2 uid1
- cmpModuleGraphNodes (NodeKey_Link {}) _ = LT
- cmpModuleGraphNodes _ (NodeKey_Link {}) = GT
- cmpModuleGraphNodes (NodeKey_Module {}) _ = LT
- cmpModuleGraphNodes _ (NodeKey_Module {}) = GT
- cmpModuleGraphNodes n1 n2 = compare n2 n1
+ moduleGraphNodeRank k =
+ case k of
+ NodeKey_Unit {} -> 0
+ NodeKey_Module {} -> 1
+ NodeKey_Link {} -> 2
+ NodeKey_ExternalUnit {} -> 3
+
+ cmpModuleGraphNodes k1 k2 = compare (moduleGraphNodeRank k1) (moduleGraphNodeRank k2)
+ `mappend` compare k2 k1
topSortModules :: Bool -> [ModuleGraphNode] -> Maybe HomeUnitModule -> [SCC ModuleGraphNode]
topSortModules drop_hs_boot_nodes summaries mb_root_mod
@@ -1632,12 +1637,14 @@ downsweep_imports hsc_env old_summaries excl_mods allow_dup_roots (root_errs, ro
let root_map = mkRootMap rootSummariesOk
checkDuplicates root_map
(deps, map0) <- loopSummaries rootSummariesOk (M.empty, root_map)
+ let all_instantiations = getHomeUnitInstantiations hsc_env
+ let deps' = loopInstantiations all_instantiations deps
let closure_errs = checkHomeUnitsClosed unit_env
unit_env = hsc_unit_env hsc_env
tmpfs = hsc_tmpfs hsc_env
downsweep_errs = lefts $ concat $ M.elems map0
- downsweep_nodes = M.elems deps
+ downsweep_nodes = M.elems deps'
(other_errs, unit_nodes) = partitionEithers $ unitEnv_foldWithKey (\nodes uid hue -> nodes ++ unitModuleNodes downsweep_nodes uid hue) [] (hsc_HUG hsc_env)
all_nodes = downsweep_nodes ++ unit_nodes
@@ -1653,12 +1660,13 @@ downsweep_imports hsc_env old_summaries excl_mods allow_dup_roots (root_errs, ro
then return (all_errs, th_enabled_nodes)
else pure $ (all_root_errs, emptyMG)
where
+ getHomeUnitInstantiations :: HscEnv -> [(UnitId, InstantiatedUnit)]
+ getHomeUnitInstantiations hsc_env = unitEnv_foldWithKey (\nodes uid hue -> nodes ++ instantiationNodes uid (homeUnitEnv_units hue)) [] (hsc_HUG hsc_env)
+
-- Dependencies arising on a unit (backpack and module linking deps)
unitModuleNodes :: [ModuleGraphNode] -> UnitId -> HomeUnitEnv -> [Either (Messages DriverMessage) ModuleGraphNode]
unitModuleNodes summaries uid hue =
- let instantiation_nodes = instantiationNodes uid (homeUnitEnv_units hue)
- in map Right instantiation_nodes
- ++ maybeToList (linkNodes (instantiation_nodes ++ summaries) uid hue)
+ maybeToList (linkNodes summaries uid hue)
calcDeps ms =
-- Add a dependency on the HsBoot file if it exists
@@ -1684,6 +1692,20 @@ downsweep_imports hsc_env old_summaries excl_mods allow_dup_roots (root_errs, ro
dup_roots :: [[ModSummary]] -- Each at least of length 2
dup_roots = filterOut isSingleton $ map rights (M.elems root_map)
+ loopInstantiations :: [(UnitId, InstantiatedUnit)]
+ -> M.Map NodeKey ModuleGraphNode
+ -> M.Map NodeKey ModuleGraphNode
+ loopInstantiations [] done = done
+ loopInstantiations ((home_uid, iud) :xs) done =
+ let hsc_env' = hscSetActiveHomeUnit home_unit hsc_env
+ done' = loopUnit hsc_env' done [instUnitInstanceOf iud]
+ payload = InstantiationNode home_uid iud
+ in loopInstantiations xs (M.insert (mkNodeKey payload) payload done')
+
+ where
+ home_unit = ue_unitHomeUnit home_uid (hsc_unit_env hsc_env)
+
+
-- This loops over all the mod summaries in the dependency graph, accumulates the actual dependencies for each module/unit
loopSummaries :: [ModSummary]
-> (M.Map NodeKey ModuleGraphNode,
=====================================
compiler/GHC/Unit/Module/Graph.hs
=====================================
@@ -206,7 +206,8 @@ mgNodeDependencies :: Bool -> ModuleGraphNode -> [NodeKey]
mgNodeDependencies drop_hs_boot_nodes = \case
LinkNode deps _uid -> deps
InstantiationNode uid iuid ->
- NodeKey_Module . (\mod -> ModNodeKeyWithUid (GWIB mod NotBoot) uid) <$> uniqDSetToList (instUnitHoles iuid)
+ [ NodeKey_Module (ModNodeKeyWithUid (GWIB mod NotBoot) uid) | mod <- uniqDSetToList (instUnitHoles iuid) ]
+ ++ [ NodeKey_ExternalUnit (instUnitInstanceOf iuid) ]
ModuleNode deps _ms ->
map drop_hs_boot deps
PackageNode deps _ -> map NodeKey_ExternalUnit deps
=====================================
testsuite/tests/backpack/reexport/bkpreex02.stderr
=====================================
@@ -23,8 +23,8 @@
Instantiating p[H=r-impl:H,T=r-impl:T]
[1 of 2] Compiling T[sig] ( p/T.hsig, nothing )
[2 of 2] Compiling H[sig] ( p/H.hsig, nothing )
- [1 of 4] Compiling T[sig] ( q/T.hsig, nothing )
- [2 of 4] Compiling H[sig] ( q/H.hsig, nothing )
- [3 of 4] Compiling A ( q/A.hs, nothing )
+ [1 of 4] Compiling H[sig] ( q/H.hsig, nothing )
+ [2 of 4] Compiling A ( q/A.hs, nothing )
+ [3 of 4] Compiling T[sig] ( q/T.hsig, nothing )
[4 of 4] Instantiating p
[1 of 1] Instantiating q
=====================================
testsuite/tests/backpack/reexport/bkpreex03.stdout
=====================================
@@ -1,6 +1,6 @@
[1 of 1] Processing p
[1 of 3] Compiling M1
- [2 of 3] Compiling M2
- [3 of 3] Compiling A[sig]
+ [2 of 3] Compiling A[sig]
+ [3 of 3] Compiling M2
[1 of 1] Processing p
[3 of 3] Compiling A[sig] [M2 added]
=====================================
testsuite/tests/backpack/should_compile/bkp14.stderr
=====================================
@@ -1,7 +1,7 @@
[1 of 3] Processing p
[1 of 3] Compiling H[sig] ( p/H.hsig, nothing )
- [2 of 3] Compiling Y[sig] ( p/Y.hsig, nothing )
- [3 of 3] Compiling M ( p/M.hs, nothing )
+ [2 of 3] Compiling M ( p/M.hs, nothing )
+ [3 of 3] Compiling Y[sig] ( p/Y.hsig, nothing )
[2 of 3] Processing impl
Instantiating impl
[1 of 2] Compiling F ( impl/F.hs, bkp14.out/impl/F.o )
=====================================
testsuite/tests/backpack/should_compile/bkp31.stderr
=====================================
@@ -2,8 +2,8 @@
[1 of 2] Compiling A[sig] ( ab-sigs/A.hsig, nothing )
[2 of 2] Compiling B[sig] ( ab-sigs/B.hsig, nothing )
[2 of 2] Processing abcd-holes
- [1 of 5] Compiling C ( abcd-holes/C.hs, nothing )
+ [1 of 5] Compiling A[sig] ( abcd-holes/A.hsig, nothing )
[2 of 5] Compiling B[sig] ( abcd-holes/B.hsig, nothing )
- [3 of 5] Compiling A[sig] ( abcd-holes/A.hsig, nothing )
+ [3 of 5] Compiling C ( abcd-holes/C.hs, nothing )
[4 of 5] Compiling D ( abcd-holes/D.hs, nothing )
[5 of 5] Instantiating ab-sigs
=====================================
testsuite/tests/backpack/should_compile/bkp32.stderr
=====================================
@@ -8,8 +8,8 @@
[1 of 6] Compiling Prel[sig] ( structures/Prel.hsig, nothing )
[2 of 6] Compiling Array[sig] ( structures/Array.hsig, nothing )
[3 of 6] Compiling Graph ( structures/Graph.hs, nothing )
- [4 of 6] Compiling Tree ( structures/Tree.hs, nothing )
- [5 of 6] Compiling Set ( structures/Set.hs, nothing )
+ [4 of 6] Compiling Set ( structures/Set.hs, nothing )
+ [5 of 6] Compiling Tree ( structures/Tree.hs, nothing )
[6 of 6] Instantiating arrays-sig
[ 4 of 11] Processing arrays-a
[1 of 3] Compiling Prel[sig] ( arrays-a/Prel.hsig, nothing )
=====================================
testsuite/tests/backpack/should_compile/bkp51.stderr
=====================================
@@ -5,12 +5,12 @@
[3 of 3] Compiling AA ( p/AA.hs, bkp51.out/p/AA.o )
[2 of 6] Processing q
[1 of 3] Compiling B[sig] ( q/B.hsig, nothing )
- [2 of 3] Compiling H[sig] ( q/H.hsig, nothing )
- [3 of 3] Compiling C ( q/C.hs, nothing )
+ [2 of 3] Compiling C ( q/C.hs, nothing )
+ [3 of 3] Compiling H[sig] ( q/H.hsig, nothing )
[3 of 6] Processing r
- [1 of 4] Compiling H[sig] ( r/H.hsig, nothing )
- [2 of 4] Compiling B[sig] ( r/B.hsig, nothing )
- [3 of 4] Compiling D ( r/D.hs, nothing )
+ [1 of 4] Compiling B[sig] ( r/B.hsig, nothing )
+ [2 of 4] Compiling D ( r/D.hs, nothing )
+ [3 of 4] Compiling H[sig] ( r/H.hsig, nothing )
[4 of 4] Instantiating q
[4 of 6] Processing s
[1 of 3] Compiling H[sig] ( s/H.hsig, nothing )
=====================================
testsuite/tests/backpack/should_fail/bkpfail07.stderr
=====================================
@@ -1,14 +1,13 @@
[1 of 3] Processing p
- [1 of 1] Compiling H[sig] ( p\H.hsig, nothing )
+ [1 of 1] Compiling H[sig] ( p/H.hsig, nothing )
[2 of 3] Processing h
- [1 of 3] Compiling T ( h\T.hs, nothing )
- [2 of 3] Compiling H ( h\H.hs, nothing )
- [3 of 3] Compiling A[sig] ( h\A.hsig, nothing )
+ [1 of 3] Compiling A[sig] ( h/A.hsig, nothing )
+ [2 of 3] Compiling T ( h/T.hs, nothing )
+ [3 of 3] Compiling H ( h/H.hs, nothing )
[3 of 3] Processing q
- [1 of 3] Compiling A[sig] ( q\A.hsig, nothing )
+ [1 of 3] Compiling A[sig] ( q/A.hsig, nothing )
[2 of 3] Instantiating h
[3 of 3] Instantiating p
-
bkpfail07.bkp:6:9: error: [GHC-15843]
• Type constructor ‘T’ has conflicting definitions in the module
and its hsig file.
@@ -18,3 +17,4 @@ bkpfail07.bkp:6:9: error: [GHC-15843]
data T = T GHC.Types.Int
The constructors do not match: The types for ‘T’ differ.
• While checking that ‘h[A=<A>]:H’ implements signature ‘H’ in ‘p[H=h[A=<A>]:H]’.
+
=====================================
testsuite/tests/backpack/should_fail/bkpfail12.stderr
=====================================
@@ -1,13 +1,12 @@
[1 of 3] Processing p
- [1 of 2] Compiling Q[sig] ( p\Q.hsig, nothing )
- [2 of 2] Compiling P ( p\P.hs, nothing )
+ [1 of 2] Compiling P ( p/P.hs, nothing )
+ [2 of 2] Compiling Q[sig] ( p/Q.hsig, nothing )
[2 of 3] Processing q
Instantiating q
- [1 of 1] Compiling Q ( q\Q.hs, bkpfail12.out\q\Q.o )
+ [1 of 1] Compiling Q ( q/Q.hs, bkpfail12.out/q/Q.o )
[3 of 3] Processing r
- [1 of 3] Compiling H[sig] ( r\H.hsig, nothing )
+ [1 of 3] Compiling H[sig] ( r/H.hsig, nothing )
[2 of 3] Instantiating p
-
bkpfail12.bkp:8:9: error: [GHC-11890]
• Identifier ‘f’ has conflicting definitions in the module
and its hsig file.
@@ -15,3 +14,4 @@ bkpfail12.bkp:8:9: error: [GHC-11890]
Hsig file: f :: GHC.Types.Int
The two types are different.
• While checking that ‘Q’ implements signature ‘Q’ in ‘p[Q=Q]’.
+
=====================================
testsuite/tests/backpack/should_fail/bkpfail13.stderr
=====================================
@@ -1,13 +1,12 @@
[1 of 3] Processing p
- [1 of 2] Compiling Q[sig] ( p\Q.hsig, nothing )
- [2 of 2] Compiling P ( p\P.hs, nothing )
+ [1 of 2] Compiling P ( p/P.hs, nothing )
+ [2 of 2] Compiling Q[sig] ( p/Q.hsig, nothing )
[2 of 3] Processing q
Instantiating q
- [1 of 1] Compiling QMe ( q\QMe.hs, bkpfail13.out\q\QMe.o )
+ [1 of 1] Compiling QMe ( q/QMe.hs, bkpfail13.out/q/QMe.o )
[3 of 3] Processing r
- [1 of 3] Compiling H[sig] ( r\H.hsig, nothing )
+ [1 of 3] Compiling H[sig] ( r/H.hsig, nothing )
[2 of 3] Instantiating p
-
bkpfail13.bkp:8:9: error: [GHC-11890]
• Identifier ‘f’ has conflicting definitions in the module
and its hsig file.
@@ -15,3 +14,4 @@ bkpfail13.bkp:8:9: error: [GHC-11890]
Hsig file: f :: GHC.Types.Int
The two types are different.
• While checking that ‘q:QMe’ implements signature ‘Q’ in ‘p[Q=q:QMe]’.
+
=====================================
testsuite/tests/backpack/should_fail/bkpfail14.stderr
=====================================
@@ -1,16 +1,15 @@
[1 of 3] Processing p
- [1 of 3] Compiling Q[sig] ( p\Q.hsig, nothing )
- [2 of 3] Compiling Q2[sig] ( p\Q2.hsig, nothing )
- [3 of 3] Compiling P ( p\P.hs, nothing )
+ [1 of 3] Compiling P ( p/P.hs, nothing )
+ [2 of 3] Compiling Q[sig] ( p/Q.hsig, nothing )
+ [3 of 3] Compiling Q2[sig] ( p/Q2.hsig, nothing )
[2 of 3] Processing q
Instantiating q
- [1 of 3] Compiling QMe ( q\QMe.hs, bkpfail14.out\q\QMe.o )
- [2 of 3] Compiling Q ( q\Q.hs, bkpfail14.out\q\Q.o )
- [3 of 3] Compiling Q2 ( q\Q2.hs, bkpfail14.out\q\Q2.o )
+ [1 of 3] Compiling Q ( q/Q.hs, bkpfail14.out/q/Q.o )
+ [2 of 3] Compiling Q2 ( q/Q2.hs, bkpfail14.out/q/Q2.o )
+ [3 of 3] Compiling QMe ( q/QMe.hs, bkpfail14.out/q/QMe.o )
[3 of 3] Processing r
- [1 of 3] Compiling H[sig] ( r\H.hsig, nothing )
+ [1 of 3] Compiling H[sig] ( r/H.hsig, nothing )
[2 of 3] Instantiating p
-
bkpfail14.bkp:9:9: error: [GHC-11890]
• Identifier ‘f’ has conflicting definitions in the module
and its hsig file.
@@ -18,3 +17,4 @@ bkpfail14.bkp:9:9: error: [GHC-11890]
Hsig file: f :: GHC.Types.Int
The two types are different.
• While checking that ‘QMe’ implements signature ‘Q’ in ‘p[Q=QMe,Q2=Q2]’.
+
=====================================
testsuite/tests/backpack/should_fail/bkpfail15.stderr
=====================================
@@ -1,14 +1,13 @@
[1 of 3] Processing p
- [1 of 3] Compiling A[sig] ( p\A.hsig, nothing )
- [2 of 3] Compiling Q[sig] ( p\Q.hsig, nothing )
- [3 of 3] Compiling P ( p\P.hs, nothing )
+ [1 of 3] Compiling A[sig] ( p/A.hsig, nothing )
+ [2 of 3] Compiling P ( p/P.hs, nothing )
+ [3 of 3] Compiling Q[sig] ( p/Q.hsig, nothing )
[2 of 3] Processing q
Instantiating q
- [1 of 1] Compiling Q ( q\Q.hs, bkpfail15.out\q\Q.o )
+ [1 of 1] Compiling Q ( q/Q.hs, bkpfail15.out/q/Q.o )
[3 of 3] Processing r
- [1 of 2] Compiling A[sig] ( r\A.hsig, nothing )
+ [1 of 2] Compiling A[sig] ( r/A.hsig, nothing )
[2 of 2] Instantiating p
-
bkpfail15.bkp:8:9: error: [GHC-11890]
• Identifier ‘f’ has conflicting definitions in the module
and its hsig file.
@@ -16,3 +15,4 @@ bkpfail15.bkp:8:9: error: [GHC-11890]
Hsig file: f :: GHC.Types.Int
The two types are different.
• While checking that ‘q:Q’ implements signature ‘Q’ in ‘p[A=<A>,Q=q:Q]’.
+
=====================================
testsuite/tests/backpack/should_fail/bkpfail21.stderr
=====================================
@@ -5,10 +5,9 @@
[1 of 2] Compiling B[sig] ( q/B.hsig, nothing )
[2 of 2] Compiling C[sig] ( q/C.hsig, nothing )
[3 of 3] Processing r
- [1 of 5] Compiling H2[sig] ( r/H2.hsig, nothing )
- [2 of 5] Compiling H1[sig] ( r/H1.hsig, nothing )
+ [1 of 5] Compiling H1[sig] ( r/H1.hsig, nothing )
+ [2 of 5] Compiling H2[sig] ( r/H2.hsig, nothing )
[3 of 5] Compiling H3[sig] ( r/H3.hsig, nothing )
-
bkpfail21.bkp:1:1: error: [GHC-93009]
• While merging export lists, could not unify {H1.T} with {H2.T}
Neither name variable originates from the current signature.
@@ -16,3 +15,4 @@ bkpfail21.bkp:1:1: error: [GHC-93009]
• p[A=<H1>,C=<H3>]:C
• q[B=<H2>,C=<H3>]:C
• ...and the local signature for H3
+
=====================================
testsuite/tests/count-deps/CountDepsAst.stdout
=====================================
@@ -199,7 +199,6 @@ GHC.Unit.Module.Env
GHC.Unit.Module.Imported
GHC.Unit.Module.Location
GHC.Unit.Module.ModIface
-GHC.Unit.Module.ModNodeKey
GHC.Unit.Module.Warnings
GHC.Unit.Module.WholeCoreBindings
GHC.Unit.Parser
=====================================
testsuite/tests/count-deps/CountDepsParser.stdout
=====================================
@@ -223,6 +223,7 @@ GHC.Unit.Module.Graph
GHC.Unit.Module.Imported
GHC.Unit.Module.Location
GHC.Unit.Module.ModIface
+GHC.Unit.Module.ModNodeKey
GHC.Unit.Module.ModSummary
GHC.Unit.Module.Warnings
GHC.Unit.Module.WholeCoreBindings
=====================================
testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits002.stdout
=====================================
@@ -1,6 +1,6 @@
[1 of 4] Compiling Main[c]
-[2 of 4] Compiling Main[d]
-[3 of 4] Linking ./c/C[c]
+[2 of 4] Linking ./c/C[c]
+[3 of 4] Compiling Main[d]
[4 of 4] Linking ./d/D[d]
unit C compiled successfully
unit D compiled successfully
=====================================
testsuite/tests/driver/multipleHomeUnits/multipleHomeUnits003.stdout
=====================================
@@ -1,8 +1,8 @@
[1 of 6] Compiling A[a]
[2 of 6] Compiling B[b]
[3 of 6] Compiling Main[c]
-[4 of 6] Compiling Main[d]
-[5 of 6] Linking ./c/C[c]
+[4 of 6] Linking ./c/C[c]
+[5 of 6] Compiling Main[d]
[6 of 6] Linking ./d/D[d]
unit C compiled successfully
unit D compiled successfully
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/1d910b5e856f75d7c8f916cca58d2a97586ceeb7
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/1d910b5e856f75d7c8f916cca58d2a97586ceeb7
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20250106/7fc7b531/attachment-0001.html>
More information about the ghc-commits
mailing list