diff --git a/compiler/GHC/Driver/Make.hs b/compiler/GHC/Driver/Make.hs index 7c0c1216878bd13fb16c2718320501fc8b1cf7ed..067b0609faac285fa220eff8129e93618b245a08 100644 --- a/compiler/GHC/Driver/Make.hs +++ b/compiler/GHC/Driver/Make.hs @@ -340,10 +340,12 @@ warnMissingHomeModules dflags targets mod_graph = -- Note also that we can't always infer the associated module name -- directly from the filename argument. See #13727. is_known_module mod = - (Map.lookup (moduleName (ms_mod mod)) mod_targets == Just (ms_unitid mod)) + is_module_target mod || maybe False is_file_target (ml_hs_file (ms_location mod)) + is_module_target mod = (moduleName (ms_mod mod), ms_unitid mod) `Set.member` mod_targets + is_file_target file = Set.member (withoutExt file) file_targets file_targets = Set.fromList (mapMaybe file_target targets) @@ -354,7 +356,7 @@ warnMissingHomeModules dflags targets mod_graph = TargetFile file _ -> Just (withoutExt (augmentByWorkingDirectory dflags file)) - mod_targets = Map.fromList (mod_target <$> targets) + mod_targets = Set.fromList (mod_target <$> targets) mod_target Target {targetUnitId, targetId} = case targetId of diff --git a/testsuite/tests/driver/multipleHomeUnits/T25122/T25122.hs b/testsuite/tests/driver/multipleHomeUnits/T25122/T25122.hs new file mode 100644 index 0000000000000000000000000000000000000000..62145c3eee0f1db38ab4578e869f83f28e03a192 --- /dev/null +++ b/testsuite/tests/driver/multipleHomeUnits/T25122/T25122.hs @@ -0,0 +1 @@ +module T25122 where diff --git a/testsuite/tests/driver/multipleHomeUnits/all.T b/testsuite/tests/driver/multipleHomeUnits/all.T index f748b6013dfaafb275613700142e3080c20a9c3e..6bfd151a1af875de5d878e4e165455ebf8b26561 100644 --- a/testsuite/tests/driver/multipleHomeUnits/all.T +++ b/testsuite/tests/driver/multipleHomeUnits/all.T @@ -71,6 +71,11 @@ test('multipleHomeUnits_shared', [extra_files([ 'A.hs', 'unitShared1', 'unitShar test('multipleHomeUnits_shared_ghci', [extra_files([ 'shared.script', 'A.hs', 'unitShared1', 'unitShared2']), extra_run_opts('-unit @unitShared1 -unit @unitShared2')], ghci_script, ['shared.script']) +test('T25122', + [ extra_files( + [ 'T25122', 'unitSame1', 'unitSame2']) + ], multiunit_compile, [['unitSame1', 'unitSame2'], '-v0 -fhide-source-paths -Werror -Wmissing-home-modules']) + diff --git a/testsuite/tests/driver/multipleHomeUnits/unitSame1 b/testsuite/tests/driver/multipleHomeUnits/unitSame1 new file mode 100644 index 0000000000000000000000000000000000000000..96d32a2efab48211aebf0c680d3b3f2d738e019d --- /dev/null +++ b/testsuite/tests/driver/multipleHomeUnits/unitSame1 @@ -0,0 +1,3 @@ +T25122 +-iT25122 +-this-unit-id=s1 diff --git a/testsuite/tests/driver/multipleHomeUnits/unitSame2 b/testsuite/tests/driver/multipleHomeUnits/unitSame2 new file mode 100644 index 0000000000000000000000000000000000000000..e951afe57552a650936626e9b7319ee4be41f008 --- /dev/null +++ b/testsuite/tests/driver/multipleHomeUnits/unitSame2 @@ -0,0 +1,3 @@ +T25122 +-iT25122 +-this-unit-id=u2