Skip to content

unionLists applied to long lists in plusImportAvails

Running the recomp007 test with a debugged compiler reveals that plusImportAvails can end up computing unionLists on some rather long lists:

--- /dev/null	2019-07-04 19:34:29.040547357 +0000
+++ driver/recomp007/recomp007.run/recomp007.run.stderr.normalised	2019-07-04 21:09:12.947629631 +0000
@@ -0,0 +1,148 @@
+WARNING: file compiler/utils/ListSetOps.hs, line 58
+  []
+  [Distribution.Backpack, Distribution.Backpack.FullUnitId,
+   Distribution.Backpack.ModuleShape,
+   Distribution.Backpack.PreModuleShape,
+   Distribution.Backpack.ReadyComponent,
+   Distribution.CabalSpecVersion, Distribution.Compat.Graph,
+   Distribution.Compiler, Distribution.License,
+   Distribution.ModuleName, Distribution.Parsec.Error,
+   Distribution.Parsec.Position, Distribution.Parsec.Warning,
+   Distribution.SPDX.License, Distribution.SPDX.LicenseExceptionId,
+   Distribution.SPDX.LicenseExpression, Distribution.SPDX.LicenseId,
+   Distribution.SPDX.LicenseReference,
+   Distribution.Simple.BuildTarget, Distribution.Simple.Compiler,
+   Distribution.Simple.Doctest, Distribution.Simple.Flag,
+   Distribution.Simple.Haddock, Distribution.Simple.InstallDirs,
+   Distribution.Simple.InstallDirs.Internal,
+   Distribution.Simple.PackageIndex, Distribution.Simple.Program.Find,
+   Distribution.Simple.Program.GHC, Distribution.Simple.Program.Types,
+   Distribution.Simple.Setup, Distribution.System,
+   Distribution.Types.AbiDependency, Distribution.Types.AbiHash,
+   Distribution.Types.Benchmark,
+   Distribution.Types.BenchmarkInterface,
+   Distribution.Types.BenchmarkType, Distribution.Types.BuildInfo,
+   Distribution.Types.BuildType, Distribution.Types.ComponentId,
+   Distribution.Types.ComponentLocalBuildInfo,
+   Distribution.Types.ComponentName,
+   Distribution.Types.ComponentRequestedSpec,
+   Distribution.Types.CondTree, Distribution.Types.Condition,
+   Distribution.Types.Dependency, Distribution.Types.ExeDependency,
+   Distribution.Types.Executable, Distribution.Types.ExecutableScope,
+   Distribution.Types.ExposedModule, Distribution.Types.ForeignLib,
+   Distribution.Types.ForeignLibOption,
+   Distribution.Types.ForeignLibType,
+   Distribution.Types.GenericPackageDescription,
+   Distribution.Types.GivenComponent,
+   Distribution.Types.IncludeRenaming,
+   Distribution.Types.InstalledPackageInfo,
+   Distribution.Types.LegacyExeDependency, Distribution.Types.Library,
+   Distribution.Types.LibraryName,
+   Distribution.Types.LibraryVisibility,
+   Distribution.Types.LocalBuildInfo, Distribution.Types.Mixin,
+   Distribution.Types.Module, Distribution.Types.ModuleReexport,
+   Distribution.Types.ModuleRenaming,
+   Distribution.Types.MungedPackageId,
+   Distribution.Types.MungedPackageName,
+   Distribution.Types.PackageDescription,
+   Distribution.Types.PackageId, Distribution.Types.PackageName,
+   Distribution.Types.PkgconfigDependency,
+   Distribution.Types.PkgconfigName,
+   Distribution.Types.PkgconfigVersion,
+   Distribution.Types.PkgconfigVersionRange,
+   Distribution.Types.SetupBuildInfo, Distribution.Types.SourceRepo,
+   Distribution.Types.TargetInfo, Distribution.Types.TestSuite,
+   Distribution.Types.TestSuiteInterface, Distribution.Types.TestType,
+   Distribution.Types.UnitId, Distribution.Types.UnqualComponentName,
+   Distribution.Types.Version,
+   Distribution.Types.VersionRange.Internal,
+   Distribution.Utils.NubList, Distribution.Utils.ShortText,
+   Distribution.Verbosity, Distribution.Verbosity.Internal,
+   Language.Haskell.Extension, Control.Applicative, Data.Complex,
+   Data.Functor.Compose, Data.Functor.Const, Data.Functor.Identity,
+   Data.Functor.Product, Data.Functor.Sum, Data.Monoid,
+   Data.Semigroup, Data.Semigroup.Internal, Data.Version, Data.Void,
+   GHC.Exts, GHC.Generics, GHC.IO.Exception, Data.Graph,
+   Data.IntMap.Internal, Data.IntSet.Internal, Data.Map.Internal,
+   Data.Sequence.Internal, Data.Set.Internal, Data.Tree,
+   Text.PrettyPrint.Annotated.HughesPJ, Text.PrettyPrint.HughesPJ,
+   Data.Text, Data.Text.Lazy]
+  Call stack:
+      CallStack (from HasCallStack):
+        callStackDoc, called at compiler/utils/Outputable.hs:<line>:<column> in <package-id>:Outputable
+        warnPprTrace, called at compiler/utils/ListSetOps.hs:<line>:<column> in <package-id>:ListSetOps
+        unionLists, called at compiler/typecheck/TcRnTypes.hs:<line>:<column> in <package-id>:TcRnTypes
+WARNING: file compiler/utils/ListSetOps.hs, line 58
+  [Distribution.Backpack, Distribution.Backpack.FullUnitId,
+   Distribution.Backpack.ModuleShape,
+   Distribution.Backpack.PreModuleShape,
+   Distribution.Backpack.ReadyComponent,
+   Distribution.CabalSpecVersion, Distribution.Compat.Graph,
+   Distribution.Compiler, Distribution.License,
+   Distribution.ModuleName, Distribution.Parsec.Error,
+   Distribution.Parsec.Position, Distribution.Parsec.Warning,
+   Distribution.SPDX.License, Distribution.SPDX.LicenseExceptionId,
+   Distribution.SPDX.LicenseExpression, Distribution.SPDX.LicenseId,
+   Distribution.SPDX.LicenseReference,
+   Distribution.Simple.BuildTarget, Distribution.Simple.Compiler,
+   Distribution.Simple.Doctest, Distribution.Simple.Flag,
+   Distribution.Simple.Haddock, Distribution.Simple.InstallDirs,
+   Distribution.Simple.InstallDirs.Internal,
+   Distribution.Simple.PackageIndex, Distribution.Simple.Program.Find,
+   Distribution.Simple.Program.GHC, Distribution.Simple.Program.Types,
+   Distribution.Simple.Setup, Distribution.System,
+   Distribution.Types.AbiDependency, Distribution.Types.AbiHash,
+   Distribution.Types.Benchmark,
+   Distribution.Types.BenchmarkInterface,
+   Distribution.Types.BenchmarkType, Distribution.Types.BuildInfo,
+   Distribution.Types.BuildType, Distribution.Types.ComponentId,
+   Distribution.Types.ComponentLocalBuildInfo,
+   Distribution.Types.ComponentName,
+   Distribution.Types.ComponentRequestedSpec,
+   Distribution.Types.CondTree, Distribution.Types.Condition,
+   Distribution.Types.Dependency, Distribution.Types.ExeDependency,
+   Distribution.Types.Executable, Distribution.Types.ExecutableScope,
+   Distribution.Types.ExposedModule, Distribution.Types.ForeignLib,
+   Distribution.Types.ForeignLibOption,
+   Distribution.Types.ForeignLibType,
+   Distribution.Types.GenericPackageDescription,
+   Distribution.Types.GivenComponent,
+   Distribution.Types.IncludeRenaming,
+   Distribution.Types.InstalledPackageInfo,
+   Distribution.Types.LegacyExeDependency, Distribution.Types.Library,
+   Distribution.Types.LibraryName,
+   Distribution.Types.LibraryVisibility,
+   Distribution.Types.LocalBuildInfo, Distribution.Types.Mixin,
+   Distribution.Types.Module, Distribution.Types.ModuleReexport,
+   Distribution.Types.ModuleRenaming,
+   Distribution.Types.MungedPackageId,
+   Distribution.Types.MungedPackageName,
+   Distribution.Types.PackageDescription,
+   Distribution.Types.PackageId, Distribution.Types.PackageName,
+   Distribution.Types.PkgconfigDependency,
+   Distribution.Types.PkgconfigName,
+   Distribution.Types.PkgconfigVersion,
+   Distribution.Types.PkgconfigVersionRange,
+   Distribution.Types.SetupBuildInfo, Distribution.Types.SourceRepo,
+   Distribution.Types.TargetInfo, Distribution.Types.TestSuite,
+   Distribution.Types.TestSuiteInterface, Distribution.Types.TestType,
+   Distribution.Types.UnitId, Distribution.Types.UnqualComponentName,
+   Distribution.Types.Version,
+   Distribution.Types.VersionRange.Internal,
+   Distribution.Utils.NubList, Distribution.Utils.ShortText,
+   Distribution.Verbosity, Distribution.Verbosity.Internal,
+   Language.Haskell.Extension, Control.Applicative, Data.Complex,
+   Data.Functor.Compose, Data.Functor.Const, Data.Functor.Identity,
+   Data.Functor.Product, Data.Functor.Sum, Data.Monoid,
+   Data.Semigroup, Data.Semigroup.Internal, Data.Version, Data.Void,
+   GHC.Exts, GHC.Generics, GHC.IO.Exception, Data.Graph,
+   Data.IntMap.Internal, Data.IntSet.Internal, Data.Map.Internal,
+   Data.Sequence.Internal, Data.Set.Internal, Data.Tree,
+   Text.PrettyPrint.Annotated.HughesPJ, Text.PrettyPrint.HughesPJ,
+   Data.Text, Data.Text.Lazy]
+  []
+  Call stack:
+      CallStack (from HasCallStack):
+        callStackDoc, called at compiler/utils/Outputable.hs:<line>:<column> in <package-id>:Outputable
+        warnPprTrace, called at compiler/utils/ListSetOps.hs:<line>:<column> in <package-id>:ListSetOps
+        unionLists, called at compiler/typecheck/TcRnTypes.hs:<line>:<column> in <package-id>:TcRnTypes
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information