packages feed

Cabal 3.2.1.0 → 3.4.0.0

raw patch · 316 files changed

+24465/−14693 lines, 316 filesdep +asyncdep +clockdep +reredep ~basedep ~deepseqdep ~optparse-applicativePVP ok

version bump matches the API change (PVP)

Dependencies added: async, clock, rere, void

Dependency ranges changed: base, deepseq, optparse-applicative, semigroups, transformers

API changes (from Hackage documentation)

- Distribution.CabalSpecVersion: cabalSpecFromVersionDigitsMaybe :: [Int] -> Maybe CabalSpecVersion
- Distribution.Compat.Graph: instance (Distribution.Compat.Graph.IsNode a, Distribution.Compat.Graph.IsNode b, Distribution.Compat.Graph.Key a Data.Type.Equality.~ Distribution.Compat.Graph.Key b) => Distribution.Compat.Graph.IsNode (Data.Either.Either a b)
- Distribution.Compat.Prelude.Internal: data Proxy (t :: k) :: forall k. () => k -> Type
- Distribution.Compat.Prelude.Internal: type IO a = WithCallStack (IO a)
- Distribution.Compat.Prelude.Internal: type NoCallStackIO a = IO a
- Distribution.FieldGrammar.FieldDescrs: instance Distribution.FieldGrammar.Class.FieldGrammar Distribution.FieldGrammar.FieldDescrs.FieldDescrs
- Distribution.FieldGrammar.Parsec: instance Distribution.FieldGrammar.Class.FieldGrammar Distribution.FieldGrammar.Parsec.ParsecFieldGrammar
- Distribution.FieldGrammar.Pretty: instance Distribution.FieldGrammar.Class.FieldGrammar Distribution.FieldGrammar.Pretty.PrettyFieldGrammar
- Distribution.ModuleName: ModuleName :: ShortTextLst -> ModuleName
- Distribution.ModuleName: instance Control.DeepSeq.NFData Distribution.ModuleName.ShortTextLst
- Distribution.ModuleName: instance Data.Binary.Class.Binary Distribution.ModuleName.ShortTextLst
- Distribution.ModuleName: instance Data.Data.Data Distribution.ModuleName.ShortTextLst
- Distribution.ModuleName: instance Distribution.Utils.Structured.Structured Distribution.ModuleName.ShortTextLst
- Distribution.ModuleName: instance GHC.Classes.Eq Distribution.ModuleName.ShortTextLst
- Distribution.ModuleName: instance GHC.Classes.Ord Distribution.ModuleName.ShortTextLst
- Distribution.ModuleName: instance GHC.Generics.Generic Distribution.ModuleName.ShortTextLst
- Distribution.ModuleName: instance GHC.Read.Read Distribution.ModuleName.ShortTextLst
- Distribution.ModuleName: instance GHC.Show.Show Distribution.ModuleName.ShortTextLst
- Distribution.ModuleName: newtype ModuleName
- Distribution.PackageDescription: Arch :: Arch -> ConfVar
- Distribution.PackageDescription: Bazaar :: RepoType
- Distribution.PackageDescription: Benchmark :: UnqualComponentName -> BenchmarkInterface -> BuildInfo -> Benchmark
- Distribution.PackageDescription: BenchmarkExeV10 :: Version -> FilePath -> BenchmarkInterface
- Distribution.PackageDescription: BenchmarkTypeExe :: Version -> BenchmarkType
- Distribution.PackageDescription: BenchmarkTypeUnknown :: String -> Version -> BenchmarkType
- Distribution.PackageDescription: BenchmarkUnsupported :: BenchmarkType -> BenchmarkInterface
- Distribution.PackageDescription: BuildInfo :: Bool -> [LegacyExeDependency] -> [ExeDependency] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [PkgconfigDependency] -> [String] -> [String] -> [FilePath] -> [FilePath] -> [FilePath] -> [FilePath] -> [FilePath] -> [FilePath] -> [ModuleName] -> [ModuleName] -> [ModuleName] -> Maybe Language -> [Language] -> [Extension] -> [Extension] -> [Extension] -> [String] -> [String] -> [String] -> [String] -> [String] -> [String] -> [FilePath] -> [FilePath] -> [FilePath] -> [FilePath] -> PerCompilerFlavor [String] -> PerCompilerFlavor [String] -> PerCompilerFlavor [String] -> PerCompilerFlavor [String] -> [(String, String)] -> [Dependency] -> [Mixin] -> BuildInfo
- Distribution.PackageDescription: CAnd :: Condition c -> Condition c -> Condition c
- Distribution.PackageDescription: CBenchName :: UnqualComponentName -> ComponentName
- Distribution.PackageDescription: CExeName :: UnqualComponentName -> ComponentName
- Distribution.PackageDescription: CFLibName :: UnqualComponentName -> ComponentName
- Distribution.PackageDescription: CLibName :: LibraryName -> ComponentName
- Distribution.PackageDescription: CNot :: Condition c -> Condition c
- Distribution.PackageDescription: COr :: Condition c -> Condition c -> Condition c
- Distribution.PackageDescription: CTestName :: UnqualComponentName -> ComponentName
- Distribution.PackageDescription: CVS :: RepoType
- Distribution.PackageDescription: CondNode :: a -> c -> [CondBranch v c a] -> CondTree v c a
- Distribution.PackageDescription: Configure :: BuildType
- Distribution.PackageDescription: Custom :: BuildType
- Distribution.PackageDescription: Darcs :: RepoType
- Distribution.PackageDescription: DefaultRenaming :: ModuleRenaming
- Distribution.PackageDescription: Executable :: UnqualComponentName -> FilePath -> ExecutableScope -> BuildInfo -> Executable
- Distribution.PackageDescription: Flag :: FlagName -> ConfVar
- Distribution.PackageDescription: GenericPackageDescription :: PackageDescription -> [Flag] -> Maybe (CondTree ConfVar [Dependency] Library) -> [(UnqualComponentName, CondTree ConfVar [Dependency] Library)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] ForeignLib)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] Executable)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)] -> GenericPackageDescription
- Distribution.PackageDescription: Git :: RepoType
- Distribution.PackageDescription: GnuArch :: RepoType
- Distribution.PackageDescription: HidingRenaming :: [ModuleName] -> ModuleRenaming
- Distribution.PackageDescription: Impl :: CompilerFlavor -> VersionRange -> ConfVar
- Distribution.PackageDescription: LMainLibName :: LibraryName
- Distribution.PackageDescription: LSubLibName :: UnqualComponentName -> LibraryName
- Distribution.PackageDescription: Library :: LibraryName -> [ModuleName] -> [ModuleReexport] -> [ModuleName] -> Bool -> LibraryVisibility -> BuildInfo -> Library
- Distribution.PackageDescription: Lit :: Bool -> Condition c
- Distribution.PackageDescription: Make :: BuildType
- Distribution.PackageDescription: Mercurial :: RepoType
- Distribution.PackageDescription: MkFlag :: FlagName -> String -> Bool -> Bool -> Flag
- Distribution.PackageDescription: ModuleReexport :: Maybe PackageName -> ModuleName -> ModuleName -> ModuleReexport
- Distribution.PackageDescription: ModuleRenaming :: [(ModuleName, ModuleName)] -> ModuleRenaming
- Distribution.PackageDescription: Monotone :: RepoType
- Distribution.PackageDescription: OS :: OS -> ConfVar
- Distribution.PackageDescription: OtherRepoType :: String -> RepoType
- Distribution.PackageDescription: PackageDescription :: Either Version VersionRange -> PackageIdentifier -> Either License License -> [FilePath] -> !ShortText -> !ShortText -> !ShortText -> !ShortText -> [(CompilerFlavor, VersionRange)] -> !ShortText -> !ShortText -> !ShortText -> [SourceRepo] -> !ShortText -> !ShortText -> !ShortText -> [(String, String)] -> Maybe BuildType -> Maybe SetupBuildInfo -> Maybe Library -> [Library] -> [Executable] -> [ForeignLib] -> [TestSuite] -> [Benchmark] -> [FilePath] -> FilePath -> [FilePath] -> [FilePath] -> [FilePath] -> PackageDescription
- Distribution.PackageDescription: RepoHead :: RepoKind
- Distribution.PackageDescription: RepoKindUnknown :: String -> RepoKind
- Distribution.PackageDescription: RepoThis :: RepoKind
- Distribution.PackageDescription: SVN :: RepoType
- Distribution.PackageDescription: SetupBuildInfo :: [Dependency] -> Bool -> SetupBuildInfo
- Distribution.PackageDescription: Simple :: BuildType
- Distribution.PackageDescription: SourceRepo :: RepoKind -> Maybe RepoType -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> Maybe FilePath -> SourceRepo
- Distribution.PackageDescription: TestSuite :: UnqualComponentName -> TestSuiteInterface -> BuildInfo -> TestSuite
- Distribution.PackageDescription: TestSuiteExeV10 :: Version -> FilePath -> TestSuiteInterface
- Distribution.PackageDescription: TestSuiteLibV09 :: Version -> ModuleName -> TestSuiteInterface
- Distribution.PackageDescription: TestSuiteUnsupported :: TestType -> TestSuiteInterface
- Distribution.PackageDescription: TestTypeExe :: Version -> TestType
- Distribution.PackageDescription: TestTypeLib :: Version -> TestType
- Distribution.PackageDescription: TestTypeUnknown :: String -> Version -> TestType
- Distribution.PackageDescription: Var :: c -> Condition c
- Distribution.PackageDescription: [asmOptions] :: BuildInfo -> [String]
- Distribution.PackageDescription: [asmSources] :: BuildInfo -> [FilePath]
- Distribution.PackageDescription: [author] :: PackageDescription -> !ShortText
- Distribution.PackageDescription: [autogenIncludes] :: BuildInfo -> [FilePath]
- Distribution.PackageDescription: [autogenModules] :: BuildInfo -> [ModuleName]
- Distribution.PackageDescription: [benchmarkBuildInfo] :: Benchmark -> BuildInfo
- Distribution.PackageDescription: [benchmarkInterface] :: Benchmark -> BenchmarkInterface
- Distribution.PackageDescription: [benchmarkName] :: Benchmark -> UnqualComponentName
- Distribution.PackageDescription: [benchmarks] :: PackageDescription -> [Benchmark]
- Distribution.PackageDescription: [bugReports] :: PackageDescription -> !ShortText
- Distribution.PackageDescription: [buildInfo] :: Executable -> BuildInfo
- Distribution.PackageDescription: [buildToolDepends] :: BuildInfo -> [ExeDependency]
- Distribution.PackageDescription: [buildTools] :: BuildInfo -> [LegacyExeDependency]
- Distribution.PackageDescription: [buildTypeRaw] :: PackageDescription -> Maybe BuildType
- Distribution.PackageDescription: [buildable] :: BuildInfo -> Bool
- Distribution.PackageDescription: [cSources] :: BuildInfo -> [FilePath]
- Distribution.PackageDescription: [category] :: PackageDescription -> !ShortText
- Distribution.PackageDescription: [ccOptions] :: BuildInfo -> [String]
- Distribution.PackageDescription: [cmmOptions] :: BuildInfo -> [String]
- Distribution.PackageDescription: [cmmSources] :: BuildInfo -> [FilePath]
- Distribution.PackageDescription: [condBenchmarks] :: GenericPackageDescription -> [(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)]
- Distribution.PackageDescription: [condExecutables] :: GenericPackageDescription -> [(UnqualComponentName, CondTree ConfVar [Dependency] Executable)]
- Distribution.PackageDescription: [condForeignLibs] :: GenericPackageDescription -> [(UnqualComponentName, CondTree ConfVar [Dependency] ForeignLib)]
- Distribution.PackageDescription: [condLibrary] :: GenericPackageDescription -> Maybe (CondTree ConfVar [Dependency] Library)
- Distribution.PackageDescription: [condSubLibraries] :: GenericPackageDescription -> [(UnqualComponentName, CondTree ConfVar [Dependency] Library)]
- Distribution.PackageDescription: [condTestSuites] :: GenericPackageDescription -> [(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]
- Distribution.PackageDescription: [condTreeComponents] :: CondTree v c a -> [CondBranch v c a]
- Distribution.PackageDescription: [condTreeConstraints] :: CondTree v c a -> c
- Distribution.PackageDescription: [condTreeData] :: CondTree v c a -> a
- Distribution.PackageDescription: [copyright] :: PackageDescription -> !ShortText
- Distribution.PackageDescription: [cppOptions] :: BuildInfo -> [String]
- Distribution.PackageDescription: [customFieldsBI] :: BuildInfo -> [(String, String)]
- Distribution.PackageDescription: [customFieldsPD] :: PackageDescription -> [(String, String)]
- Distribution.PackageDescription: [cxxOptions] :: BuildInfo -> [String]
- Distribution.PackageDescription: [cxxSources] :: BuildInfo -> [FilePath]
- Distribution.PackageDescription: [dataDir] :: PackageDescription -> FilePath
- Distribution.PackageDescription: [dataFiles] :: PackageDescription -> [FilePath]
- Distribution.PackageDescription: [defaultExtensions] :: BuildInfo -> [Extension]
- Distribution.PackageDescription: [defaultLanguage] :: BuildInfo -> Maybe Language
- Distribution.PackageDescription: [defaultSetupDepends] :: SetupBuildInfo -> Bool
- Distribution.PackageDescription: [description] :: PackageDescription -> !ShortText
- Distribution.PackageDescription: [exeName] :: Executable -> UnqualComponentName
- Distribution.PackageDescription: [exeScope] :: Executable -> ExecutableScope
- Distribution.PackageDescription: [executables] :: PackageDescription -> [Executable]
- Distribution.PackageDescription: [exposedModules] :: Library -> [ModuleName]
- Distribution.PackageDescription: [extraBundledLibs] :: BuildInfo -> [String]
- Distribution.PackageDescription: [extraDocFiles] :: PackageDescription -> [FilePath]
- Distribution.PackageDescription: [extraDynLibFlavours] :: BuildInfo -> [String]
- Distribution.PackageDescription: [extraFrameworkDirs] :: BuildInfo -> [String]
- Distribution.PackageDescription: [extraGHCiLibs] :: BuildInfo -> [String]
- Distribution.PackageDescription: [extraLibDirs] :: BuildInfo -> [String]
- Distribution.PackageDescription: [extraLibFlavours] :: BuildInfo -> [String]
- Distribution.PackageDescription: [extraLibs] :: BuildInfo -> [String]
- Distribution.PackageDescription: [extraSrcFiles] :: PackageDescription -> [FilePath]
- Distribution.PackageDescription: [extraTmpFiles] :: PackageDescription -> [FilePath]
- Distribution.PackageDescription: [flagDefault] :: Flag -> Bool
- Distribution.PackageDescription: [flagDescription] :: Flag -> String
- Distribution.PackageDescription: [flagManual] :: Flag -> Bool
- Distribution.PackageDescription: [flagName] :: Flag -> FlagName
- Distribution.PackageDescription: [foreignLibs] :: PackageDescription -> [ForeignLib]
- Distribution.PackageDescription: [frameworks] :: BuildInfo -> [String]
- Distribution.PackageDescription: [genPackageFlags] :: GenericPackageDescription -> [Flag]
- Distribution.PackageDescription: [homepage] :: PackageDescription -> !ShortText
- Distribution.PackageDescription: [hsSourceDirs] :: BuildInfo -> [FilePath]
- Distribution.PackageDescription: [includeDirs] :: BuildInfo -> [FilePath]
- Distribution.PackageDescription: [includes] :: BuildInfo -> [FilePath]
- Distribution.PackageDescription: [installIncludes] :: BuildInfo -> [FilePath]
- Distribution.PackageDescription: [jsSources] :: BuildInfo -> [FilePath]
- Distribution.PackageDescription: [ldOptions] :: BuildInfo -> [String]
- Distribution.PackageDescription: [libBuildInfo] :: Library -> BuildInfo
- Distribution.PackageDescription: [libExposed] :: Library -> Bool
- Distribution.PackageDescription: [libName] :: Library -> LibraryName
- Distribution.PackageDescription: [libVisibility] :: Library -> LibraryVisibility
- Distribution.PackageDescription: [library] :: PackageDescription -> Maybe Library
- Distribution.PackageDescription: [licenseFiles] :: PackageDescription -> [FilePath]
- Distribution.PackageDescription: [licenseRaw] :: PackageDescription -> Either License License
- Distribution.PackageDescription: [maintainer] :: PackageDescription -> !ShortText
- Distribution.PackageDescription: [mixins] :: BuildInfo -> [Mixin]
- Distribution.PackageDescription: [modulePath] :: Executable -> FilePath
- Distribution.PackageDescription: [moduleReexportName] :: ModuleReexport -> ModuleName
- Distribution.PackageDescription: [moduleReexportOriginalName] :: ModuleReexport -> ModuleName
- Distribution.PackageDescription: [moduleReexportOriginalPackage] :: ModuleReexport -> Maybe PackageName
- Distribution.PackageDescription: [oldExtensions] :: BuildInfo -> [Extension]
- Distribution.PackageDescription: [options] :: BuildInfo -> PerCompilerFlavor [String]
- Distribution.PackageDescription: [otherExtensions] :: BuildInfo -> [Extension]
- Distribution.PackageDescription: [otherLanguages] :: BuildInfo -> [Language]
- Distribution.PackageDescription: [otherModules] :: BuildInfo -> [ModuleName]
- Distribution.PackageDescription: [packageDescription] :: GenericPackageDescription -> PackageDescription
- Distribution.PackageDescription: [package] :: PackageDescription -> PackageIdentifier
- Distribution.PackageDescription: [pkgUrl] :: PackageDescription -> !ShortText
- Distribution.PackageDescription: [pkgconfigDepends] :: BuildInfo -> [PkgconfigDependency]
- Distribution.PackageDescription: [profOptions] :: BuildInfo -> PerCompilerFlavor [String]
- Distribution.PackageDescription: [reexportedModules] :: Library -> [ModuleReexport]
- Distribution.PackageDescription: [repoBranch] :: SourceRepo -> Maybe String
- Distribution.PackageDescription: [repoKind] :: SourceRepo -> RepoKind
- Distribution.PackageDescription: [repoLocation] :: SourceRepo -> Maybe String
- Distribution.PackageDescription: [repoModule] :: SourceRepo -> Maybe String
- Distribution.PackageDescription: [repoSubdir] :: SourceRepo -> Maybe FilePath
- Distribution.PackageDescription: [repoTag] :: SourceRepo -> Maybe String
- Distribution.PackageDescription: [repoType] :: SourceRepo -> Maybe RepoType
- Distribution.PackageDescription: [setupBuildInfo] :: PackageDescription -> Maybe SetupBuildInfo
- Distribution.PackageDescription: [setupDepends] :: SetupBuildInfo -> [Dependency]
- Distribution.PackageDescription: [sharedOptions] :: BuildInfo -> PerCompilerFlavor [String]
- Distribution.PackageDescription: [signatures] :: Library -> [ModuleName]
- Distribution.PackageDescription: [sourceRepos] :: PackageDescription -> [SourceRepo]
- Distribution.PackageDescription: [specVersionRaw] :: PackageDescription -> Either Version VersionRange
- Distribution.PackageDescription: [stability] :: PackageDescription -> !ShortText
- Distribution.PackageDescription: [staticOptions] :: BuildInfo -> PerCompilerFlavor [String]
- Distribution.PackageDescription: [subLibraries] :: PackageDescription -> [Library]
- Distribution.PackageDescription: [synopsis] :: PackageDescription -> !ShortText
- Distribution.PackageDescription: [targetBuildDepends] :: BuildInfo -> [Dependency]
- Distribution.PackageDescription: [testBuildInfo] :: TestSuite -> BuildInfo
- Distribution.PackageDescription: [testInterface] :: TestSuite -> TestSuiteInterface
- Distribution.PackageDescription: [testName] :: TestSuite -> UnqualComponentName
- Distribution.PackageDescription: [testSuites] :: PackageDescription -> [TestSuite]
- Distribution.PackageDescription: [testedWith] :: PackageDescription -> [(CompilerFlavor, VersionRange)]
- Distribution.PackageDescription: [virtualModules] :: BuildInfo -> [ModuleName]
- Distribution.PackageDescription: allBuildDepends :: PackageDescription -> [Dependency]
- Distribution.PackageDescription: allBuildInfo :: PackageDescription -> [BuildInfo]
- Distribution.PackageDescription: allExtensions :: BuildInfo -> [Extension]
- Distribution.PackageDescription: allLanguages :: BuildInfo -> [Language]
- Distribution.PackageDescription: allLibraries :: PackageDescription -> [Library]
- Distribution.PackageDescription: benchmarkModules :: Benchmark -> [ModuleName]
- Distribution.PackageDescription: benchmarkModulesAutogen :: Benchmark -> [ModuleName]
- Distribution.PackageDescription: benchmarkType :: Benchmark -> BenchmarkType
- Distribution.PackageDescription: buildType :: PackageDescription -> BuildType
- Distribution.PackageDescription: cAnd :: Condition a -> Condition a -> Condition a
- Distribution.PackageDescription: cNot :: Condition a -> Condition a
- Distribution.PackageDescription: cOr :: Eq v => Condition v -> Condition v -> Condition v
- Distribution.PackageDescription: data Benchmark
- Distribution.PackageDescription: data BenchmarkInterface
- Distribution.PackageDescription: data BenchmarkType
- Distribution.PackageDescription: data BuildInfo
- Distribution.PackageDescription: data BuildType
- Distribution.PackageDescription: data ComponentName
- Distribution.PackageDescription: data CondTree v c a
- Distribution.PackageDescription: data Condition c
- Distribution.PackageDescription: data ConfVar
- Distribution.PackageDescription: data Executable
- Distribution.PackageDescription: data Flag
- Distribution.PackageDescription: data FlagAssignment
- Distribution.PackageDescription: data FlagName
- Distribution.PackageDescription: data GenericPackageDescription
- Distribution.PackageDescription: data Library
- Distribution.PackageDescription: data LibraryName
- Distribution.PackageDescription: data ModuleReexport
- Distribution.PackageDescription: data ModuleRenaming
- Distribution.PackageDescription: data PackageDescription
- Distribution.PackageDescription: data RepoKind
- Distribution.PackageDescription: data RepoType
- Distribution.PackageDescription: data SetupBuildInfo
- Distribution.PackageDescription: data SourceRepo
- Distribution.PackageDescription: data TestSuite
- Distribution.PackageDescription: data TestSuiteInterface
- Distribution.PackageDescription: data TestType
- Distribution.PackageDescription: defaultLibName :: LibraryName
- Distribution.PackageDescription: defaultRenaming :: ModuleRenaming
- Distribution.PackageDescription: diffFlagAssignment :: FlagAssignment -> FlagAssignment -> FlagAssignment
- Distribution.PackageDescription: dispFlagAssignment :: FlagAssignment -> Doc
- Distribution.PackageDescription: emptyBenchmark :: Benchmark
- Distribution.PackageDescription: emptyBuildInfo :: BuildInfo
- Distribution.PackageDescription: emptyExecutable :: Executable
- Distribution.PackageDescription: emptyFlag :: FlagName -> Flag
- Distribution.PackageDescription: emptyHookedBuildInfo :: HookedBuildInfo
- Distribution.PackageDescription: emptyLibrary :: Library
- Distribution.PackageDescription: emptyPackageDescription :: PackageDescription
- Distribution.PackageDescription: emptySourceRepo :: RepoKind -> SourceRepo
- Distribution.PackageDescription: emptyTestSuite :: TestSuite
- Distribution.PackageDescription: enabledBuildDepends :: PackageDescription -> ComponentRequestedSpec -> [Dependency]
- Distribution.PackageDescription: exeModules :: Executable -> [ModuleName]
- Distribution.PackageDescription: exeModulesAutogen :: Executable -> [ModuleName]
- Distribution.PackageDescription: explicitLibModules :: Library -> [ModuleName]
- Distribution.PackageDescription: findDuplicateFlagAssignments :: FlagAssignment -> [FlagName]
- Distribution.PackageDescription: hasBenchmarks :: PackageDescription -> Bool
- Distribution.PackageDescription: hasExes :: PackageDescription -> Bool
- Distribution.PackageDescription: hasLibs :: PackageDescription -> Bool
- Distribution.PackageDescription: hasPublicLib :: PackageDescription -> Bool
- Distribution.PackageDescription: hasTests :: PackageDescription -> Bool
- Distribution.PackageDescription: hcOptions :: CompilerFlavor -> BuildInfo -> [String]
- Distribution.PackageDescription: hcProfOptions :: CompilerFlavor -> BuildInfo -> [String]
- Distribution.PackageDescription: hcSharedOptions :: CompilerFlavor -> BuildInfo -> [String]
- Distribution.PackageDescription: hcStaticOptions :: CompilerFlavor -> BuildInfo -> [String]
- Distribution.PackageDescription: insertFlagAssignment :: FlagName -> Bool -> FlagAssignment -> FlagAssignment
- Distribution.PackageDescription: knownBenchmarkTypes :: [BenchmarkType]
- Distribution.PackageDescription: knownBuildTypes :: [BuildType]
- Distribution.PackageDescription: knownRepoTypes :: [RepoType]
- Distribution.PackageDescription: knownTestTypes :: [TestType]
- Distribution.PackageDescription: libModulesAutogen :: Library -> [ModuleName]
- Distribution.PackageDescription: license :: PackageDescription -> License
- Distribution.PackageDescription: lookupFlagAssignment :: FlagName -> FlagAssignment -> Maybe Bool
- Distribution.PackageDescription: mkFlagAssignment :: [(FlagName, Bool)] -> FlagAssignment
- Distribution.PackageDescription: mkFlagName :: String -> FlagName
- Distribution.PackageDescription: nullFlagAssignment :: FlagAssignment -> Bool
- Distribution.PackageDescription: parsecFlagAssignment :: CabalParsing m => m FlagAssignment
- Distribution.PackageDescription: showFlagValue :: (FlagName, Bool) -> String
- Distribution.PackageDescription: specVersion :: PackageDescription -> Version
- Distribution.PackageDescription: testModules :: TestSuite -> [ModuleName]
- Distribution.PackageDescription: testModulesAutogen :: TestSuite -> [ModuleName]
- Distribution.PackageDescription: testType :: TestSuite -> TestType
- Distribution.PackageDescription: type HookedBuildInfo = (Maybe BuildInfo, [(UnqualComponentName, BuildInfo)])
- Distribution.PackageDescription: unFlagAssignment :: FlagAssignment -> [(FlagName, Bool)]
- Distribution.PackageDescription: unFlagName :: FlagName -> String
- Distribution.PackageDescription: updatePackageDescription :: HookedBuildInfo -> PackageDescription -> PackageDescription
- Distribution.PackageDescription: usedExtensions :: BuildInfo -> [Extension]
- Distribution.PackageDescription: usesTemplateHaskellOrQQ :: BuildInfo -> Bool
- Distribution.PackageDescription: withBenchmark :: PackageDescription -> (Benchmark -> IO ()) -> IO ()
- Distribution.PackageDescription: withExe :: PackageDescription -> (Executable -> IO ()) -> IO ()
- Distribution.PackageDescription: withLib :: PackageDescription -> (Library -> IO ()) -> IO ()
- Distribution.PackageDescription: withTest :: PackageDescription -> (TestSuite -> IO ()) -> IO ()
- Distribution.Parsec.Newtypes: CommaFSep :: CommaFSep
- Distribution.Parsec.Newtypes: CommaVCat :: CommaVCat
- Distribution.Parsec.Newtypes: FSep :: FSep
- Distribution.Parsec.Newtypes: FilePathNT :: String -> FilePathNT
- Distribution.Parsec.Newtypes: MQuoted :: a -> MQuoted a
- Distribution.Parsec.Newtypes: NoCommaFSep :: NoCommaFSep
- Distribution.Parsec.Newtypes: SpecLicense :: Either License License -> SpecLicense
- Distribution.Parsec.Newtypes: SpecVersion :: Either Version VersionRange -> SpecVersion
- Distribution.Parsec.Newtypes: TestedWith :: (CompilerFlavor, VersionRange) -> TestedWith
- Distribution.Parsec.Newtypes: Token :: String -> Token
- Distribution.Parsec.Newtypes: Token' :: String -> Token'
- Distribution.Parsec.Newtypes: VCat :: VCat
- Distribution.Parsec.Newtypes: [getFilePathNT] :: FilePathNT -> String
- Distribution.Parsec.Newtypes: [getMQuoted] :: MQuoted a -> a
- Distribution.Parsec.Newtypes: [getSpecLicense] :: SpecLicense -> Either License License
- Distribution.Parsec.Newtypes: [getSpecVersion] :: SpecVersion -> Either Version VersionRange
- Distribution.Parsec.Newtypes: [getTestedWith] :: TestedWith -> (CompilerFlavor, VersionRange)
- Distribution.Parsec.Newtypes: [getToken'] :: Token' -> String
- Distribution.Parsec.Newtypes: [getToken] :: Token -> String
- Distribution.Parsec.Newtypes: alaList :: sep -> [a] -> List sep (Identity a) a
- Distribution.Parsec.Newtypes: alaList' :: sep -> (a -> b) -> [a] -> List sep b a
- Distribution.Parsec.Newtypes: alaSet :: sep -> Set a -> Set' sep (Identity a) a
- Distribution.Parsec.Newtypes: alaSet' :: sep -> (a -> b) -> Set a -> Set' sep b a
- Distribution.Parsec.Newtypes: class Sep sep
- Distribution.Parsec.Newtypes: data CommaFSep
- Distribution.Parsec.Newtypes: data CommaVCat
- Distribution.Parsec.Newtypes: data FSep
- Distribution.Parsec.Newtypes: data List sep b a
- Distribution.Parsec.Newtypes: data NoCommaFSep
- Distribution.Parsec.Newtypes: data Set' sep b a
- Distribution.Parsec.Newtypes: data VCat
- Distribution.Parsec.Newtypes: instance (Distribution.Compat.Newtype.Newtype a b, Distribution.Parsec.Newtypes.Sep sep, Distribution.Parsec.Parsec b) => Distribution.Parsec.Parsec (Distribution.Parsec.Newtypes.List sep b a)
- Distribution.Parsec.Newtypes: instance (Distribution.Compat.Newtype.Newtype a b, Distribution.Parsec.Newtypes.Sep sep, Distribution.Pretty.Pretty b) => Distribution.Pretty.Pretty (Distribution.Parsec.Newtypes.List sep b a)
- Distribution.Parsec.Newtypes: instance (Distribution.Compat.Newtype.Newtype a b, Distribution.Parsec.Newtypes.Sep sep, Distribution.Pretty.Pretty b) => Distribution.Pretty.Pretty (Distribution.Parsec.Newtypes.Set' sep b a)
- Distribution.Parsec.Newtypes: instance (Distribution.Compat.Newtype.Newtype a b, GHC.Classes.Ord a, Distribution.Parsec.Newtypes.Sep sep, Distribution.Parsec.Parsec b) => Distribution.Parsec.Parsec (Distribution.Parsec.Newtypes.Set' sep b a)
- Distribution.Parsec.Newtypes: instance Distribution.Compat.Newtype.Newtype (Data.Either.Either Distribution.SPDX.License.License Distribution.License.License) Distribution.Parsec.Newtypes.SpecLicense
- Distribution.Parsec.Newtypes: instance Distribution.Compat.Newtype.Newtype (Data.Either.Either Distribution.Types.Version.Version Distribution.Types.VersionRange.Internal.VersionRange) Distribution.Parsec.Newtypes.SpecVersion
- Distribution.Parsec.Newtypes: instance Distribution.Compat.Newtype.Newtype (Data.Set.Internal.Set a) (Distribution.Parsec.Newtypes.Set' sep wrapper a)
- Distribution.Parsec.Newtypes: instance Distribution.Compat.Newtype.Newtype (Distribution.Compiler.CompilerFlavor, Distribution.Types.VersionRange.Internal.VersionRange) Distribution.Parsec.Newtypes.TestedWith
- Distribution.Parsec.Newtypes: instance Distribution.Compat.Newtype.Newtype GHC.Base.String Distribution.Parsec.Newtypes.FilePathNT
- Distribution.Parsec.Newtypes: instance Distribution.Compat.Newtype.Newtype GHC.Base.String Distribution.Parsec.Newtypes.Token
- Distribution.Parsec.Newtypes: instance Distribution.Compat.Newtype.Newtype GHC.Base.String Distribution.Parsec.Newtypes.Token'
- Distribution.Parsec.Newtypes: instance Distribution.Compat.Newtype.Newtype [a] (Distribution.Parsec.Newtypes.List sep wrapper a)
- Distribution.Parsec.Newtypes: instance Distribution.Compat.Newtype.Newtype a (Distribution.Parsec.Newtypes.MQuoted a)
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Newtypes.Sep Distribution.Parsec.Newtypes.CommaFSep
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Newtypes.Sep Distribution.Parsec.Newtypes.CommaVCat
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Newtypes.Sep Distribution.Parsec.Newtypes.FSep
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Newtypes.Sep Distribution.Parsec.Newtypes.NoCommaFSep
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Newtypes.Sep Distribution.Parsec.Newtypes.VCat
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Parsec Distribution.Parsec.Newtypes.FilePathNT
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Parsec Distribution.Parsec.Newtypes.SpecLicense
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Parsec Distribution.Parsec.Newtypes.SpecVersion
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Parsec Distribution.Parsec.Newtypes.TestedWith
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Parsec Distribution.Parsec.Newtypes.Token
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Parsec Distribution.Parsec.Newtypes.Token'
- Distribution.Parsec.Newtypes: instance Distribution.Parsec.Parsec a => Distribution.Parsec.Parsec (Distribution.Parsec.Newtypes.MQuoted a)
- Distribution.Parsec.Newtypes: instance Distribution.Pretty.Pretty Distribution.Parsec.Newtypes.FilePathNT
- Distribution.Parsec.Newtypes: instance Distribution.Pretty.Pretty Distribution.Parsec.Newtypes.SpecLicense
- Distribution.Parsec.Newtypes: instance Distribution.Pretty.Pretty Distribution.Parsec.Newtypes.SpecVersion
- Distribution.Parsec.Newtypes: instance Distribution.Pretty.Pretty Distribution.Parsec.Newtypes.TestedWith
- Distribution.Parsec.Newtypes: instance Distribution.Pretty.Pretty Distribution.Parsec.Newtypes.Token
- Distribution.Parsec.Newtypes: instance Distribution.Pretty.Pretty Distribution.Parsec.Newtypes.Token'
- Distribution.Parsec.Newtypes: instance Distribution.Pretty.Pretty a => Distribution.Pretty.Pretty (Distribution.Parsec.Newtypes.MQuoted a)
- Distribution.Parsec.Newtypes: newtype FilePathNT
- Distribution.Parsec.Newtypes: newtype MQuoted a
- Distribution.Parsec.Newtypes: newtype SpecLicense
- Distribution.Parsec.Newtypes: newtype SpecVersion
- Distribution.Parsec.Newtypes: newtype TestedWith
- Distribution.Parsec.Newtypes: newtype Token
- Distribution.Parsec.Newtypes: newtype Token'
- Distribution.Parsec.Newtypes: parseSep :: (Sep sep, CabalParsing m) => Proxy sep -> m a -> m [a]
- Distribution.Parsec.Newtypes: prettySep :: Sep sep => Proxy sep -> [Doc] -> Doc
- Distribution.Simple: AbiTag :: String -> AbiTag
- Distribution.Simple: Compiler :: CompilerId -> AbiTag -> [CompilerId] -> [(Language, Flag)] -> [(Extension, Maybe Flag)] -> Map String String -> Compiler
- Distribution.Simple: CompilerId :: CompilerFlavor -> Version -> CompilerId
- Distribution.Simple: CompilerInfo :: CompilerId -> AbiTag -> Maybe [CompilerId] -> Maybe [Language] -> Maybe [Extension] -> CompilerInfo
- Distribution.Simple: Eta :: CompilerFlavor
- Distribution.Simple: GHC :: CompilerFlavor
- Distribution.Simple: GHCJS :: CompilerFlavor
- Distribution.Simple: GlobalPackageDB :: PackageDB
- Distribution.Simple: HBC :: CompilerFlavor
- Distribution.Simple: HaskellSuite :: String -> CompilerFlavor
- Distribution.Simple: Helium :: CompilerFlavor
- Distribution.Simple: Hugs :: CompilerFlavor
- Distribution.Simple: JHC :: CompilerFlavor
- Distribution.Simple: LHC :: CompilerFlavor
- Distribution.Simple: MaximalDebugInfo :: DebugInfoLevel
- Distribution.Simple: MaximumOptimisation :: OptimisationLevel
- Distribution.Simple: MinimalDebugInfo :: DebugInfoLevel
- Distribution.Simple: NHC :: CompilerFlavor
- Distribution.Simple: NoAbiTag :: AbiTag
- Distribution.Simple: NoDebugInfo :: DebugInfoLevel
- Distribution.Simple: NoOptimisation :: OptimisationLevel
- Distribution.Simple: NormalDebugInfo :: DebugInfoLevel
- Distribution.Simple: NormalOptimisation :: OptimisationLevel
- Distribution.Simple: OtherCompiler :: String -> CompilerFlavor
- Distribution.Simple: PerCompilerFlavor :: v -> v -> PerCompilerFlavor v
- Distribution.Simple: ProfDetailAllFunctions :: ProfDetailLevel
- Distribution.Simple: ProfDetailDefault :: ProfDetailLevel
- Distribution.Simple: ProfDetailExportedFunctions :: ProfDetailLevel
- Distribution.Simple: ProfDetailNone :: ProfDetailLevel
- Distribution.Simple: ProfDetailOther :: String -> ProfDetailLevel
- Distribution.Simple: ProfDetailToplevelFunctions :: ProfDetailLevel
- Distribution.Simple: SpecificPackageDB :: FilePath -> PackageDB
- Distribution.Simple: UHC :: CompilerFlavor
- Distribution.Simple: UserPackageDB :: PackageDB
- Distribution.Simple: YHC :: CompilerFlavor
- Distribution.Simple: [compilerAbiTag] :: Compiler -> AbiTag
- Distribution.Simple: [compilerCompat] :: Compiler -> [CompilerId]
- Distribution.Simple: [compilerExtensions] :: Compiler -> [(Extension, Maybe Flag)]
- Distribution.Simple: [compilerId] :: Compiler -> CompilerId
- Distribution.Simple: [compilerInfoAbiTag] :: CompilerInfo -> AbiTag
- Distribution.Simple: [compilerInfoCompat] :: CompilerInfo -> Maybe [CompilerId]
- Distribution.Simple: [compilerInfoExtensions] :: CompilerInfo -> Maybe [Extension]
- Distribution.Simple: [compilerInfoId] :: CompilerInfo -> CompilerId
- Distribution.Simple: [compilerInfoLanguages] :: CompilerInfo -> Maybe [Language]
- Distribution.Simple: [compilerLanguages] :: Compiler -> [(Language, Flag)]
- Distribution.Simple: [compilerProperties] :: Compiler -> Map String String
- Distribution.Simple: abiTagString :: AbiTag -> String
- Distribution.Simple: absolutePackageDBPath :: PackageDB -> NoCallStackIO PackageDB
- Distribution.Simple: absolutePackageDBPaths :: PackageDBStack -> NoCallStackIO PackageDBStack
- Distribution.Simple: arResponseFilesSupported :: Compiler -> Bool
- Distribution.Simple: backpackSupported :: Compiler -> Bool
- Distribution.Simple: buildCompilerFlavor :: CompilerFlavor
- Distribution.Simple: buildCompilerId :: CompilerId
- Distribution.Simple: classifyCompilerFlavor :: String -> CompilerFlavor
- Distribution.Simple: compilerCompatFlavor :: CompilerFlavor -> Compiler -> Bool
- Distribution.Simple: compilerCompatVersion :: CompilerFlavor -> Compiler -> Maybe Version
- Distribution.Simple: compilerFlavor :: Compiler -> CompilerFlavor
- Distribution.Simple: compilerInfo :: Compiler -> CompilerInfo
- Distribution.Simple: compilerVersion :: Compiler -> Version
- Distribution.Simple: coverageSupported :: Compiler -> Bool
- Distribution.Simple: data AbiTag
- Distribution.Simple: data Compiler
- Distribution.Simple: data CompilerFlavor
- Distribution.Simple: data CompilerId
- Distribution.Simple: data CompilerInfo
- Distribution.Simple: data DebugInfoLevel
- Distribution.Simple: data OptimisationLevel
- Distribution.Simple: data PackageDB
- Distribution.Simple: data PerCompilerFlavor v
- Distribution.Simple: data ProfDetailLevel
- Distribution.Simple: defaultCompilerFlavor :: Maybe CompilerFlavor
- Distribution.Simple: extensionsToFlags :: Compiler -> [Extension] -> [Flag]
- Distribution.Simple: flagToDebugInfoLevel :: Maybe String -> DebugInfoLevel
- Distribution.Simple: flagToOptimisationLevel :: Maybe String -> OptimisationLevel
- Distribution.Simple: flagToProfDetailLevel :: String -> ProfDetailLevel
- Distribution.Simple: knownCompilerFlavors :: [CompilerFlavor]
- Distribution.Simple: knownProfDetailLevels :: [(String, [String], ProfDetailLevel)]
- Distribution.Simple: languageToFlags :: Compiler -> Maybe Language -> [Flag]
- Distribution.Simple: libraryDynDirSupported :: Compiler -> Bool
- Distribution.Simple: packageKeySupported :: Compiler -> Bool
- Distribution.Simple: parmakeSupported :: Compiler -> Bool
- Distribution.Simple: perCompilerFlavorToList :: PerCompilerFlavor v -> [(CompilerFlavor, v)]
- Distribution.Simple: profilingSupported :: Compiler -> Bool
- Distribution.Simple: reexportedModulesSupported :: Compiler -> Bool
- Distribution.Simple: registrationPackageDB :: PackageDBStack -> PackageDB
- Distribution.Simple: renamingPackageFlagsSupported :: Compiler -> Bool
- Distribution.Simple: showCompilerId :: Compiler -> String
- Distribution.Simple: showCompilerIdWithAbi :: Compiler -> String
- Distribution.Simple: showProfDetailLevel :: ProfDetailLevel -> String
- Distribution.Simple: type PackageDBStack = [PackageDB]
- Distribution.Simple: unifiedIPIDRequired :: Compiler -> Bool
- Distribution.Simple: unitIdSupported :: Compiler -> Bool
- Distribution.Simple: unknownCompilerInfo :: CompilerId -> AbiTag -> CompilerInfo
- Distribution.Simple: unsupportedExtensions :: Compiler -> [Extension] -> [Extension]
- Distribution.Simple: unsupportedLanguages :: Compiler -> [Language] -> [Language]
- Distribution.Simple.Compiler: type Flag = String
- Distribution.Simple.Configure: getInternalPackages :: GenericPackageDescription -> Map PackageName (Maybe UnqualComponentName)
- Distribution.Types.ConfVar: Flag :: FlagName -> ConfVar
- Distribution.Types.Dependency: notThisPackageVersion :: PackageIdentifier -> Dependency
- Distribution.Types.Dependency: thisPackageVersion :: PackageIdentifier -> Dependency
- Distribution.Types.Flag: MkFlag :: FlagName -> String -> Bool -> Bool -> Flag
- Distribution.Types.Flag: data Flag
- Distribution.Types.Flag: instance Control.DeepSeq.NFData Distribution.Types.Flag.Flag
- Distribution.Types.Flag: instance Data.Binary.Class.Binary Distribution.Types.Flag.Flag
- Distribution.Types.Flag: instance Data.Data.Data Distribution.Types.Flag.Flag
- Distribution.Types.Flag: instance Distribution.Utils.Structured.Structured Distribution.Types.Flag.Flag
- Distribution.Types.Flag: instance GHC.Classes.Eq Distribution.Types.Flag.Flag
- Distribution.Types.Flag: instance GHC.Generics.Generic Distribution.Types.Flag.Flag
- Distribution.Types.Flag: instance GHC.Show.Show Distribution.Types.Flag.Flag
- Distribution.Types.GenericPackageDescription.Lens: Flag :: FlagName -> ConfVar
- Distribution.Types.GenericPackageDescription.Lens: _Flag :: Traversal' ConfVar FlagName
- Distribution.Types.GenericPackageDescription.Lens: data Flag
- Distribution.Types.PackageDescription: [specVersionRaw] :: PackageDescription -> Either Version VersionRange
- Distribution.Types.PackageDescription: specVersion :: PackageDescription -> Version
- Distribution.Types.PackageDescription: specVersion' :: Either Version VersionRange -> Version
- Distribution.Types.PackageDescription.Lens: specVersionRaw :: Lens' PackageDescription (Either Version VersionRange)
- Distribution.Types.VersionRange: AnyVersionF :: VersionRangeF a
- Distribution.Types.VersionRange: VersionRangeParensF :: a -> VersionRangeF a
- Distribution.Types.VersionRange: WildcardVersionF :: Version -> VersionRangeF a
- Distribution.Types.VersionRange.Internal: AnyVersion :: VersionRange
- Distribution.Types.VersionRange.Internal: AnyVersionF :: VersionRangeF a
- Distribution.Types.VersionRange.Internal: VersionRangeParens :: VersionRange -> VersionRange
- Distribution.Types.VersionRange.Internal: VersionRangeParensF :: a -> VersionRangeF a
- Distribution.Types.VersionRange.Internal: WildcardVersion :: Version -> VersionRange
- Distribution.Types.VersionRange.Internal: WildcardVersionF :: Version -> VersionRangeF a
- Distribution.Utils.IOData: instance (a Data.Type.Equality.~ GHC.Types.Char) => Distribution.Utils.IOData.KnownIODataMode [a]
- Distribution.Utils.Structured: instance (i Data.Type.Equality.~ GHC.Generics.C, GHC.Generics.Constructor c, Distribution.Utils.Structured.GStructuredProd f) => Distribution.Utils.Structured.GStructuredSum (GHC.Generics.M1 i c f)
- Distribution.Utils.Structured: instance (i Data.Type.Equality.~ GHC.Generics.D, GHC.Generics.Datatype c, Distribution.Utils.Structured.GStructuredSum f) => Distribution.Utils.Structured.GStructured (GHC.Generics.M1 i c f)
- Distribution.Utils.Structured: instance (i Data.Type.Equality.~ GHC.Generics.S, Distribution.Utils.Structured.GStructuredProd f) => Distribution.Utils.Structured.GStructuredProd (GHC.Generics.M1 i c f)
- Distribution.Version: AnyVersionF :: VersionRangeF a
- Distribution.Version: VersionRangeParensF :: a -> VersionRangeF a
- Distribution.Version: WildcardVersionF :: Version -> VersionRangeF a
+ Distribution.CabalSpecVersion: CabalSpecV3_4 :: CabalSpecVersion
+ Distribution.CabalSpecVersion: instance Control.DeepSeq.NFData Distribution.CabalSpecVersion.CabalSpecVersion
+ Distribution.CabalSpecVersion: instance Data.Binary.Class.Binary Distribution.CabalSpecVersion.CabalSpecVersion
+ Distribution.CabalSpecVersion: instance Distribution.Utils.Structured.Structured Distribution.CabalSpecVersion.CabalSpecVersion
+ Distribution.Compat.CharParsing: signedIntegral :: (CharParsing m, Integral a) => m a
+ Distribution.Compat.DList: empty :: DList a
+ Distribution.Compat.Graph: instance (Distribution.Compat.Graph.IsNode a, Distribution.Compat.Graph.IsNode b, Distribution.Compat.Graph.Key a GHC.Types.~ Distribution.Compat.Graph.Key b) => Distribution.Compat.Graph.IsNode (Data.Either.Either a b)
+ Distribution.Compat.NonEmptySet: data NonEmptySet a
+ Distribution.Compat.NonEmptySet: delete :: Ord a => a -> NonEmptySet a -> Maybe (NonEmptySet a)
+ Distribution.Compat.NonEmptySet: fromNonEmpty :: Ord a => NonEmpty a -> NonEmptySet a
+ Distribution.Compat.NonEmptySet: insert :: Ord a => a -> NonEmptySet a -> NonEmptySet a
+ Distribution.Compat.NonEmptySet: instance (Data.Data.Data a, GHC.Classes.Ord a) => Data.Data.Data (Distribution.Compat.NonEmptySet.NonEmptySet a)
+ Distribution.Compat.NonEmptySet: instance (GHC.Read.Read a, GHC.Classes.Ord a) => GHC.Read.Read (Distribution.Compat.NonEmptySet.NonEmptySet a)
+ Distribution.Compat.NonEmptySet: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Distribution.Compat.NonEmptySet.NonEmptySet a)
+ Distribution.Compat.NonEmptySet: instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Distribution.Compat.NonEmptySet.NonEmptySet a)
+ Distribution.Compat.NonEmptySet: instance Data.Foldable.Foldable Distribution.Compat.NonEmptySet.NonEmptySet
+ Distribution.Compat.NonEmptySet: instance Distribution.Utils.Structured.Structured a => Distribution.Utils.Structured.Structured (Distribution.Compat.NonEmptySet.NonEmptySet a)
+ Distribution.Compat.NonEmptySet: instance GHC.Classes.Eq a => GHC.Classes.Eq (Distribution.Compat.NonEmptySet.NonEmptySet a)
+ Distribution.Compat.NonEmptySet: instance GHC.Classes.Ord a => GHC.Base.Semigroup (Distribution.Compat.NonEmptySet.NonEmptySet a)
+ Distribution.Compat.NonEmptySet: instance GHC.Classes.Ord a => GHC.Classes.Ord (Distribution.Compat.NonEmptySet.NonEmptySet a)
+ Distribution.Compat.NonEmptySet: instance GHC.Show.Show a => GHC.Show.Show (Distribution.Compat.NonEmptySet.NonEmptySet a)
+ Distribution.Compat.NonEmptySet: map :: Ord b => (a -> b) -> NonEmptySet a -> NonEmptySet b
+ Distribution.Compat.NonEmptySet: member :: Ord a => a -> NonEmptySet a -> Bool
+ Distribution.Compat.NonEmptySet: singleton :: a -> NonEmptySet a
+ Distribution.Compat.NonEmptySet: toList :: NonEmptySet a -> [a]
+ Distribution.Compat.NonEmptySet: toNonEmpty :: NonEmptySet a -> NonEmpty a
+ Distribution.Compat.NonEmptySet: toSet :: NonEmptySet a -> Set a
+ Distribution.Compat.Prelude.Internal: (<+>) :: Doc -> Doc -> Doc
+ Distribution.Compat.Prelude.Internal: Const :: a -> Const a (b :: k)
+ Distribution.Compat.Prelude.Internal: ExitFailure :: Int -> ExitCode
+ Distribution.Compat.Prelude.Internal: ExitSuccess :: ExitCode
+ Distribution.Compat.Prelude.Internal: SomeException :: e -> SomeException
+ Distribution.Compat.Prelude.Internal: [getConst] :: Const a (b :: k) -> a
+ Distribution.Compat.Prelude.Internal: absurd :: Void -> a
+ Distribution.Compat.Prelude.Internal: catch :: Exception e => IO a -> (e -> IO a) -> IO a
+ Distribution.Compat.Prelude.Internal: catchExit :: IO a -> (ExitCode -> IO a) -> IO a
+ Distribution.Compat.Prelude.Internal: catchIO :: IO a -> (IOException -> IO a) -> IO a
+ Distribution.Compat.Prelude.Internal: class (Typeable e, Show e) => Exception e
+ Distribution.Compat.Prelude.Internal: class Monad m => MonadFail (m :: Type -> Type)
+ Distribution.Compat.Prelude.Internal: comparing :: Ord a => (b -> a) -> b -> b -> Ordering
+ Distribution.Compat.Prelude.Internal: data ExitCode
+ Distribution.Compat.Prelude.Internal: data IO a
+ Distribution.Compat.Prelude.Internal: data IOException
+ Distribution.Compat.Prelude.Internal: data NonEmptySet a
+ Distribution.Compat.Prelude.Internal: data Proxy (t :: k)
+ Distribution.Compat.Prelude.Internal: data SomeException
+ Distribution.Compat.Prelude.Internal: data Void
+ Distribution.Compat.Prelude.Internal: deepseq :: NFData a => a -> b -> b
+ Distribution.Compat.Prelude.Internal: displayException :: Exception e => e -> String
+ Distribution.Compat.Prelude.Internal: evaluate :: a -> IO a
+ Distribution.Compat.Prelude.Internal: exitFailure :: IO a
+ Distribution.Compat.Prelude.Internal: exitSuccess :: IO a
+ Distribution.Compat.Prelude.Internal: exitWith :: ExitCode -> IO a
+ Distribution.Compat.Prelude.Internal: force :: NFData a => a -> a
+ Distribution.Compat.Prelude.Internal: fromException :: Exception e => SomeException -> Maybe e
+ Distribution.Compat.Prelude.Internal: guard :: Alternative f => Bool -> f ()
+ Distribution.Compat.Prelude.Internal: infixl 0 `on`
+ Distribution.Compat.Prelude.Internal: join :: Monad m => m (m a) -> m a
+ Distribution.Compat.Prelude.Internal: newtype Const a (b :: k)
+ Distribution.Compat.Prelude.Internal: on :: (b -> b -> c) -> (a -> b) -> a -> a -> c
+ Distribution.Compat.Prelude.Internal: partition :: (a -> Bool) -> [a] -> ([a], [a])
+ Distribution.Compat.Prelude.Internal: partitionEithers :: [Either a b] -> ([a], [b])
+ Distribution.Compat.Prelude.Internal: throwIO :: Exception e => e -> IO a
+ Distribution.Compat.Prelude.Internal: toException :: Exception e => e -> SomeException
+ Distribution.Compat.Prelude.Internal: trace :: String -> a -> a
+ Distribution.Compat.Prelude.Internal: traceShow :: Show a => a -> b -> b
+ Distribution.Compat.Prelude.Internal: traceShowId :: Show a => a -> a
+ Distribution.Compat.Prelude.Internal: tryIO :: IO a -> IO (Either IOException a)
+ Distribution.Compat.Prelude.Internal: vacuous :: Functor f => f Void -> f a
+ Distribution.Compiler: instance Data.Foldable.Foldable Distribution.Compiler.PerCompilerFlavor
+ Distribution.Compiler: instance Data.Traversable.Traversable Distribution.Compiler.PerCompilerFlavor
+ Distribution.Compiler: instance GHC.Base.Functor Distribution.Compiler.PerCompilerFlavor
+ Distribution.FieldGrammar: availableSinceWarn :: FieldGrammar c g => CabalSpecVersion -> g s a -> g s a
+ Distribution.FieldGrammar.Class: availableSinceWarn :: FieldGrammar c g => CabalSpecVersion -> g s a -> g s a
+ Distribution.FieldGrammar.FieldDescrs: instance (Distribution.Parsec.Parsec a, Distribution.Pretty.Pretty a) => Distribution.FieldGrammar.FieldDescrs.ParsecPretty a
+ Distribution.FieldGrammar.FieldDescrs: instance Distribution.FieldGrammar.Class.FieldGrammar Distribution.FieldGrammar.FieldDescrs.ParsecPretty Distribution.FieldGrammar.FieldDescrs.FieldDescrs
+ Distribution.FieldGrammar.Newtypes: CommaFSep :: CommaFSep
+ Distribution.FieldGrammar.Newtypes: CommaVCat :: CommaVCat
+ Distribution.FieldGrammar.Newtypes: FSep :: FSep
+ Distribution.FieldGrammar.Newtypes: FilePathNT :: String -> FilePathNT
+ Distribution.FieldGrammar.Newtypes: MQuoted :: a -> MQuoted a
+ Distribution.FieldGrammar.Newtypes: NoCommaFSep :: NoCommaFSep
+ Distribution.FieldGrammar.Newtypes: SpecLicense :: Either License License -> SpecLicense
+ Distribution.FieldGrammar.Newtypes: SpecVersion :: CabalSpecVersion -> SpecVersion
+ Distribution.FieldGrammar.Newtypes: TestedWith :: (CompilerFlavor, VersionRange) -> TestedWith
+ Distribution.FieldGrammar.Newtypes: Token :: String -> Token
+ Distribution.FieldGrammar.Newtypes: Token' :: String -> Token'
+ Distribution.FieldGrammar.Newtypes: VCat :: VCat
+ Distribution.FieldGrammar.Newtypes: [getFilePathNT] :: FilePathNT -> String
+ Distribution.FieldGrammar.Newtypes: [getMQuoted] :: MQuoted a -> a
+ Distribution.FieldGrammar.Newtypes: [getSpecLicense] :: SpecLicense -> Either License License
+ Distribution.FieldGrammar.Newtypes: [getSpecVersion] :: SpecVersion -> CabalSpecVersion
+ Distribution.FieldGrammar.Newtypes: [getTestedWith] :: TestedWith -> (CompilerFlavor, VersionRange)
+ Distribution.FieldGrammar.Newtypes: [getToken'] :: Token' -> String
+ Distribution.FieldGrammar.Newtypes: [getToken] :: Token -> String
+ Distribution.FieldGrammar.Newtypes: alaList :: sep -> [a] -> List sep (Identity a) a
+ Distribution.FieldGrammar.Newtypes: alaList' :: sep -> (a -> b) -> [a] -> List sep b a
+ Distribution.FieldGrammar.Newtypes: alaSet :: sep -> Set a -> Set' sep (Identity a) a
+ Distribution.FieldGrammar.Newtypes: alaSet' :: sep -> (a -> b) -> Set a -> Set' sep b a
+ Distribution.FieldGrammar.Newtypes: class Sep sep
+ Distribution.FieldGrammar.Newtypes: data CommaFSep
+ Distribution.FieldGrammar.Newtypes: data CommaVCat
+ Distribution.FieldGrammar.Newtypes: data FSep
+ Distribution.FieldGrammar.Newtypes: data List sep b a
+ Distribution.FieldGrammar.Newtypes: data NoCommaFSep
+ Distribution.FieldGrammar.Newtypes: data Set' sep b a
+ Distribution.FieldGrammar.Newtypes: data VCat
+ Distribution.FieldGrammar.Newtypes: instance (Distribution.Compat.Newtype.Newtype a b, Distribution.FieldGrammar.Newtypes.Sep sep, Distribution.Parsec.Parsec b) => Distribution.Parsec.Parsec (Distribution.FieldGrammar.Newtypes.List sep b a)
+ Distribution.FieldGrammar.Newtypes: instance (Distribution.Compat.Newtype.Newtype a b, Distribution.FieldGrammar.Newtypes.Sep sep, Distribution.Pretty.Pretty b) => Distribution.Pretty.Pretty (Distribution.FieldGrammar.Newtypes.List sep b a)
+ Distribution.FieldGrammar.Newtypes: instance (Distribution.Compat.Newtype.Newtype a b, Distribution.FieldGrammar.Newtypes.Sep sep, Distribution.Pretty.Pretty b) => Distribution.Pretty.Pretty (Distribution.FieldGrammar.Newtypes.Set' sep b a)
+ Distribution.FieldGrammar.Newtypes: instance (Distribution.Compat.Newtype.Newtype a b, GHC.Classes.Ord a, Distribution.FieldGrammar.Newtypes.Sep sep, Distribution.Parsec.Parsec b) => Distribution.Parsec.Parsec (Distribution.FieldGrammar.Newtypes.Set' sep b a)
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Compat.Newtype.Newtype (Data.Either.Either Distribution.SPDX.License.License Distribution.License.License) Distribution.FieldGrammar.Newtypes.SpecLicense
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Compat.Newtype.Newtype (Data.Set.Internal.Set a) (Distribution.FieldGrammar.Newtypes.Set' sep wrapper a)
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Compat.Newtype.Newtype (Distribution.Compiler.CompilerFlavor, Distribution.Types.VersionRange.Internal.VersionRange) Distribution.FieldGrammar.Newtypes.TestedWith
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Compat.Newtype.Newtype Distribution.CabalSpecVersion.CabalSpecVersion Distribution.FieldGrammar.Newtypes.SpecVersion
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Compat.Newtype.Newtype GHC.Base.String Distribution.FieldGrammar.Newtypes.FilePathNT
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Compat.Newtype.Newtype GHC.Base.String Distribution.FieldGrammar.Newtypes.Token
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Compat.Newtype.Newtype GHC.Base.String Distribution.FieldGrammar.Newtypes.Token'
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Compat.Newtype.Newtype [a] (Distribution.FieldGrammar.Newtypes.List sep wrapper a)
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Compat.Newtype.Newtype a (Distribution.FieldGrammar.Newtypes.MQuoted a)
+ Distribution.FieldGrammar.Newtypes: instance Distribution.FieldGrammar.Newtypes.Sep Distribution.FieldGrammar.Newtypes.CommaFSep
+ Distribution.FieldGrammar.Newtypes: instance Distribution.FieldGrammar.Newtypes.Sep Distribution.FieldGrammar.Newtypes.CommaVCat
+ Distribution.FieldGrammar.Newtypes: instance Distribution.FieldGrammar.Newtypes.Sep Distribution.FieldGrammar.Newtypes.FSep
+ Distribution.FieldGrammar.Newtypes: instance Distribution.FieldGrammar.Newtypes.Sep Distribution.FieldGrammar.Newtypes.NoCommaFSep
+ Distribution.FieldGrammar.Newtypes: instance Distribution.FieldGrammar.Newtypes.Sep Distribution.FieldGrammar.Newtypes.VCat
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Parsec.Parsec Distribution.FieldGrammar.Newtypes.FilePathNT
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Parsec.Parsec Distribution.FieldGrammar.Newtypes.SpecLicense
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Parsec.Parsec Distribution.FieldGrammar.Newtypes.SpecVersion
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Parsec.Parsec Distribution.FieldGrammar.Newtypes.TestedWith
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Parsec.Parsec Distribution.FieldGrammar.Newtypes.Token
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Parsec.Parsec Distribution.FieldGrammar.Newtypes.Token'
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Parsec.Parsec a => Distribution.Parsec.Parsec (Distribution.FieldGrammar.Newtypes.MQuoted a)
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Pretty.Pretty Distribution.FieldGrammar.Newtypes.FilePathNT
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Pretty.Pretty Distribution.FieldGrammar.Newtypes.SpecLicense
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Pretty.Pretty Distribution.FieldGrammar.Newtypes.SpecVersion
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Pretty.Pretty Distribution.FieldGrammar.Newtypes.TestedWith
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Pretty.Pretty Distribution.FieldGrammar.Newtypes.Token
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Pretty.Pretty Distribution.FieldGrammar.Newtypes.Token'
+ Distribution.FieldGrammar.Newtypes: instance Distribution.Pretty.Pretty a => Distribution.Pretty.Pretty (Distribution.FieldGrammar.Newtypes.MQuoted a)
+ Distribution.FieldGrammar.Newtypes: instance GHC.Classes.Eq Distribution.FieldGrammar.Newtypes.SpecVersion
+ Distribution.FieldGrammar.Newtypes: instance GHC.Show.Show Distribution.FieldGrammar.Newtypes.SpecVersion
+ Distribution.FieldGrammar.Newtypes: newtype FilePathNT
+ Distribution.FieldGrammar.Newtypes: newtype MQuoted a
+ Distribution.FieldGrammar.Newtypes: newtype SpecLicense
+ Distribution.FieldGrammar.Newtypes: newtype SpecVersion
+ Distribution.FieldGrammar.Newtypes: newtype TestedWith
+ Distribution.FieldGrammar.Newtypes: newtype Token
+ Distribution.FieldGrammar.Newtypes: newtype Token'
+ Distribution.FieldGrammar.Newtypes: parseSep :: (Sep sep, CabalParsing m) => Proxy sep -> m a -> m [a]
+ Distribution.FieldGrammar.Newtypes: prettySep :: Sep sep => Proxy sep -> [Doc] -> Doc
+ Distribution.FieldGrammar.Parsec: instance Distribution.FieldGrammar.Class.FieldGrammar Distribution.Parsec.Parsec Distribution.FieldGrammar.Parsec.ParsecFieldGrammar
+ Distribution.FieldGrammar.Pretty: instance Distribution.FieldGrammar.Class.FieldGrammar Distribution.Pretty.Pretty Distribution.FieldGrammar.Pretty.PrettyFieldGrammar
+ Distribution.Fields: PWTExperimental :: PWarnType
+ Distribution.Fields: PWTSpecVersion :: PWarnType
+ Distribution.Fields: PWTVersionOperator :: PWarnType
+ Distribution.Fields: PWTVersionWildcard :: PWarnType
+ Distribution.Fields.ParseResult: withoutWarnings :: ParseResult a -> ParseResult a
+ Distribution.ModuleName: data ModuleName
+ Distribution.PackageDescription.Configuration: instance GHC.Base.Semigroup Distribution.PackageDescription.Configuration.DepMapUnion
+ Distribution.PackageDescription.Configuration: transformAllBuildDependsN :: ([Dependency] -> [Dependency]) -> GenericPackageDescription -> GenericPackageDescription
+ Distribution.PackageDescription.FieldGrammar: formatDependencyList :: [Dependency] -> List CommaVCat (Identity Dependency) Dependency
+ Distribution.PackageDescription.FieldGrammar: formatExposedModules :: [ModuleName] -> List VCat (MQuoted ModuleName) ModuleName
+ Distribution.PackageDescription.FieldGrammar: formatExtraSourceFiles :: [FilePath] -> List VCat FilePathNT FilePath
+ Distribution.PackageDescription.FieldGrammar: formatHsSourceDirs :: [FilePath] -> List FSep FilePathNT FilePath
+ Distribution.PackageDescription.FieldGrammar: formatMixinList :: [Mixin] -> List CommaVCat (Identity Mixin) Mixin
+ Distribution.PackageDescription.FieldGrammar: formatOtherExtensions :: [Extension] -> List FSep (MQuoted Extension) Extension
+ Distribution.PackageDescription.FieldGrammar: formatOtherModules :: [ModuleName] -> List VCat (MQuoted ModuleName) ModuleName
+ Distribution.Parsec: PWTExperimental :: PWarnType
+ Distribution.Parsec: PWTSpecVersion :: PWarnType
+ Distribution.Parsec: PWTVersionOperator :: PWarnType
+ Distribution.Parsec: PWTVersionWildcard :: PWarnType
+ Distribution.Parsec: explicitEitherParsec' :: CabalSpecVersion -> ParsecParser a -> String -> Either String a
+ Distribution.Parsec: parsecCommaNonEmpty :: CabalParsing m => m a -> m (NonEmpty a)
+ Distribution.Parsec: parsecLeadingCommaNonEmpty :: CabalParsing m => m a -> m (NonEmpty a)
+ Distribution.Parsec: simpleParsec' :: Parsec a => CabalSpecVersion -> String -> Maybe a
+ Distribution.Parsec: simpleParsecBS :: Parsec a => ByteString -> Maybe a
+ Distribution.Parsec: simpleParsecW' :: Parsec a => CabalSpecVersion -> String -> Maybe a
+ Distribution.Parsec.Warning: PWTExperimental :: PWarnType
+ Distribution.Parsec.Warning: PWTSpecVersion :: PWarnType
+ Distribution.Parsec.Warning: PWTVersionOperator :: PWarnType
+ Distribution.Parsec.Warning: PWTVersionWildcard :: PWarnType
+ Distribution.Pretty: instance Distribution.Pretty.Pretty Text.PrettyPrint.HughesPJ.Doc
+ Distribution.SPDX: CAL_1_0 :: LicenseId
+ Distribution.SPDX: CAL_1_0_Combined_Work_Exception :: LicenseId
+ Distribution.SPDX: CERN_OHL_P_2_0 :: LicenseId
+ Distribution.SPDX: CERN_OHL_S_2_0 :: LicenseId
+ Distribution.SPDX: CERN_OHL_W_2_0 :: LicenseId
+ Distribution.SPDX: Etalab_2_0 :: LicenseId
+ Distribution.SPDX: GPL_3_0_linking_exception :: LicenseExceptionId
+ Distribution.SPDX: GPL_3_0_linking_source_exception :: LicenseExceptionId
+ Distribution.SPDX: Hippocratic_2_1 :: LicenseId
+ Distribution.SPDX: LGPL_3_0_linking_exception :: LicenseExceptionId
+ Distribution.SPDX: Libselinux_1_0 :: LicenseId
+ Distribution.SPDX: LicenseListVersion_3_9 :: LicenseListVersion
+ Distribution.SPDX: MulanPSL_1_0 :: LicenseId
+ Distribution.SPDX: MulanPSL_2_0 :: LicenseId
+ Distribution.SPDX: NCGL_UK_2_0 :: LicenseId
+ Distribution.SPDX: NTP_0 :: LicenseId
+ Distribution.SPDX: OFL_1_0_RFN :: LicenseId
+ Distribution.SPDX: OFL_1_0_no_RFN :: LicenseId
+ Distribution.SPDX: OFL_1_1_RFN :: LicenseId
+ Distribution.SPDX: OFL_1_1_no_RFN :: LicenseId
+ Distribution.SPDX: OGC_1_0 :: LicenseId
+ Distribution.SPDX: OGL_Canada_2_0 :: LicenseId
+ Distribution.SPDX: O_UDA_1_0 :: LicenseId
+ Distribution.SPDX: PSF_2_0 :: LicenseId
+ Distribution.SPDX: Parity_7_0_0 :: LicenseId
+ Distribution.SPDX: PolyForm_Noncommercial_1_0_0 :: LicenseId
+ Distribution.SPDX: PolyForm_Small_Business_1_0_0 :: LicenseId
+ Distribution.SPDX: SHL_2_0 :: LicenseExceptionId
+ Distribution.SPDX: SHL_2_1 :: LicenseExceptionId
+ Distribution.SPDX: SSH_OpenSSH :: LicenseId
+ Distribution.SPDX: SSH_short :: LicenseId
+ Distribution.SPDX: UCL_1_0 :: LicenseId
+ Distribution.SPDX.LicenseExceptionId: GPL_3_0_linking_exception :: LicenseExceptionId
+ Distribution.SPDX.LicenseExceptionId: GPL_3_0_linking_source_exception :: LicenseExceptionId
+ Distribution.SPDX.LicenseExceptionId: LGPL_3_0_linking_exception :: LicenseExceptionId
+ Distribution.SPDX.LicenseExceptionId: SHL_2_0 :: LicenseExceptionId
+ Distribution.SPDX.LicenseExceptionId: SHL_2_1 :: LicenseExceptionId
+ Distribution.SPDX.LicenseId: CAL_1_0 :: LicenseId
+ Distribution.SPDX.LicenseId: CAL_1_0_Combined_Work_Exception :: LicenseId
+ Distribution.SPDX.LicenseId: CERN_OHL_P_2_0 :: LicenseId
+ Distribution.SPDX.LicenseId: CERN_OHL_S_2_0 :: LicenseId
+ Distribution.SPDX.LicenseId: CERN_OHL_W_2_0 :: LicenseId
+ Distribution.SPDX.LicenseId: Etalab_2_0 :: LicenseId
+ Distribution.SPDX.LicenseId: Hippocratic_2_1 :: LicenseId
+ Distribution.SPDX.LicenseId: Libselinux_1_0 :: LicenseId
+ Distribution.SPDX.LicenseId: MulanPSL_1_0 :: LicenseId
+ Distribution.SPDX.LicenseId: MulanPSL_2_0 :: LicenseId
+ Distribution.SPDX.LicenseId: NCGL_UK_2_0 :: LicenseId
+ Distribution.SPDX.LicenseId: NTP_0 :: LicenseId
+ Distribution.SPDX.LicenseId: OFL_1_0_RFN :: LicenseId
+ Distribution.SPDX.LicenseId: OFL_1_0_no_RFN :: LicenseId
+ Distribution.SPDX.LicenseId: OFL_1_1_RFN :: LicenseId
+ Distribution.SPDX.LicenseId: OFL_1_1_no_RFN :: LicenseId
+ Distribution.SPDX.LicenseId: OGC_1_0 :: LicenseId
+ Distribution.SPDX.LicenseId: OGL_Canada_2_0 :: LicenseId
+ Distribution.SPDX.LicenseId: O_UDA_1_0 :: LicenseId
+ Distribution.SPDX.LicenseId: PSF_2_0 :: LicenseId
+ Distribution.SPDX.LicenseId: Parity_7_0_0 :: LicenseId
+ Distribution.SPDX.LicenseId: PolyForm_Noncommercial_1_0_0 :: LicenseId
+ Distribution.SPDX.LicenseId: PolyForm_Small_Business_1_0_0 :: LicenseId
+ Distribution.SPDX.LicenseId: SSH_OpenSSH :: LicenseId
+ Distribution.SPDX.LicenseId: SSH_short :: LicenseId
+ Distribution.SPDX.LicenseId: UCL_1_0 :: LicenseId
+ Distribution.SPDX.LicenseId: licenseIsFsfLibre :: LicenseId -> Bool
+ Distribution.SPDX.LicenseListVersion: LicenseListVersion_3_9 :: LicenseListVersion
+ Distribution.Simple.BuildTarget: instance GHC.Enum.Bounded Distribution.Simple.BuildTarget.ComponentKind
+ Distribution.Simple.BuildTarget: instance GHC.Enum.Enum Distribution.Simple.BuildTarget.ComponentKind
+ Distribution.Simple.Command: liftOptionL :: ALens' b a -> OptionField a -> OptionField b
+ Distribution.Simple.Compiler: libraryVisibilitySupported :: Compiler -> Bool
+ Distribution.Simple.Compiler: type CompilerFlag = String
+ Distribution.Simple.Configure: getInternalLibraries :: GenericPackageDescription -> Set LibraryName
+ Distribution.Simple.Flag: flagElim :: b -> (a -> b) -> Flag a -> b
+ Distribution.Simple.GHC: getGhcAppDir :: IO FilePath
+ Distribution.Simple.PackageIndex: searchWithPredicate :: PackageIndex a -> (String -> Bool) -> [a]
+ Distribution.Simple.Setup: instance GHC.Show.Show Distribution.Simple.Setup.BenchmarkFlags
+ Distribution.Simple.Setup: instance GHC.Show.Show Distribution.Simple.Setup.TestFlags
+ Distribution.Simple.SrcDist: listPackageSourcesWithDie :: Verbosity -> (Verbosity -> String -> IO [FilePath]) -> FilePath -> PackageDescription -> [PPSuffixHandler] -> IO [FilePath]
+ Distribution.Simple.Utils: findAllFilesCwdWithExtension :: FilePath -> [String] -> [FilePath] -> FilePath -> IO [FilePath]
+ Distribution.Simple.Utils: findFileCwd :: Verbosity -> FilePath -> [FilePath] -> FilePath -> IO FilePath
+ Distribution.Simple.Utils: findFileCwdWithExtension :: FilePath -> [String] -> [FilePath] -> FilePath -> IO (Maybe FilePath)
+ Distribution.Simple.Utils: findPackageDescCwd :: FilePath -> FilePath -> IO (Either String FilePath)
+ Distribution.Simple.Utils: rawSystemIOWithEnvAndAction :: Verbosity -> FilePath -> [String] -> Maybe FilePath -> Maybe [(String, String)] -> IO a -> Maybe Handle -> Maybe Handle -> Maybe Handle -> IO (ExitCode, a)
+ Distribution.Simple.Utils: rewriteFileLBS :: Verbosity -> FilePath -> ByteString -> IO ()
+ Distribution.Simple.Utils: tryFindPackageDescCwd :: Verbosity -> FilePath -> FilePath -> IO FilePath
+ Distribution.Types.ConfVar: PackageFlag :: FlagName -> ConfVar
+ Distribution.Types.Dependency: mainLibSet :: NonEmptySet LibraryName
+ Distribution.Types.Dependency: mkDependency :: PackageName -> VersionRange -> NonEmptySet LibraryName -> Dependency
+ Distribution.Types.Flag: MkPackageFlag :: FlagName -> String -> Bool -> Bool -> PackageFlag
+ Distribution.Types.Flag: data PackageFlag
+ Distribution.Types.Flag: instance Control.DeepSeq.NFData Distribution.Types.Flag.PackageFlag
+ Distribution.Types.Flag: instance Data.Binary.Class.Binary Distribution.Types.Flag.PackageFlag
+ Distribution.Types.Flag: instance Data.Data.Data Distribution.Types.Flag.PackageFlag
+ Distribution.Types.Flag: instance Distribution.Parsec.Parsec Distribution.Types.Flag.FlagAssignment
+ Distribution.Types.Flag: instance Distribution.Pretty.Pretty Distribution.Types.Flag.FlagAssignment
+ Distribution.Types.Flag: instance Distribution.Utils.Structured.Structured Distribution.Types.Flag.PackageFlag
+ Distribution.Types.Flag: instance GHC.Classes.Eq Distribution.Types.Flag.PackageFlag
+ Distribution.Types.Flag: instance GHC.Generics.Generic Distribution.Types.Flag.PackageFlag
+ Distribution.Types.Flag: instance GHC.Show.Show Distribution.Types.Flag.PackageFlag
+ Distribution.Types.Flag: legacyParsecFlagAssignment :: CabalParsing m => m FlagAssignment
+ Distribution.Types.Flag: legacyShowFlagAssignment :: FlagAssignment -> String
+ Distribution.Types.Flag: legacyShowFlagAssignment' :: FlagAssignment -> [String]
+ Distribution.Types.Flag: parsecFlagAssignmentNonEmpty :: CabalParsing m => m FlagAssignment
+ Distribution.Types.Flag: showFlagAssignment :: FlagAssignment -> String
+ Distribution.Types.GenericPackageDescription: [gpdScannedVersion] :: GenericPackageDescription -> Maybe Version
+ Distribution.Types.GenericPackageDescription.Lens: PackageFlag :: FlagName -> ConfVar
+ Distribution.Types.GenericPackageDescription.Lens: _PackageFlag :: Traversal' ConfVar FlagName
+ Distribution.Types.GenericPackageDescription.Lens: data PackageFlag
+ Distribution.Types.GenericPackageDescription.Lens: gpdScannedVersion :: Lens' GenericPackageDescription (Maybe Version)
+ Distribution.Types.Mixin: [mixinLibraryName] :: Mixin -> LibraryName
+ Distribution.Types.Mixin: mkMixin :: PackageName -> LibraryName -> IncludeRenaming -> Mixin
+ Distribution.Types.Mixin: normaliseMixin :: Mixin -> Mixin
+ Distribution.Types.PackageDescription: [specVersion] :: PackageDescription -> CabalSpecVersion
+ Distribution.Types.PackageDescription.Lens: specVersion :: Lens' PackageDescription CabalSpecVersion
+ Distribution.Types.PackageName: mkPackageNameST :: ShortText -> PackageName
+ Distribution.Types.PackageName: unPackageNameST :: PackageName -> ShortText
+ Distribution.Types.PackageVersionConstraint: simplifyPackageVersionConstraint :: PackageVersionConstraint -> PackageVersionConstraint
+ Distribution.Types.PackageVersionConstraint: thisPackageVersionConstraint :: PackageIdentifier -> PackageVersionConstraint
+ Distribution.Types.SourceRepo: KnownRepoType :: KnownRepoType -> RepoType
+ Distribution.Types.SourceRepo: Pijul :: KnownRepoType
+ Distribution.Types.SourceRepo: data KnownRepoType
+ Distribution.Types.SourceRepo: instance Control.DeepSeq.NFData Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance Data.Binary.Class.Binary Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance Data.Data.Data Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance Distribution.Parsec.Parsec Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance Distribution.Pretty.Pretty Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance Distribution.Utils.Structured.Structured Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance GHC.Classes.Eq Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance GHC.Classes.Ord Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance GHC.Enum.Bounded Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance GHC.Enum.Enum Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance GHC.Generics.Generic Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance GHC.Read.Read Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.SourceRepo: instance GHC.Show.Show Distribution.Types.SourceRepo.KnownRepoType
+ Distribution.Types.UnqualComponentName: unUnqualComponentNameST :: UnqualComponentName -> ShortText
+ Distribution.Types.VersionRange: isAnyVersion :: VersionRange -> Bool
+ Distribution.Types.VersionRange: isAnyVersionLight :: VersionRange -> Bool
+ Distribution.Types.VersionRange.Internal: wildcardUpperBound :: Version -> Version
+ Distribution.Utils.Generic: fstOf3 :: (a, b, c) -> a
+ Distribution.Utils.Generic: sndOf3 :: (a, b, c) -> b
+ Distribution.Utils.Generic: trdOf3 :: (a, b, c) -> c
+ Distribution.Utils.IOData: instance (a GHC.Types.~ GHC.Types.Char) => Distribution.Utils.IOData.KnownIODataMode [a]
+ Distribution.Utils.MD5: md5FromInteger :: Integer -> MD5
+ Distribution.Utils.Structured: instance (i GHC.Types.~ GHC.Generics.C, GHC.Generics.Constructor c, Distribution.Utils.Structured.GStructuredProd f) => Distribution.Utils.Structured.GStructuredSum (GHC.Generics.M1 i c f)
+ Distribution.Utils.Structured: instance (i GHC.Types.~ GHC.Generics.D, GHC.Generics.Datatype c, Distribution.Utils.Structured.GStructuredSum f) => Distribution.Utils.Structured.GStructured (GHC.Generics.M1 i c f)
+ Distribution.Utils.Structured: instance (i GHC.Types.~ GHC.Generics.S, Distribution.Utils.Structured.GStructuredProd f) => Distribution.Utils.Structured.GStructuredProd (GHC.Generics.M1 i c f)
+ Distribution.Verbosity: instance Distribution.Parsec.Parsec Distribution.Verbosity.Verbosity
+ Distribution.Verbosity: instance Distribution.Pretty.Pretty Distribution.Verbosity.Verbosity
+ Distribution.Verbosity: isVerboseStderr :: Verbosity -> Bool
+ Distribution.Verbosity: verboseNoStderr :: Verbosity -> Verbosity
+ Distribution.Verbosity: verboseStderr :: Verbosity -> Verbosity
+ Distribution.Verbosity.Internal: VStderr :: VerbosityFlag
+ Language.Haskell.Extension: LexicalNegation :: KnownExtension
+ Language.Haskell.Extension: LinearTypes :: KnownExtension
+ Language.Haskell.Extension: QualifiedDo :: KnownExtension
- Distribution.Backpack.ComponentsGraph: componentCycleMsg :: [ComponentName] -> Doc
+ Distribution.Backpack.ComponentsGraph: componentCycleMsg :: PackageIdentifier -> [ComponentName] -> Doc
- Distribution.CabalSpecVersion: cabalSpecFromVersionDigits :: [Int] -> CabalSpecVersion
+ Distribution.CabalSpecVersion: cabalSpecFromVersionDigits :: [Int] -> Maybe CabalSpecVersion
- Distribution.Compat.Prelude.Internal: (!!) :: () => [a] -> Int -> a
+ Distribution.Compat.Prelude.Internal: (!!) :: [a] -> Int -> a
- Distribution.Compat.Prelude.Internal: ($!) :: () => (a -> b) -> a -> b
+ Distribution.Compat.Prelude.Internal: ($!) :: forall (r :: RuntimeRep) a (b :: TYPE r). (a -> b) -> a -> b
- Distribution.Compat.Prelude.Internal: ($) :: () => (a -> b) -> a -> b
+ Distribution.Compat.Prelude.Internal: ($) :: forall (r :: RuntimeRep) a (b :: TYPE r). (a -> b) -> a -> b
- Distribution.Compat.Prelude.Internal: (++) :: () => [a] -> [a] -> [a]
+ Distribution.Compat.Prelude.Internal: (++) :: [a] -> [a] -> [a]
- Distribution.Compat.Prelude.Internal: (.) :: () => (b -> c) -> (a -> b) -> a -> c
+ Distribution.Compat.Prelude.Internal: (.) :: (b -> c) -> (a -> b) -> a -> c
- Distribution.Compat.Prelude.Internal: Proxy :: Proxy
+ Distribution.Compat.Prelude.Internal: Proxy :: Proxy (t :: k)
- Distribution.Compat.Prelude.Internal: asTypeOf :: () => a -> a -> a
+ Distribution.Compat.Prelude.Internal: asTypeOf :: a -> a -> a
- Distribution.Compat.Prelude.Internal: break :: () => (a -> Bool) -> [a] -> ([a], [a])
+ Distribution.Compat.Prelude.Internal: break :: (a -> Bool) -> [a] -> ([a], [a])
- Distribution.Compat.Prelude.Internal: catMaybes :: () => [Maybe a] -> [a]
+ Distribution.Compat.Prelude.Internal: catMaybes :: [Maybe a] -> [a]
- Distribution.Compat.Prelude.Internal: const :: () => a -> b -> a
+ Distribution.Compat.Prelude.Internal: const :: a -> b -> a
- Distribution.Compat.Prelude.Internal: curry :: () => ((a, b) -> c) -> a -> b -> c
+ Distribution.Compat.Prelude.Internal: curry :: ((a, b) -> c) -> a -> b -> c
- Distribution.Compat.Prelude.Internal: cycle :: () => [a] -> [a]
+ Distribution.Compat.Prelude.Internal: cycle :: [a] -> [a]
- Distribution.Compat.Prelude.Internal: drop :: () => Int -> [a] -> [a]
+ Distribution.Compat.Prelude.Internal: drop :: Int -> [a] -> [a]
- Distribution.Compat.Prelude.Internal: dropWhile :: () => (a -> Bool) -> [a] -> [a]
+ Distribution.Compat.Prelude.Internal: dropWhile :: (a -> Bool) -> [a] -> [a]
- Distribution.Compat.Prelude.Internal: either :: () => (a -> c) -> (b -> c) -> Either a b -> c
+ Distribution.Compat.Prelude.Internal: either :: (a -> c) -> (b -> c) -> Either a b -> c
- Distribution.Compat.Prelude.Internal: error :: HasCallStack => [Char] -> a
+ Distribution.Compat.Prelude.Internal: error :: forall (r :: RuntimeRep) (a :: TYPE r). HasCallStack => [Char] -> a
- Distribution.Compat.Prelude.Internal: errorWithoutStackTrace :: () => [Char] -> a
+ Distribution.Compat.Prelude.Internal: errorWithoutStackTrace :: forall (r :: RuntimeRep) (a :: TYPE r). [Char] -> a
- Distribution.Compat.Prelude.Internal: fail :: Monad m => String -> m a
+ Distribution.Compat.Prelude.Internal: fail :: MonadFail m => String -> m a
- Distribution.Compat.Prelude.Internal: filter :: () => (a -> Bool) -> [a] -> [a]
+ Distribution.Compat.Prelude.Internal: filter :: (a -> Bool) -> [a] -> [a]
- Distribution.Compat.Prelude.Internal: flip :: () => (a -> b -> c) -> b -> a -> c
+ Distribution.Compat.Prelude.Internal: flip :: (a -> b -> c) -> b -> a -> c
- Distribution.Compat.Prelude.Internal: fromMaybe :: () => a -> Maybe a -> a
+ Distribution.Compat.Prelude.Internal: fromMaybe :: a -> Maybe a -> a
- Distribution.Compat.Prelude.Internal: fst :: () => (a, b) -> a
+ Distribution.Compat.Prelude.Internal: fst :: (a, b) -> a
- Distribution.Compat.Prelude.Internal: head :: () => NonEmpty a -> a
+ Distribution.Compat.Prelude.Internal: head :: NonEmpty a -> a
- Distribution.Compat.Prelude.Internal: id :: () => a -> a
+ Distribution.Compat.Prelude.Internal: id :: a -> a
- Distribution.Compat.Prelude.Internal: infixl 6 -
+ Distribution.Compat.Prelude.Internal: infixl 6 <+>
- Distribution.Compat.Prelude.Internal: init :: () => NonEmpty a -> [a]
+ Distribution.Compat.Prelude.Internal: init :: NonEmpty a -> [a]
- Distribution.Compat.Prelude.Internal: intercalate :: () => [a] -> [[a]] -> [a]
+ Distribution.Compat.Prelude.Internal: intercalate :: [a] -> [[a]] -> [a]
- Distribution.Compat.Prelude.Internal: intersperse :: () => a -> [a] -> [a]
+ Distribution.Compat.Prelude.Internal: intersperse :: a -> [a] -> [a]
- Distribution.Compat.Prelude.Internal: ioError :: () => IOError -> IO a
+ Distribution.Compat.Prelude.Internal: ioError :: IOError -> IO a
- Distribution.Compat.Prelude.Internal: isJust :: () => Maybe a -> Bool
+ Distribution.Compat.Prelude.Internal: isJust :: Maybe a -> Bool
- Distribution.Compat.Prelude.Internal: isNothing :: () => Maybe a -> Bool
+ Distribution.Compat.Prelude.Internal: isNothing :: Maybe a -> Bool
- Distribution.Compat.Prelude.Internal: iterate :: () => (a -> a) -> a -> [a]
+ Distribution.Compat.Prelude.Internal: iterate :: (a -> a) -> a -> [a]
- Distribution.Compat.Prelude.Internal: last :: () => NonEmpty a -> a
+ Distribution.Compat.Prelude.Internal: last :: NonEmpty a -> a
- Distribution.Compat.Prelude.Internal: listToMaybe :: () => [a] -> Maybe a
+ Distribution.Compat.Prelude.Internal: listToMaybe :: [a] -> Maybe a
- Distribution.Compat.Prelude.Internal: map :: () => (a -> b) -> [a] -> [b]
+ Distribution.Compat.Prelude.Internal: map :: (a -> b) -> [a] -> [b]
- Distribution.Compat.Prelude.Internal: mapMaybe :: () => (a -> Maybe b) -> [a] -> [b]
+ Distribution.Compat.Prelude.Internal: mapMaybe :: (a -> Maybe b) -> [a] -> [b]
- Distribution.Compat.Prelude.Internal: maybe :: () => b -> (a -> b) -> Maybe a -> b
+ Distribution.Compat.Prelude.Internal: maybe :: b -> (a -> b) -> Maybe a -> b
- Distribution.Compat.Prelude.Internal: maybeToList :: () => Maybe a -> [a]
+ Distribution.Compat.Prelude.Internal: maybeToList :: Maybe a -> [a]
- Distribution.Compat.Prelude.Internal: nubBy :: () => (a -> a -> Bool) -> [a] -> [a]
+ Distribution.Compat.Prelude.Internal: nubBy :: (a -> a -> Bool) -> [a] -> [a]
- Distribution.Compat.Prelude.Internal: readParen :: () => Bool -> ReadS a -> ReadS a
+ Distribution.Compat.Prelude.Internal: readParen :: Bool -> ReadS a -> ReadS a
- Distribution.Compat.Prelude.Internal: repeat :: () => a -> [a]
+ Distribution.Compat.Prelude.Internal: repeat :: a -> [a]
- Distribution.Compat.Prelude.Internal: replicate :: () => Int -> a -> [a]
+ Distribution.Compat.Prelude.Internal: replicate :: Int -> a -> [a]
- Distribution.Compat.Prelude.Internal: reverse :: () => [a] -> [a]
+ Distribution.Compat.Prelude.Internal: reverse :: [a] -> [a]
- Distribution.Compat.Prelude.Internal: scanl :: () => (b -> a -> b) -> b -> [a] -> [b]
+ Distribution.Compat.Prelude.Internal: scanl :: (b -> a -> b) -> b -> [a] -> [b]
- Distribution.Compat.Prelude.Internal: scanl1 :: () => (a -> a -> a) -> [a] -> [a]
+ Distribution.Compat.Prelude.Internal: scanl1 :: (a -> a -> a) -> [a] -> [a]
- Distribution.Compat.Prelude.Internal: scanr :: () => (a -> b -> b) -> b -> [a] -> [b]
+ Distribution.Compat.Prelude.Internal: scanr :: (a -> b -> b) -> b -> [a] -> [b]
- Distribution.Compat.Prelude.Internal: scanr1 :: () => (a -> a -> a) -> [a] -> [a]
+ Distribution.Compat.Prelude.Internal: scanr1 :: (a -> a -> a) -> [a] -> [a]
- Distribution.Compat.Prelude.Internal: seq :: () => a -> b -> b
+ Distribution.Compat.Prelude.Internal: seq :: forall (r :: RuntimeRep) a (b :: TYPE r). a -> b -> b
- Distribution.Compat.Prelude.Internal: snd :: () => (a, b) -> b
+ Distribution.Compat.Prelude.Internal: snd :: (a, b) -> b
- Distribution.Compat.Prelude.Internal: sortBy :: () => (a -> a -> Ordering) -> [a] -> [a]
+ Distribution.Compat.Prelude.Internal: sortBy :: (a -> a -> Ordering) -> [a] -> [a]
- Distribution.Compat.Prelude.Internal: span :: () => (a -> Bool) -> [a] -> ([a], [a])
+ Distribution.Compat.Prelude.Internal: span :: (a -> Bool) -> [a] -> ([a], [a])
- Distribution.Compat.Prelude.Internal: splitAt :: () => Int -> [a] -> ([a], [a])
+ Distribution.Compat.Prelude.Internal: splitAt :: Int -> [a] -> ([a], [a])
- Distribution.Compat.Prelude.Internal: tail :: () => NonEmpty a -> [a]
+ Distribution.Compat.Prelude.Internal: tail :: NonEmpty a -> [a]
- Distribution.Compat.Prelude.Internal: take :: () => Int -> [a] -> [a]
+ Distribution.Compat.Prelude.Internal: take :: Int -> [a] -> [a]
- Distribution.Compat.Prelude.Internal: takeWhile :: () => (a -> Bool) -> [a] -> [a]
+ Distribution.Compat.Prelude.Internal: takeWhile :: (a -> Bool) -> [a] -> [a]
- Distribution.Compat.Prelude.Internal: typeRep :: Typeable a => proxy a -> TypeRep
+ Distribution.Compat.Prelude.Internal: typeRep :: forall k proxy (a :: k). Typeable a => proxy a -> TypeRep
- Distribution.Compat.Prelude.Internal: uncurry :: () => (a -> b -> c) -> (a, b) -> c
+ Distribution.Compat.Prelude.Internal: uncurry :: (a -> b -> c) -> (a, b) -> c
- Distribution.Compat.Prelude.Internal: undefined :: HasCallStack => a
+ Distribution.Compat.Prelude.Internal: undefined :: forall (r :: RuntimeRep) (a :: TYPE r). HasCallStack => a
- Distribution.Compat.Prelude.Internal: unfoldr :: () => (b -> Maybe (a, b)) -> b -> [a]
+ Distribution.Compat.Prelude.Internal: unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
- Distribution.Compat.Prelude.Internal: until :: () => (a -> Bool) -> (a -> a) -> a -> a
+ Distribution.Compat.Prelude.Internal: until :: (a -> Bool) -> (a -> a) -> a -> a
- Distribution.Compat.Prelude.Internal: unzip :: () => [(a, b)] -> ([a], [b])
+ Distribution.Compat.Prelude.Internal: unzip :: [(a, b)] -> ([a], [b])
- Distribution.Compat.Prelude.Internal: unzip3 :: () => [(a, b, c)] -> ([a], [b], [c])
+ Distribution.Compat.Prelude.Internal: unzip3 :: [(a, b, c)] -> ([a], [b], [c])
- Distribution.Compat.Prelude.Internal: zip :: () => [a] -> [b] -> [(a, b)]
+ Distribution.Compat.Prelude.Internal: zip :: [a] -> [b] -> [(a, b)]
- Distribution.Compat.Prelude.Internal: zip3 :: () => [a] -> [b] -> [c] -> [(a, b, c)]
+ Distribution.Compat.Prelude.Internal: zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]
- Distribution.Compat.Prelude.Internal: zipWith :: () => (a -> b -> c) -> [a] -> [b] -> [c]
+ Distribution.Compat.Prelude.Internal: zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
- Distribution.Compat.Prelude.Internal: zipWith3 :: () => (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
+ Distribution.Compat.Prelude.Internal: zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
- Distribution.Compat.Stack: callStack :: HasCallStack -> CallStack
+ Distribution.Compat.Stack: callStack :: HasCallStack => CallStack
- Distribution.Compat.Stack: withFrozenCallStack :: HasCallStack => (HasCallStack -> a) -> a
+ Distribution.Compat.Stack: withFrozenCallStack :: HasCallStack => (HasCallStack => a) -> a
- Distribution.Compat.Time: getCurTime :: NoCallStackIO ModTime
+ Distribution.Compat.Time: getCurTime :: IO ModTime
- Distribution.Compat.Time: getFileAge :: FilePath -> NoCallStackIO Double
+ Distribution.Compat.Time: getFileAge :: FilePath -> IO Double
- Distribution.Compat.Time: getModTime :: FilePath -> NoCallStackIO ModTime
+ Distribution.Compat.Time: getModTime :: FilePath -> IO ModTime
- Distribution.Compat.Typeable: typeRep :: Typeable a => proxy a -> TypeRep
+ Distribution.Compat.Typeable: typeRep :: forall k proxy (a :: k). Typeable a => proxy a -> TypeRep
- Distribution.FieldGrammar: availableSince :: FieldGrammar g => CabalSpecVersion -> a -> g s a -> g s a
+ Distribution.FieldGrammar: availableSince :: FieldGrammar c g => CabalSpecVersion -> a -> g s a -> g s a
- Distribution.FieldGrammar: blurFieldGrammar :: FieldGrammar g => ALens' a b -> g b c -> g a c
+ Distribution.FieldGrammar: blurFieldGrammar :: FieldGrammar c g => ALens' a b -> g b d -> g a d
- Distribution.FieldGrammar: booleanFieldDef :: FieldGrammar g => FieldName -> ALens' s Bool -> Bool -> g s Bool
+ Distribution.FieldGrammar: booleanFieldDef :: FieldGrammar c g => FieldName -> ALens' s Bool -> Bool -> g s Bool
- Distribution.FieldGrammar: class FieldGrammar g
+ Distribution.FieldGrammar: class (c SpecVersion, c TestedWith, c SpecLicense, c Token, c Token', c FilePathNT) => FieldGrammar c g | g -> c
- Distribution.FieldGrammar: defaultFreeTextFieldDefST :: (Functor (g s), FieldGrammar g) => FieldName -> ALens' s ShortText -> g s ShortText
+ Distribution.FieldGrammar: defaultFreeTextFieldDefST :: (Functor (g s), FieldGrammar c g) => FieldName -> ALens' s ShortText -> g s ShortText
- Distribution.FieldGrammar: deprecatedSince :: FieldGrammar g => CabalSpecVersion -> String -> g s a -> g s a
+ Distribution.FieldGrammar: deprecatedSince :: FieldGrammar c g => CabalSpecVersion -> String -> g s a -> g s a
- Distribution.FieldGrammar: freeTextField :: FieldGrammar g => FieldName -> ALens' s (Maybe String) -> g s (Maybe String)
+ Distribution.FieldGrammar: freeTextField :: FieldGrammar c g => FieldName -> ALens' s (Maybe String) -> g s (Maybe String)
- Distribution.FieldGrammar: freeTextFieldDef :: FieldGrammar g => FieldName -> ALens' s String -> g s String
+ Distribution.FieldGrammar: freeTextFieldDef :: FieldGrammar c g => FieldName -> ALens' s String -> g s String
- Distribution.FieldGrammar: freeTextFieldDefST :: FieldGrammar g => FieldName -> ALens' s ShortText -> g s ShortText
+ Distribution.FieldGrammar: freeTextFieldDefST :: FieldGrammar c g => FieldName -> ALens' s ShortText -> g s ShortText
- Distribution.FieldGrammar: hiddenField :: FieldGrammar g => g s a -> g s a
+ Distribution.FieldGrammar: hiddenField :: FieldGrammar c g => g s a -> g s a
- Distribution.FieldGrammar: knownField :: FieldGrammar g => FieldName -> g s ()
+ Distribution.FieldGrammar: knownField :: FieldGrammar c g => FieldName -> g s ()
- Distribution.FieldGrammar: monoidalField :: (FieldGrammar g, Parsec a, Pretty a, Monoid a) => FieldName -> ALens' s a -> g s a
+ Distribution.FieldGrammar: monoidalField :: (FieldGrammar c g, c (Identity a), Monoid a) => FieldName -> ALens' s a -> g s a
- Distribution.FieldGrammar: monoidalFieldAla :: (FieldGrammar g, Parsec b, Pretty b, Monoid a, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> g s a
+ Distribution.FieldGrammar: monoidalFieldAla :: (FieldGrammar c g, c b, Monoid a, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> g s a
- Distribution.FieldGrammar: optionalField :: (FieldGrammar g, Parsec a, Pretty a) => FieldName -> ALens' s (Maybe a) -> g s (Maybe a)
+ Distribution.FieldGrammar: optionalField :: (FieldGrammar c g, c (Identity a)) => FieldName -> ALens' s (Maybe a) -> g s (Maybe a)
- Distribution.FieldGrammar: optionalFieldAla :: (FieldGrammar g, Parsec b, Pretty b, Newtype a b) => FieldName -> (a -> b) -> ALens' s (Maybe a) -> g s (Maybe a)
+ Distribution.FieldGrammar: optionalFieldAla :: (FieldGrammar c g, c b, Newtype a b) => FieldName -> (a -> b) -> ALens' s (Maybe a) -> g s (Maybe a)
- Distribution.FieldGrammar: optionalFieldDef :: (FieldGrammar g, Functor (g s), Parsec a, Pretty a, Eq a) => FieldName -> ALens' s a -> a -> g s a
+ Distribution.FieldGrammar: optionalFieldDef :: (FieldGrammar c g, Functor (g s), c (Identity a), Eq a) => FieldName -> ALens' s a -> a -> g s a
- Distribution.FieldGrammar: optionalFieldDefAla :: (FieldGrammar g, Parsec b, Pretty b, Newtype a b, Eq a) => FieldName -> (a -> b) -> ALens' s a -> a -> g s a
+ Distribution.FieldGrammar: optionalFieldDefAla :: (FieldGrammar c g, c b, Newtype a b, Eq a) => FieldName -> (a -> b) -> ALens' s a -> a -> g s a
- Distribution.FieldGrammar: prefixedFields :: FieldGrammar g => FieldName -> ALens' s [(String, String)] -> g s [(String, String)]
+ Distribution.FieldGrammar: prefixedFields :: FieldGrammar c g => FieldName -> ALens' s [(String, String)] -> g s [(String, String)]
- Distribution.FieldGrammar: removedIn :: FieldGrammar g => CabalSpecVersion -> String -> g s a -> g s a
+ Distribution.FieldGrammar: removedIn :: FieldGrammar c g => CabalSpecVersion -> String -> g s a -> g s a
- Distribution.FieldGrammar: uniqueField :: (FieldGrammar g, Parsec a, Pretty a) => FieldName -> ALens' s a -> g s a
+ Distribution.FieldGrammar: uniqueField :: (FieldGrammar c g, c (Identity a)) => FieldName -> ALens' s a -> g s a
- Distribution.FieldGrammar: uniqueFieldAla :: (FieldGrammar g, Parsec b, Pretty b, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> g s a
+ Distribution.FieldGrammar: uniqueFieldAla :: (FieldGrammar c g, c b, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> g s a
- Distribution.FieldGrammar.Class: availableSince :: FieldGrammar g => CabalSpecVersion -> a -> g s a -> g s a
+ Distribution.FieldGrammar.Class: availableSince :: FieldGrammar c g => CabalSpecVersion -> a -> g s a -> g s a
- Distribution.FieldGrammar.Class: blurFieldGrammar :: FieldGrammar g => ALens' a b -> g b c -> g a c
+ Distribution.FieldGrammar.Class: blurFieldGrammar :: FieldGrammar c g => ALens' a b -> g b d -> g a d
- Distribution.FieldGrammar.Class: booleanFieldDef :: FieldGrammar g => FieldName -> ALens' s Bool -> Bool -> g s Bool
+ Distribution.FieldGrammar.Class: booleanFieldDef :: FieldGrammar c g => FieldName -> ALens' s Bool -> Bool -> g s Bool
- Distribution.FieldGrammar.Class: class FieldGrammar g
+ Distribution.FieldGrammar.Class: class (c SpecVersion, c TestedWith, c SpecLicense, c Token, c Token', c FilePathNT) => FieldGrammar c g | g -> c
- Distribution.FieldGrammar.Class: defaultFreeTextFieldDefST :: (Functor (g s), FieldGrammar g) => FieldName -> ALens' s ShortText -> g s ShortText
+ Distribution.FieldGrammar.Class: defaultFreeTextFieldDefST :: (Functor (g s), FieldGrammar c g) => FieldName -> ALens' s ShortText -> g s ShortText
- Distribution.FieldGrammar.Class: deprecatedSince :: FieldGrammar g => CabalSpecVersion -> String -> g s a -> g s a
+ Distribution.FieldGrammar.Class: deprecatedSince :: FieldGrammar c g => CabalSpecVersion -> String -> g s a -> g s a
- Distribution.FieldGrammar.Class: freeTextField :: FieldGrammar g => FieldName -> ALens' s (Maybe String) -> g s (Maybe String)
+ Distribution.FieldGrammar.Class: freeTextField :: FieldGrammar c g => FieldName -> ALens' s (Maybe String) -> g s (Maybe String)
- Distribution.FieldGrammar.Class: freeTextFieldDef :: FieldGrammar g => FieldName -> ALens' s String -> g s String
+ Distribution.FieldGrammar.Class: freeTextFieldDef :: FieldGrammar c g => FieldName -> ALens' s String -> g s String
- Distribution.FieldGrammar.Class: freeTextFieldDefST :: FieldGrammar g => FieldName -> ALens' s ShortText -> g s ShortText
+ Distribution.FieldGrammar.Class: freeTextFieldDefST :: FieldGrammar c g => FieldName -> ALens' s ShortText -> g s ShortText
- Distribution.FieldGrammar.Class: hiddenField :: FieldGrammar g => g s a -> g s a
+ Distribution.FieldGrammar.Class: hiddenField :: FieldGrammar c g => g s a -> g s a
- Distribution.FieldGrammar.Class: knownField :: FieldGrammar g => FieldName -> g s ()
+ Distribution.FieldGrammar.Class: knownField :: FieldGrammar c g => FieldName -> g s ()
- Distribution.FieldGrammar.Class: monoidalField :: (FieldGrammar g, Parsec a, Pretty a, Monoid a) => FieldName -> ALens' s a -> g s a
+ Distribution.FieldGrammar.Class: monoidalField :: (FieldGrammar c g, c (Identity a), Monoid a) => FieldName -> ALens' s a -> g s a
- Distribution.FieldGrammar.Class: monoidalFieldAla :: (FieldGrammar g, Parsec b, Pretty b, Monoid a, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> g s a
+ Distribution.FieldGrammar.Class: monoidalFieldAla :: (FieldGrammar c g, c b, Monoid a, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> g s a
- Distribution.FieldGrammar.Class: optionalField :: (FieldGrammar g, Parsec a, Pretty a) => FieldName -> ALens' s (Maybe a) -> g s (Maybe a)
+ Distribution.FieldGrammar.Class: optionalField :: (FieldGrammar c g, c (Identity a)) => FieldName -> ALens' s (Maybe a) -> g s (Maybe a)
- Distribution.FieldGrammar.Class: optionalFieldAla :: (FieldGrammar g, Parsec b, Pretty b, Newtype a b) => FieldName -> (a -> b) -> ALens' s (Maybe a) -> g s (Maybe a)
+ Distribution.FieldGrammar.Class: optionalFieldAla :: (FieldGrammar c g, c b, Newtype a b) => FieldName -> (a -> b) -> ALens' s (Maybe a) -> g s (Maybe a)
- Distribution.FieldGrammar.Class: optionalFieldDef :: (FieldGrammar g, Functor (g s), Parsec a, Pretty a, Eq a) => FieldName -> ALens' s a -> a -> g s a
+ Distribution.FieldGrammar.Class: optionalFieldDef :: (FieldGrammar c g, Functor (g s), c (Identity a), Eq a) => FieldName -> ALens' s a -> a -> g s a
- Distribution.FieldGrammar.Class: optionalFieldDefAla :: (FieldGrammar g, Parsec b, Pretty b, Newtype a b, Eq a) => FieldName -> (a -> b) -> ALens' s a -> a -> g s a
+ Distribution.FieldGrammar.Class: optionalFieldDefAla :: (FieldGrammar c g, c b, Newtype a b, Eq a) => FieldName -> (a -> b) -> ALens' s a -> a -> g s a
- Distribution.FieldGrammar.Class: prefixedFields :: FieldGrammar g => FieldName -> ALens' s [(String, String)] -> g s [(String, String)]
+ Distribution.FieldGrammar.Class: prefixedFields :: FieldGrammar c g => FieldName -> ALens' s [(String, String)] -> g s [(String, String)]
- Distribution.FieldGrammar.Class: removedIn :: FieldGrammar g => CabalSpecVersion -> String -> g s a -> g s a
+ Distribution.FieldGrammar.Class: removedIn :: FieldGrammar c g => CabalSpecVersion -> String -> g s a -> g s a
- Distribution.FieldGrammar.Class: uniqueField :: (FieldGrammar g, Parsec a, Pretty a) => FieldName -> ALens' s a -> g s a
+ Distribution.FieldGrammar.Class: uniqueField :: (FieldGrammar c g, c (Identity a)) => FieldName -> ALens' s a -> g s a
- Distribution.FieldGrammar.Class: uniqueFieldAla :: (FieldGrammar g, Parsec b, Pretty b, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> g s a
+ Distribution.FieldGrammar.Class: uniqueFieldAla :: (FieldGrammar c g, c b, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> g s a
- Distribution.Fields.Pretty: showFields' :: (ann -> [String]) -> Int -> [PrettyField ann] -> String
+ Distribution.Fields.Pretty: showFields' :: (ann -> [String]) -> (ann -> [String] -> [String]) -> Int -> [PrettyField ann] -> String
- Distribution.PackageDescription.Check: checkPackageContent :: Monad m => CheckPackageContentOps m -> PackageDescription -> m [PackageCheck]
+ Distribution.PackageDescription.Check: checkPackageContent :: (Monad m, Applicative m) => CheckPackageContentOps m -> PackageDescription -> m [PackageCheck]
- Distribution.PackageDescription.Check: checkPackageFiles :: Verbosity -> PackageDescription -> FilePath -> NoCallStackIO [PackageCheck]
+ Distribution.PackageDescription.Check: checkPackageFiles :: Verbosity -> PackageDescription -> FilePath -> IO [PackageCheck]
- Distribution.PackageDescription.Configuration: finalizePD :: FlagAssignment -> ComponentRequestedSpec -> (Dependency -> Bool) -> Platform -> CompilerInfo -> [Dependency] -> GenericPackageDescription -> Either [Dependency] (PackageDescription, FlagAssignment)
+ Distribution.PackageDescription.Configuration: finalizePD :: FlagAssignment -> ComponentRequestedSpec -> (Dependency -> Bool) -> Platform -> CompilerInfo -> [PackageVersionConstraint] -> GenericPackageDescription -> Either [Dependency] (PackageDescription, FlagAssignment)
- Distribution.PackageDescription.FieldGrammar: benchmarkFieldGrammar :: (FieldGrammar g, Applicative (g BenchmarkStanza), Applicative (g BuildInfo)) => g BenchmarkStanza BenchmarkStanza
+ Distribution.PackageDescription.FieldGrammar: benchmarkFieldGrammar :: (FieldGrammar c g, Applicative (g BenchmarkStanza), Applicative (g BuildInfo), c (Identity BenchmarkType), c (Identity ModuleName), c (List CommaFSep (Identity ExeDependency) ExeDependency), c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency), c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency), c (List CommaVCat (Identity Dependency) Dependency), c (List CommaVCat (Identity Mixin) Mixin), c (List FSep (MQuoted Extension) Extension), c (List FSep (MQuoted Language) Language), c (List FSep FilePathNT String), c (List FSep Token String), c (List NoCommaFSep Token' String), c (List VCat (MQuoted ModuleName) ModuleName), c (List VCat FilePathNT String), c (List VCat Token String), c (MQuoted Language)) => g BenchmarkStanza BenchmarkStanza
- Distribution.PackageDescription.FieldGrammar: buildInfoFieldGrammar :: (FieldGrammar g, Applicative (g BuildInfo)) => g BuildInfo BuildInfo
+ Distribution.PackageDescription.FieldGrammar: buildInfoFieldGrammar :: (FieldGrammar c g, Applicative (g BuildInfo), c (List CommaFSep (Identity ExeDependency) ExeDependency), c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency), c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency), c (List CommaVCat (Identity Dependency) Dependency), c (List CommaVCat (Identity Mixin) Mixin), c (List FSep (MQuoted Extension) Extension), c (List FSep (MQuoted Language) Language), c (List FSep FilePathNT String), c (List FSep Token String), c (List NoCommaFSep Token' String), c (List VCat (MQuoted ModuleName) ModuleName), c (List VCat FilePathNT String), c (List VCat Token String), c (MQuoted Language)) => g BuildInfo BuildInfo
- Distribution.PackageDescription.FieldGrammar: executableFieldGrammar :: (FieldGrammar g, Applicative (g Executable), Applicative (g BuildInfo)) => UnqualComponentName -> g Executable Executable
+ Distribution.PackageDescription.FieldGrammar: executableFieldGrammar :: (FieldGrammar c g, Applicative (g Executable), Applicative (g BuildInfo), c (Identity ExecutableScope), c (List CommaFSep (Identity ExeDependency) ExeDependency), c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency), c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency), c (List CommaVCat (Identity Dependency) Dependency), c (List CommaVCat (Identity Mixin) Mixin), c (List FSep (MQuoted Extension) Extension), c (List FSep (MQuoted Language) Language), c (List FSep FilePathNT String), c (List FSep Token String), c (List NoCommaFSep Token' String), c (List VCat (MQuoted ModuleName) ModuleName), c (List VCat FilePathNT String), c (List VCat Token String), c (MQuoted Language)) => UnqualComponentName -> g Executable Executable
- Distribution.PackageDescription.FieldGrammar: flagFieldGrammar :: (FieldGrammar g, Applicative (g Flag)) => FlagName -> g Flag Flag
+ Distribution.PackageDescription.FieldGrammar: flagFieldGrammar :: (FieldGrammar c g, Applicative (g PackageFlag)) => FlagName -> g PackageFlag PackageFlag
- Distribution.PackageDescription.FieldGrammar: foreignLibFieldGrammar :: (FieldGrammar g, Applicative (g ForeignLib), Applicative (g BuildInfo)) => UnqualComponentName -> g ForeignLib ForeignLib
+ Distribution.PackageDescription.FieldGrammar: foreignLibFieldGrammar :: (FieldGrammar c g, Applicative (g ForeignLib), Applicative (g BuildInfo), c (Identity ForeignLibType), c (Identity LibVersionInfo), c (Identity Version), c (List CommaFSep (Identity ExeDependency) ExeDependency), c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency), c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency), c (List CommaVCat (Identity Dependency) Dependency), c (List CommaVCat (Identity Mixin) Mixin), c (List FSep (Identity ForeignLibOption) ForeignLibOption), c (List FSep (MQuoted Extension) Extension), c (List FSep (MQuoted Language) Language), c (List FSep FilePathNT String), c (List FSep Token String), c (List NoCommaFSep Token' String), c (List VCat (MQuoted ModuleName) ModuleName), c (List VCat FilePathNT String), c (List VCat Token String), c (MQuoted Language)) => UnqualComponentName -> g ForeignLib ForeignLib
- Distribution.PackageDescription.FieldGrammar: libraryFieldGrammar :: (FieldGrammar g, Applicative (g Library), Applicative (g BuildInfo)) => LibraryName -> g Library Library
+ Distribution.PackageDescription.FieldGrammar: libraryFieldGrammar :: (FieldGrammar c g, Applicative (g Library), Applicative (g BuildInfo), c (Identity LibraryVisibility), c (List CommaFSep (Identity ExeDependency) ExeDependency), c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency), c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency), c (List CommaVCat (Identity Dependency) Dependency), c (List CommaVCat (Identity Mixin) Mixin), c (List CommaVCat (Identity ModuleReexport) ModuleReexport), c (List FSep (MQuoted Extension) Extension), c (List FSep (MQuoted Language) Language), c (List FSep FilePathNT String), c (List FSep Token String), c (List NoCommaFSep Token' String), c (List VCat (MQuoted ModuleName) ModuleName), c (List VCat FilePathNT String), c (List VCat Token String), c (MQuoted Language)) => LibraryName -> g Library Library
- Distribution.PackageDescription.FieldGrammar: packageDescriptionFieldGrammar :: (FieldGrammar g, Applicative (g PackageDescription), Applicative (g PackageIdentifier)) => g PackageDescription PackageDescription
+ Distribution.PackageDescription.FieldGrammar: packageDescriptionFieldGrammar :: (FieldGrammar c g, Applicative (g PackageDescription), Applicative (g PackageIdentifier), c (Identity BuildType), c (Identity PackageName), c (Identity Version), c (List FSep FilePathNT String), c (List FSep TestedWith (CompilerFlavor, VersionRange)), c (List VCat FilePathNT String), c FilePathNT, c SpecLicense, c SpecVersion) => g PackageDescription PackageDescription
- Distribution.PackageDescription.FieldGrammar: setupBInfoFieldGrammar :: (FieldGrammar g, Functor (g SetupBuildInfo)) => Bool -> g SetupBuildInfo SetupBuildInfo
+ Distribution.PackageDescription.FieldGrammar: setupBInfoFieldGrammar :: (FieldGrammar c g, Functor (g SetupBuildInfo), c (List CommaVCat (Identity Dependency) Dependency)) => Bool -> g SetupBuildInfo SetupBuildInfo
- Distribution.PackageDescription.FieldGrammar: sourceRepoFieldGrammar :: (FieldGrammar g, Applicative (g SourceRepo)) => RepoKind -> g SourceRepo SourceRepo
+ Distribution.PackageDescription.FieldGrammar: sourceRepoFieldGrammar :: (FieldGrammar c g, Applicative (g SourceRepo), c (Identity RepoType), c Token, c FilePathNT) => RepoKind -> g SourceRepo SourceRepo
- Distribution.PackageDescription.FieldGrammar: testSuiteFieldGrammar :: (FieldGrammar g, Applicative (g TestSuiteStanza), Applicative (g BuildInfo)) => g TestSuiteStanza TestSuiteStanza
+ Distribution.PackageDescription.FieldGrammar: testSuiteFieldGrammar :: (FieldGrammar c g, Applicative (g TestSuiteStanza), Applicative (g BuildInfo), c (Identity ModuleName), c (Identity TestType), c (List CommaFSep (Identity ExeDependency) ExeDependency), c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency), c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency), c (List CommaVCat (Identity Dependency) Dependency), c (List CommaVCat (Identity Mixin) Mixin), c (List FSep (MQuoted Extension) Extension), c (List FSep (MQuoted Language) Language), c (List FSep FilePathNT String), c (List FSep Token String), c (List NoCommaFSep Token' String), c (List VCat (MQuoted ModuleName) ModuleName), c (List VCat FilePathNT String), c (List VCat Token String), c (MQuoted Language)) => g TestSuiteStanza TestSuiteStanza
- Distribution.PackageDescription.PrettyPrint: writeGenericPackageDescription :: FilePath -> GenericPackageDescription -> NoCallStackIO ()
+ Distribution.PackageDescription.PrettyPrint: writeGenericPackageDescription :: FilePath -> GenericPackageDescription -> IO ()
- Distribution.PackageDescription.PrettyPrint: writeHookedBuildInfo :: FilePath -> HookedBuildInfo -> NoCallStackIO ()
+ Distribution.PackageDescription.PrettyPrint: writeHookedBuildInfo :: FilePath -> HookedBuildInfo -> IO ()
- Distribution.PackageDescription.PrettyPrint: writePackageDescription :: FilePath -> PackageDescription -> NoCallStackIO ()
+ Distribution.PackageDescription.PrettyPrint: writePackageDescription :: FilePath -> PackageDescription -> IO ()
- Distribution.Parsec: parsecUnqualComponentName :: CabalParsing m => m String
+ Distribution.Parsec: parsecUnqualComponentName :: forall m. CabalParsing m => m String
- Distribution.Simple.Build.Macros: generatePackageVersionMacros :: [PackageId] -> String
+ Distribution.Simple.Build.Macros: generatePackageVersionMacros :: Version -> [PackageId] -> String
- Distribution.Simple.Compiler: Compiler :: CompilerId -> AbiTag -> [CompilerId] -> [(Language, Flag)] -> [(Extension, Maybe Flag)] -> Map String String -> Compiler
+ Distribution.Simple.Compiler: Compiler :: CompilerId -> AbiTag -> [CompilerId] -> [(Language, CompilerFlag)] -> [(Extension, Maybe CompilerFlag)] -> Map String String -> Compiler
- Distribution.Simple.Compiler: [compilerExtensions] :: Compiler -> [(Extension, Maybe Flag)]
+ Distribution.Simple.Compiler: [compilerExtensions] :: Compiler -> [(Extension, Maybe CompilerFlag)]
- Distribution.Simple.Compiler: [compilerLanguages] :: Compiler -> [(Language, Flag)]
+ Distribution.Simple.Compiler: [compilerLanguages] :: Compiler -> [(Language, CompilerFlag)]
- Distribution.Simple.Compiler: absolutePackageDBPath :: PackageDB -> NoCallStackIO PackageDB
+ Distribution.Simple.Compiler: absolutePackageDBPath :: PackageDB -> IO PackageDB
- Distribution.Simple.Compiler: absolutePackageDBPaths :: PackageDBStack -> NoCallStackIO PackageDBStack
+ Distribution.Simple.Compiler: absolutePackageDBPaths :: PackageDBStack -> IO PackageDBStack
- Distribution.Simple.Compiler: extensionsToFlags :: Compiler -> [Extension] -> [Flag]
+ Distribution.Simple.Compiler: extensionsToFlags :: Compiler -> [Extension] -> [CompilerFlag]
- Distribution.Simple.Compiler: languageToFlags :: Compiler -> Maybe Language -> [Flag]
+ Distribution.Simple.Compiler: languageToFlags :: Compiler -> Maybe Language -> [CompilerFlag]
- Distribution.Simple.Configure: checkPersistBuildConfigOutdated :: FilePath -> FilePath -> NoCallStackIO Bool
+ Distribution.Simple.Configure: checkPersistBuildConfigOutdated :: FilePath -> FilePath -> IO Bool
- Distribution.Simple.Configure: findDistPref :: FilePath -> Flag FilePath -> NoCallStackIO FilePath
+ Distribution.Simple.Configure: findDistPref :: FilePath -> Flag FilePath -> IO FilePath
- Distribution.Simple.Configure: findDistPrefOrDefault :: Flag FilePath -> NoCallStackIO FilePath
+ Distribution.Simple.Configure: findDistPrefOrDefault :: Flag FilePath -> IO FilePath
- Distribution.Simple.Configure: writePersistBuildConfig :: FilePath -> LocalBuildInfo -> NoCallStackIO ()
+ Distribution.Simple.Configure: writePersistBuildConfig :: FilePath -> LocalBuildInfo -> IO ()
- Distribution.Simple.GHC: writeGhcEnvironmentFile :: FilePath -> Platform -> Version -> [GhcEnvironmentFileEntry] -> NoCallStackIO FilePath
+ Distribution.Simple.GHC: writeGhcEnvironmentFile :: FilePath -> Platform -> Version -> [GhcEnvironmentFileEntry] -> IO FilePath
- Distribution.Simple.GHCJS: writeGhcEnvironmentFile :: FilePath -> Platform -> Version -> [GhcEnvironmentFileEntry] -> NoCallStackIO FilePath
+ Distribution.Simple.GHCJS: writeGhcEnvironmentFile :: FilePath -> Platform -> Version -> [GhcEnvironmentFileEntry] -> IO FilePath
- Distribution.Simple.Glob: matchDirFileGlob :: Verbosity -> Version -> FilePath -> FilePath -> IO [FilePath]
+ Distribution.Simple.Glob: matchDirFileGlob :: Verbosity -> CabalSpecVersion -> FilePath -> FilePath -> IO [FilePath]
- Distribution.Simple.Glob: parseFileGlob :: Version -> FilePath -> Either GlobSyntaxError Glob
+ Distribution.Simple.Glob: parseFileGlob :: CabalSpecVersion -> FilePath -> Either GlobSyntaxError Glob
- Distribution.Simple.Haddock: haddockPackagePaths :: [InstalledPackageInfo] -> Maybe (InstalledPackageInfo -> FilePath) -> NoCallStackIO ([(FilePath, Maybe FilePath, Maybe FilePath)], Maybe String)
+ Distribution.Simple.Haddock: haddockPackagePaths :: [InstalledPackageInfo] -> Maybe (InstalledPackageInfo -> FilePath) -> IO ([(FilePath, Maybe FilePath, Maybe FilePath)], Maybe String)
- Distribution.Simple.HaskellSuite: getExtensions :: Verbosity -> ConfiguredProgram -> IO [(Extension, Maybe Flag)]
+ Distribution.Simple.HaskellSuite: getExtensions :: Verbosity -> ConfiguredProgram -> IO [(Extension, Maybe CompilerFlag)]
- Distribution.Simple.HaskellSuite: getLanguages :: Verbosity -> ConfiguredProgram -> IO [(Language, Flag)]
+ Distribution.Simple.HaskellSuite: getLanguages :: Verbosity -> ConfiguredProgram -> IO [(Language, CompilerFlag)]
- Distribution.Simple.LocalBuildInfo: depLibraryPaths :: Bool -> Bool -> LocalBuildInfo -> ComponentLocalBuildInfo -> NoCallStackIO [FilePath]
+ Distribution.Simple.LocalBuildInfo: depLibraryPaths :: Bool -> Bool -> LocalBuildInfo -> ComponentLocalBuildInfo -> IO [FilePath]
- Distribution.Simple.Program.Find: getSystemSearchPath :: NoCallStackIO [FilePath]
+ Distribution.Simple.Program.Find: getSystemSearchPath :: IO [FilePath]
- Distribution.Simple.Program.Find: programSearchPathAsPATHVar :: ProgramSearchPath -> NoCallStackIO String
+ Distribution.Simple.Program.Find: programSearchPathAsPATHVar :: ProgramSearchPath -> IO String
- Distribution.Simple.Program.GHC: GhcOptions :: Flag GhcMode -> [String] -> [String] -> NubListR FilePath -> NubListR ModuleName -> Flag FilePath -> Flag FilePath -> Flag Bool -> NubListR FilePath -> Flag String -> Flag ComponentId -> [(ModuleName, OpenModule)] -> Flag Bool -> PackageDBStack -> NubListR (OpenUnitId, ModuleRenaming) -> Flag Bool -> Flag Bool -> Flag Bool -> [FilePath] -> NubListR FilePath -> [String] -> NubListR String -> NubListR String -> Flag Bool -> Flag Bool -> NubListR FilePath -> [String] -> [String] -> [String] -> [String] -> NubListR FilePath -> NubListR FilePath -> NubListR FilePath -> Flag Language -> NubListR Extension -> Map Extension (Maybe Flag) -> Flag GhcOptimisation -> Flag DebugInfoLevel -> Flag Bool -> Flag GhcProfAuto -> Flag Bool -> Flag Bool -> Flag (Maybe Int) -> Flag FilePath -> [FilePath] -> Flag String -> Flag String -> Flag String -> Flag String -> Flag FilePath -> Flag FilePath -> Flag FilePath -> Flag FilePath -> Flag GhcDynLinkMode -> Flag Bool -> Flag Bool -> Flag Bool -> Flag String -> NubListR FilePath -> Flag Verbosity -> NubListR FilePath -> Flag Bool -> GhcOptions
+ Distribution.Simple.Program.GHC: GhcOptions :: Flag GhcMode -> [String] -> [String] -> NubListR FilePath -> NubListR ModuleName -> Flag FilePath -> Flag FilePath -> Flag Bool -> NubListR FilePath -> Flag String -> Flag ComponentId -> [(ModuleName, OpenModule)] -> Flag Bool -> PackageDBStack -> NubListR (OpenUnitId, ModuleRenaming) -> Flag Bool -> Flag Bool -> Flag Bool -> [FilePath] -> NubListR FilePath -> [String] -> NubListR String -> NubListR String -> Flag Bool -> Flag Bool -> NubListR FilePath -> [String] -> [String] -> [String] -> [String] -> NubListR FilePath -> NubListR FilePath -> NubListR FilePath -> Flag Language -> NubListR Extension -> Map Extension (Maybe CompilerFlag) -> Flag GhcOptimisation -> Flag DebugInfoLevel -> Flag Bool -> Flag GhcProfAuto -> Flag Bool -> Flag Bool -> Flag (Maybe Int) -> Flag FilePath -> [FilePath] -> Flag String -> Flag String -> Flag String -> Flag String -> Flag FilePath -> Flag FilePath -> Flag FilePath -> Flag FilePath -> Flag GhcDynLinkMode -> Flag Bool -> Flag Bool -> Flag Bool -> Flag String -> NubListR FilePath -> Flag Verbosity -> NubListR FilePath -> Flag Bool -> GhcOptions
- Distribution.Simple.Program.GHC: [ghcOptExtensionMap] :: GhcOptions -> Map Extension (Maybe Flag)
+ Distribution.Simple.Program.GHC: [ghcOptExtensionMap] :: GhcOptions -> Map Extension (Maybe CompilerFlag)
- Distribution.Simple.Program.Run: getEffectiveEnvironment :: [(String, Maybe String)] -> NoCallStackIO (Maybe [(String, String)])
+ Distribution.Simple.Program.Run: getEffectiveEnvironment :: [(String, Maybe String)] -> IO (Maybe [(String, String)])
- Distribution.Simple.Register: deletePackageDB :: FilePath -> NoCallStackIO ()
+ Distribution.Simple.Register: deletePackageDB :: FilePath -> IO ()
- Distribution.Simple.Register: doesPackageDBExist :: FilePath -> NoCallStackIO Bool
+ Distribution.Simple.Register: doesPackageDBExist :: FilePath -> IO Bool
- Distribution.Simple.Setup: ConfigFlags :: [String] -> Option' (Last' ProgramDb) -> [(String, FilePath)] -> [(String, [String])] -> NubList FilePath -> Flag CompilerFlavor -> Flag FilePath -> Flag FilePath -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag ProfDetailLevel -> Flag ProfDetailLevel -> [String] -> Flag OptimisationLevel -> Flag PathTemplate -> Flag PathTemplate -> InstallDirs (Flag PathTemplate) -> Flag FilePath -> [FilePath] -> [FilePath] -> [FilePath] -> Flag String -> Flag ComponentId -> Flag Bool -> Flag FilePath -> Flag FilePath -> Flag Verbosity -> Flag Bool -> [Maybe PackageDB] -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> [Dependency] -> [GivenComponent] -> [(ModuleName, Module)] -> FlagAssignment -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag String -> Flag Bool -> Flag DebugInfoLevel -> Flag Bool -> Flag Bool -> ConfigFlags
+ Distribution.Simple.Setup: ConfigFlags :: [String] -> Option' (Last' ProgramDb) -> [(String, FilePath)] -> [(String, [String])] -> NubList FilePath -> Flag CompilerFlavor -> Flag FilePath -> Flag FilePath -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag ProfDetailLevel -> Flag ProfDetailLevel -> [String] -> Flag OptimisationLevel -> Flag PathTemplate -> Flag PathTemplate -> InstallDirs (Flag PathTemplate) -> Flag FilePath -> [FilePath] -> [FilePath] -> [FilePath] -> Flag String -> Flag ComponentId -> Flag Bool -> Flag FilePath -> Flag FilePath -> Flag Verbosity -> Flag Bool -> [Maybe PackageDB] -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> [PackageVersionConstraint] -> [GivenComponent] -> [(ModuleName, Module)] -> FlagAssignment -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag Bool -> Flag String -> Flag Bool -> Flag DebugInfoLevel -> Flag Bool -> Flag Bool -> ConfigFlags
- Distribution.Simple.Setup: [configConstraints] :: ConfigFlags -> [Dependency]
+ Distribution.Simple.Setup: [configConstraints] :: ConfigFlags -> [PackageVersionConstraint]
- Distribution.Simple.Setup: configAbsolutePaths :: ConfigFlags -> NoCallStackIO ConfigFlags
+ Distribution.Simple.Setup: configAbsolutePaths :: ConfigFlags -> IO ConfigFlags
- Distribution.Simple.SrcDist: createArchive :: CreateArchiveFun
+ Distribution.Simple.SrcDist: createArchive :: Verbosity -> PackageDescription -> FilePath -> FilePath -> IO FilePath
- Distribution.Simple.SrcDist: listPackageSources :: Verbosity -> PackageDescription -> [PPSuffixHandler] -> IO ([FilePath], [FilePath])
+ Distribution.Simple.SrcDist: listPackageSources :: Verbosity -> FilePath -> PackageDescription -> [PPSuffixHandler] -> IO [FilePath]
- Distribution.Simple.SrcDist: prepareSnapshotTree :: Verbosity -> PackageDescription -> Maybe LocalBuildInfo -> FilePath -> [PPSuffixHandler] -> IO ()
+ Distribution.Simple.SrcDist: prepareSnapshotTree :: Verbosity -> PackageDescription -> FilePath -> [PPSuffixHandler] -> IO ()
- Distribution.Simple.SrcDist: prepareTree :: Verbosity -> PackageDescription -> Maybe LocalBuildInfo -> FilePath -> [PPSuffixHandler] -> IO ()
+ Distribution.Simple.SrcDist: prepareTree :: Verbosity -> PackageDescription -> FilePath -> [PPSuffixHandler] -> IO ()
- Distribution.Simple.SrcDist: sdist :: PackageDescription -> Maybe LocalBuildInfo -> SDistFlags -> (FilePath -> FilePath) -> [PPSuffixHandler] -> IO ()
+ Distribution.Simple.SrcDist: sdist :: PackageDescription -> SDistFlags -> (FilePath -> FilePath) -> [PPSuffixHandler] -> IO ()
- Distribution.Simple.Test.LibV09: stubWriteLog :: FilePath -> UnqualComponentName -> TestLogs -> NoCallStackIO ()
+ Distribution.Simple.Test.LibV09: stubWriteLog :: FilePath -> UnqualComponentName -> TestLogs -> IO ()
- Distribution.Simple.Test.LibV09: writeSimpleTestStub :: TestSuite -> FilePath -> NoCallStackIO ()
+ Distribution.Simple.Test.LibV09: writeSimpleTestStub :: TestSuite -> FilePath -> IO ()
- Distribution.Simple.Utils: doesExecutableExist :: FilePath -> NoCallStackIO Bool
+ Distribution.Simple.Utils: doesExecutableExist :: FilePath -> IO Bool
- Distribution.Simple.Utils: existsAndIsMoreRecentThan :: FilePath -> FilePath -> NoCallStackIO Bool
+ Distribution.Simple.Utils: existsAndIsMoreRecentThan :: FilePath -> FilePath -> IO Bool
- Distribution.Simple.Utils: findAllFilesWithExtension :: [String] -> [FilePath] -> FilePath -> NoCallStackIO [FilePath]
+ Distribution.Simple.Utils: findAllFilesWithExtension :: [String] -> [FilePath] -> FilePath -> IO [FilePath]
- Distribution.Simple.Utils: findFileWithExtension :: [String] -> [FilePath] -> FilePath -> NoCallStackIO (Maybe FilePath)
+ Distribution.Simple.Utils: findFileWithExtension :: [String] -> [FilePath] -> FilePath -> IO (Maybe FilePath)
- Distribution.Simple.Utils: findFileWithExtension' :: [String] -> [FilePath] -> FilePath -> NoCallStackIO (Maybe (FilePath, FilePath))
+ Distribution.Simple.Utils: findFileWithExtension' :: [String] -> [FilePath] -> FilePath -> IO (Maybe (FilePath, FilePath))
- Distribution.Simple.Utils: findFirstFile :: (a -> FilePath) -> [a] -> NoCallStackIO (Maybe a)
+ Distribution.Simple.Utils: findFirstFile :: (a -> FilePath) -> [a] -> IO (Maybe a)
- Distribution.Simple.Utils: findPackageDesc :: FilePath -> NoCallStackIO (Either String FilePath)
+ Distribution.Simple.Utils: findPackageDesc :: FilePath -> IO (Either String FilePath)
- Distribution.Simple.Utils: handleDoesNotExist :: a -> NoCallStackIO a -> NoCallStackIO a
+ Distribution.Simple.Utils: handleDoesNotExist :: a -> IO a -> IO a
- Distribution.Simple.Utils: intercalate :: () => [a] -> [[a]] -> [a]
+ Distribution.Simple.Utils: intercalate :: [a] -> [[a]] -> [a]
- Distribution.Simple.Utils: isInSearchPath :: FilePath -> NoCallStackIO Bool
+ Distribution.Simple.Utils: isInSearchPath :: FilePath -> IO Bool
- Distribution.Simple.Utils: moreRecentFile :: FilePath -> FilePath -> NoCallStackIO Bool
+ Distribution.Simple.Utils: moreRecentFile :: FilePath -> FilePath -> IO Bool
- Distribution.Simple.Utils: readUTF8File :: FilePath -> NoCallStackIO String
+ Distribution.Simple.Utils: readUTF8File :: FilePath -> IO String
- Distribution.Simple.Utils: setFileExecutable :: FilePath -> NoCallStackIO ()
+ Distribution.Simple.Utils: setFileExecutable :: FilePath -> IO ()
- Distribution.Simple.Utils: setFileOrdinary :: FilePath -> NoCallStackIO ()
+ Distribution.Simple.Utils: setFileOrdinary :: FilePath -> IO ()
- Distribution.Simple.Utils: withFileContents :: FilePath -> (String -> NoCallStackIO a) -> NoCallStackIO a
+ Distribution.Simple.Utils: withFileContents :: FilePath -> (String -> IO a) -> IO a
- Distribution.Simple.Utils: writeFileAtomic :: FilePath -> ByteString -> NoCallStackIO ()
+ Distribution.Simple.Utils: writeFileAtomic :: FilePath -> ByteString -> IO ()
- Distribution.Simple.Utils: writeUTF8File :: FilePath -> String -> NoCallStackIO ()
+ Distribution.Simple.Utils: writeUTF8File :: FilePath -> String -> IO ()
- Distribution.Types.Dependency: Dependency :: PackageName -> VersionRange -> Set LibraryName -> Dependency
+ Distribution.Types.Dependency: Dependency :: PackageName -> VersionRange -> NonEmptySet LibraryName -> Dependency
- Distribution.Types.Dependency: depLibraries :: Dependency -> Set LibraryName
+ Distribution.Types.Dependency: depLibraries :: Dependency -> NonEmptySet LibraryName
- Distribution.Types.DependencyMap: constrainBy :: DependencyMap -> DependencyMap -> DependencyMap
+ Distribution.Types.DependencyMap: constrainBy :: DependencyMap -> [PackageVersionConstraint] -> DependencyMap
- Distribution.Types.Flag: [flagDefault] :: Flag -> Bool
+ Distribution.Types.Flag: [flagDefault] :: PackageFlag -> Bool
- Distribution.Types.Flag: [flagDescription] :: Flag -> String
+ Distribution.Types.Flag: [flagDescription] :: PackageFlag -> String
- Distribution.Types.Flag: [flagManual] :: Flag -> Bool
+ Distribution.Types.Flag: [flagManual] :: PackageFlag -> Bool
- Distribution.Types.Flag: [flagName] :: Flag -> FlagName
+ Distribution.Types.Flag: [flagName] :: PackageFlag -> FlagName
- Distribution.Types.Flag: emptyFlag :: FlagName -> Flag
+ Distribution.Types.Flag: emptyFlag :: FlagName -> PackageFlag
- Distribution.Types.GenericPackageDescription: GenericPackageDescription :: PackageDescription -> [Flag] -> Maybe (CondTree ConfVar [Dependency] Library) -> [(UnqualComponentName, CondTree ConfVar [Dependency] Library)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] ForeignLib)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] Executable)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)] -> GenericPackageDescription
+ Distribution.Types.GenericPackageDescription: GenericPackageDescription :: PackageDescription -> Maybe Version -> [PackageFlag] -> Maybe (CondTree ConfVar [Dependency] Library) -> [(UnqualComponentName, CondTree ConfVar [Dependency] Library)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] ForeignLib)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] Executable)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)] -> [(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)] -> GenericPackageDescription
- Distribution.Types.GenericPackageDescription: [genPackageFlags] :: GenericPackageDescription -> [Flag]
+ Distribution.Types.GenericPackageDescription: [genPackageFlags] :: GenericPackageDescription -> [PackageFlag]
- Distribution.Types.GenericPackageDescription.Lens: flagDefault :: Lens' Flag Bool
+ Distribution.Types.GenericPackageDescription.Lens: flagDefault :: Lens' PackageFlag Bool
- Distribution.Types.GenericPackageDescription.Lens: flagDescription :: Lens' Flag String
+ Distribution.Types.GenericPackageDescription.Lens: flagDescription :: Lens' PackageFlag String
- Distribution.Types.GenericPackageDescription.Lens: flagManual :: Lens' Flag Bool
+ Distribution.Types.GenericPackageDescription.Lens: flagManual :: Lens' PackageFlag Bool
- Distribution.Types.GenericPackageDescription.Lens: flagName :: Lens' Flag FlagName
+ Distribution.Types.GenericPackageDescription.Lens: flagName :: Lens' PackageFlag FlagName
- Distribution.Types.GenericPackageDescription.Lens: genPackageFlags :: Lens' GenericPackageDescription [Flag]
+ Distribution.Types.GenericPackageDescription.Lens: genPackageFlags :: Lens' GenericPackageDescription [PackageFlag]
- Distribution.Types.InstalledPackageInfo.FieldGrammar: ipiFieldGrammar :: (FieldGrammar g, Applicative (g InstalledPackageInfo), Applicative (g Basic)) => g InstalledPackageInfo InstalledPackageInfo
+ Distribution.Types.InstalledPackageInfo.FieldGrammar: ipiFieldGrammar :: (FieldGrammar c g, Applicative (g InstalledPackageInfo), Applicative (g Basic), c (Identity AbiHash), c (Identity LibraryVisibility), c (Identity PackageName), c (Identity UnitId), c (Identity UnqualComponentName), c (List FSep (Identity AbiDependency) AbiDependency), c (List FSep (Identity UnitId) UnitId), c (List FSep (MQuoted ModuleName) ModuleName), c (List FSep FilePathNT String), c (List FSep Token String), c (MQuoted MungedPackageName), c (MQuoted Version), c CompatPackageKey, c ExposedModules, c InstWith, c SpecLicenseLenient) => g InstalledPackageInfo InstalledPackageInfo
- Distribution.Types.Mixin: Mixin :: PackageName -> IncludeRenaming -> Mixin
+ Distribution.Types.Mixin: Mixin :: PackageName -> LibraryName -> IncludeRenaming -> Mixin
- Distribution.Types.PackageDescription: PackageDescription :: Either Version VersionRange -> PackageIdentifier -> Either License License -> [FilePath] -> !ShortText -> !ShortText -> !ShortText -> !ShortText -> [(CompilerFlavor, VersionRange)] -> !ShortText -> !ShortText -> !ShortText -> [SourceRepo] -> !ShortText -> !ShortText -> !ShortText -> [(String, String)] -> Maybe BuildType -> Maybe SetupBuildInfo -> Maybe Library -> [Library] -> [Executable] -> [ForeignLib] -> [TestSuite] -> [Benchmark] -> [FilePath] -> FilePath -> [FilePath] -> [FilePath] -> [FilePath] -> PackageDescription
+ Distribution.Types.PackageDescription: PackageDescription :: CabalSpecVersion -> PackageIdentifier -> Either License License -> [FilePath] -> !ShortText -> !ShortText -> !ShortText -> !ShortText -> [(CompilerFlavor, VersionRange)] -> !ShortText -> !ShortText -> !ShortText -> [SourceRepo] -> !ShortText -> !ShortText -> !ShortText -> [(String, String)] -> Maybe BuildType -> Maybe SetupBuildInfo -> Maybe Library -> [Library] -> [Executable] -> [ForeignLib] -> [TestSuite] -> [Benchmark] -> [FilePath] -> FilePath -> [FilePath] -> [FilePath] -> [FilePath] -> PackageDescription
- Distribution.Types.SourceRepo: Bazaar :: RepoType
+ Distribution.Types.SourceRepo: Bazaar :: KnownRepoType
- Distribution.Types.SourceRepo: CVS :: RepoType
+ Distribution.Types.SourceRepo: CVS :: KnownRepoType
- Distribution.Types.SourceRepo: Darcs :: RepoType
+ Distribution.Types.SourceRepo: Darcs :: KnownRepoType
- Distribution.Types.SourceRepo: Git :: RepoType
+ Distribution.Types.SourceRepo: Git :: KnownRepoType
- Distribution.Types.SourceRepo: GnuArch :: RepoType
+ Distribution.Types.SourceRepo: GnuArch :: KnownRepoType
- Distribution.Types.SourceRepo: Mercurial :: RepoType
+ Distribution.Types.SourceRepo: Mercurial :: KnownRepoType
- Distribution.Types.SourceRepo: Monotone :: RepoType
+ Distribution.Types.SourceRepo: Monotone :: KnownRepoType
- Distribution.Types.SourceRepo: SVN :: RepoType
+ Distribution.Types.SourceRepo: SVN :: KnownRepoType
- Distribution.Types.SourceRepo: knownRepoTypes :: [RepoType]
+ Distribution.Types.SourceRepo: knownRepoTypes :: [KnownRepoType]
- Distribution.Types.VersionRange: versionRangeParser :: forall m. CabalParsing m => m Int -> m VersionRange
+ Distribution.Types.VersionRange: versionRangeParser :: forall m. CabalParsing m => m Int -> CabalSpecVersion -> m VersionRange
- Distribution.Types.VersionRange.Internal: versionRangeParser :: forall m. CabalParsing m => m Int -> m VersionRange
+ Distribution.Types.VersionRange.Internal: versionRangeParser :: forall m. CabalParsing m => m Int -> CabalSpecVersion -> m VersionRange
- Distribution.Utils.Generic: intercalate :: () => [a] -> [[a]] -> [a]
+ Distribution.Utils.Generic: intercalate :: [a] -> [[a]] -> [a]
- Distribution.Utils.Generic: readUTF8File :: FilePath -> NoCallStackIO String
+ Distribution.Utils.Generic: readUTF8File :: FilePath -> IO String
- Distribution.Utils.Generic: withFileContents :: FilePath -> (String -> NoCallStackIO a) -> NoCallStackIO a
+ Distribution.Utils.Generic: withFileContents :: FilePath -> (String -> IO a) -> IO a
- Distribution.Utils.Generic: writeFileAtomic :: FilePath -> ByteString -> NoCallStackIO ()
+ Distribution.Utils.Generic: writeFileAtomic :: FilePath -> ByteString -> IO ()
- Distribution.Utils.Generic: writeUTF8File :: FilePath -> String -> NoCallStackIO ()
+ Distribution.Utils.Generic: writeUTF8File :: FilePath -> String -> IO ()
- Distribution.Utils.LogProgress: runLogProgress :: Verbosity -> LogProgress a -> NoCallStackIO a
+ Distribution.Utils.LogProgress: runLogProgress :: Verbosity -> LogProgress a -> IO a

Files

+ Cabal-QuickCheck/src/Test/QuickCheck/GenericArbitrary.hs view
@@ -0,0 +1,49 @@+{-# LANGUAGE CPP              #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE GADTs            #-}+{-# LANGUAGE TypeOperators #-}+module Test.QuickCheck.GenericArbitrary (+    genericArbitrary,+    GArbitrary,+) where++import GHC.Generics+import Test.QuickCheck++#if !MIN_VERSION_base(4,8,0)+import Control.Applicative (pure, (<$>), (<*>))+#endif++-- Generic arbitary for non-recursive types+genericArbitrary :: (Generic a, GArbitrary (Rep a)) => Gen a+genericArbitrary = fmap to garbitrary++class GArbitrary f where+    garbitrary :: Gen (f ())++class GArbitrarySum f where+    garbitrarySum :: [Gen (f ())]++class GArbitraryProd f where+    garbitraryProd :: Gen (f ())++instance (GArbitrarySum f, i ~ D) => GArbitrary (M1 i c f) where+    garbitrary = fmap M1 (oneof garbitrarySum)++instance (GArbitraryProd f, i ~ C) => GArbitrarySum (M1 i c f) where+    garbitrarySum = [fmap M1 garbitraryProd]++instance (GArbitrarySum f, GArbitrarySum g) => GArbitrarySum (f :+: g) where+    garbitrarySum = map (fmap L1) garbitrarySum ++ map (fmap R1) garbitrarySum++instance (GArbitraryProd f, i ~ S) => GArbitraryProd (M1 i c f) where+    garbitraryProd = fmap M1 garbitraryProd++instance GArbitraryProd U1 where+    garbitraryProd = pure U1++instance (GArbitraryProd f, GArbitraryProd g) => GArbitraryProd (f :*: g) where+    garbitraryProd = (:*:) <$> garbitraryProd <*> garbitraryProd++instance (Arbitrary a) => GArbitraryProd (K1 i a) where+    garbitraryProd = fmap K1 arbitrary
+ Cabal-QuickCheck/src/Test/QuickCheck/Instances/Cabal.hs view
@@ -0,0 +1,548 @@+{-# LANGUAGE CPP           #-}+{-# LANGUAGE TypeOperators #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Cabal () where++import Control.Applicative        (liftA2)+import Data.Bits                  (shiftR)+import Data.Char                  (isAlphaNum, isDigit)+import Data.List                  (intercalate, isPrefixOf)+import Data.List.NonEmpty         (NonEmpty (..))+import Distribution.Utils.Generic (lowercase)+import Test.QuickCheck++#if MIN_VERSION_base(4,8,0)+import Data.Bits (countLeadingZeros, finiteBitSize, shiftL)+#else+import Data.Bits (popCount)+#endif++import Distribution.CabalSpecVersion+import Distribution.Compat.NonEmptySet             (NonEmptySet)+import Distribution.Compiler+import Distribution.FieldGrammar.Newtypes+import Distribution.ModuleName+import Distribution.Simple.Compiler                (DebugInfoLevel (..), OptimisationLevel (..), PackageDB (..), ProfDetailLevel (..), knownProfDetailLevels)+import Distribution.Simple.Flag                    (Flag (..))+import Distribution.Simple.InstallDirs+import Distribution.Simple.Setup                   (HaddockTarget (..), TestShowDetails (..))+import Distribution.SPDX+import Distribution.System+import Distribution.Types.Dependency+import Distribution.Types.Flag                     (FlagAssignment, FlagName, mkFlagAssignment, mkFlagName, unFlagAssignment)+import Distribution.Types.IncludeRenaming+import Distribution.Types.LibraryName+import Distribution.Types.LibraryVisibility+import Distribution.Types.Mixin+import Distribution.Types.ModuleRenaming+import Distribution.Types.PackageId+import Distribution.Types.PackageName+import Distribution.Types.PackageVersionConstraint+import Distribution.Types.PkgconfigVersion+import Distribution.Types.PkgconfigVersionRange+import Distribution.Types.SourceRepo+import Distribution.Types.UnqualComponentName+import Distribution.Types.VersionRange.Internal+import Distribution.Utils.NubList+import Distribution.Verbosity+import Distribution.Version++import Test.QuickCheck.GenericArbitrary++import qualified Data.ByteString.Char8           as BS8+import qualified Distribution.Compat.NonEmptySet as NES++#if !MIN_VERSION_base(4,8,0)+import Control.Applicative (pure, (<$>), (<*>))+#endif++-------------------------------------------------------------------------------+-- CabalSpecVersion+-------------------------------------------------------------------------------++instance Arbitrary CabalSpecVersion where+    arbitrary = arbitraryBoundedEnum++instance Arbitrary SpecVersion where+    arbitrary = fmap SpecVersion arbitrary++-------------------------------------------------------------------------------+-- PackageName and PackageIdentifier+-------------------------------------------------------------------------------++instance Arbitrary PackageName where+    arbitrary = mkPackageName . intercalate "-" <$> shortListOf1 2 nameComponent+      where+        nameComponent = shortListOf1 5 (elements packageChars)+                        `suchThat` (not . all isDigit)+        packageChars  = filter isAlphaNum ['\0'..'\127']++instance Arbitrary PackageIdentifier where+    arbitrary = PackageIdentifier <$> arbitrary <*> arbitrary++    shrink (PackageIdentifier pn vr) = uncurry PackageIdentifier <$> shrink (pn, vr)++-------------------------------------------------------------------------------+-- Version+-------------------------------------------------------------------------------++-- | Does *NOT* generate 'nullVersion'+instance Arbitrary Version where+  arbitrary = do+      branch <- smallListOf1 $+                  frequency [(3, return 0)+                            ,(3, return 1)+                            ,(2, return 2)+                            ,(2, return 3)+                            ,(1, return 0xfffd)+                            ,(1, return 0xfffe) -- max fitting into packed W64+                            ,(1, return 0xffff)+                            ,(1, return 999999998)+                            ,(1, return 999999999)+                            ,(1, return 0x10000)]+      return (mkVersion branch)+    where+      smallListOf1 = scale (\n -> min 6 (n `div` 3)) . listOf1++  shrink ver = [ mkVersion ns | ns <- shrink (versionNumbers ver)+                              , not (null ns) ]++instance Arbitrary VersionRange where+  arbitrary = sized $ \n -> chooseInt (0, n) >>= verRangeExp . intSqrt+    where+      verRangeExp n+        | n > 0     = oneof+          [ recurse unionVersionRanges     n+          , recurse intersectVersionRanges n+          ]+        | otherwise = oneof+          [ return anyVersion+          , fmap thisVersion arbitrary+          , fmap laterVersion arbitrary+          , fmap orLaterVersion arbitrary+          , fmap orLaterVersion' arbitrary+          , fmap earlierVersion arbitrary+          , fmap orEarlierVersion arbitrary+          , fmap orEarlierVersion' arbitrary+          , fmap withinVersion arbitraryV+          , fmap majorBoundVersion arbitrary+          ]++      recurse mk n = do+        k <- chooseInt (0, n - 1)+        liftA2 mk (verRangeExp k) (verRangeExp (n - k - 1))++      arbitraryV :: Gen Version+      arbitraryV = arbitrary `suchThat` \v -> all (< 999999999) (versionNumbers v)++      orLaterVersion'   v =+        unionVersionRanges (LaterVersion v)   (ThisVersion v)+      orEarlierVersion' v =+        unionVersionRanges (EarlierVersion v) (ThisVersion v)++  shrink (ThisVersion v)              = map ThisVersion (shrink v)+  shrink (LaterVersion v)             = map LaterVersion (shrink v)+  shrink (EarlierVersion v)           = map EarlierVersion (shrink v)+  shrink (OrLaterVersion v)           = LaterVersion v : map OrLaterVersion (shrink v)+  shrink (OrEarlierVersion v)         = EarlierVersion v : map OrEarlierVersion (shrink v)+  shrink (MajorBoundVersion v)        = map MajorBoundVersion (shrink v)+  shrink (UnionVersionRanges a b)     = a : b : map (uncurry UnionVersionRanges) (shrink (a, b))+  shrink (IntersectVersionRanges a b) = a : b : map (uncurry IntersectVersionRanges) (shrink (a, b))++-- | Generating VersionIntervals+--+-- This is a tad tricky as VersionIntervals is an abstract type, so we first+-- make a local type for generating the internal representation. Then we check+-- that this lets us construct valid 'VersionIntervals'.+--++instance Arbitrary VersionIntervals where+  arbitrary = fmap mkVersionIntervals' arbitrary+    where+      mkVersionIntervals' :: [(Version, Bound)] -> VersionIntervals+      mkVersionIntervals' = mkVersionIntervals . go version0+        where+          go :: Version -> [(Version, Bound)] -> [VersionInterval]+          go _ [] = []+          go v [(lv, lb)] =+              [(LowerBound (addVersion lv v) lb, NoUpperBound)]+          go v ((lv, lb) : (uv, ub) : rest) =+              (LowerBound lv' lb, UpperBound uv' ub) : go uv' rest+            where+              lv' = addVersion v lv+              uv' = addVersion lv' uv++          addVersion :: Version -> Version -> Version+          addVersion xs ys = mkVersion $  z (versionNumbers xs) (versionNumbers ys)+            where+              z [] ys' = ys'+              z xs' [] = xs'+              z (x : xs') (y : ys') = x + y : z xs' ys'++instance Arbitrary Bound where+  arbitrary = elements [ExclusiveBound, InclusiveBound]++-------------------------------------------------------------------------------+-- Backpack+-------------------------------------------------------------------------------++instance Arbitrary Mixin where+    arbitrary = normaliseMixin <$> genericArbitrary+    shrink    = fmap normaliseMixin . genericShrink++instance Arbitrary IncludeRenaming where+    arbitrary = genericArbitrary+    shrink    = genericShrink++instance Arbitrary ModuleRenaming where+    arbitrary = genericArbitrary+    shrink    = genericShrink++-------------------------------------------------------------------------------+--+-------------------------------------------------------------------------------++instance Arbitrary LibraryVisibility where+  arbitrary = elements [LibraryVisibilityPrivate, LibraryVisibilityPublic]++  shrink LibraryVisibilityPublic  = [LibraryVisibilityPrivate]+  shrink LibraryVisibilityPrivate = []++-------------------------------------------------------------------------------+-- ModuleName+-------------------------------------------------------------------------------++instance Arbitrary ModuleName where+  arbitrary = fromString . intercalate "." <$> shortListOf1 4 comp where+    comp = (:) <$> elements upper <*> shortListOf1 10 (elements moduleChar)+    upper = ['A'..'Z']+    moduleChar = [ c | c <- ['\0' .. '\255'], isAlphaNum c || c `elem` "_'" ]++-------------------------------------------------------------------------------+-- Dependency+-------------------------------------------------------------------------------++instance Arbitrary Dependency where+    arbitrary = mkDependency+        <$> arbitrary+        <*> arbitrary+        <*> (arbitrary `suchThat` const True) -- should be (not . null)++    shrink (Dependency pn vr lb) =+        [ mkDependency pn' vr' lb'+        | (pn', vr', lb') <- shrink (pn, vr, lb)+        ]++-------------------------------------------------------------------------------+-- PackageVersionConstraint+-------------------------------------------------------------------------------++instance Arbitrary PackageVersionConstraint where+    arbitrary = PackageVersionConstraint+        <$> arbitrary+        <*> arbitrary++    shrink (PackageVersionConstraint pn vr) =+        [ PackageVersionConstraint pn' vr'+        | (pn', vr') <- shrink (pn, vr)+        ]++-------------------------------------------------------------------------------+-- System+-------------------------------------------------------------------------------++instance Arbitrary OS where+    arbitrary = elements knownOSs++instance Arbitrary Arch where+    arbitrary = elements knownArches++instance Arbitrary Platform where+    arbitrary = Platform <$> arbitrary <*> arbitrary++-------------------------------------------------------------------------------+-- Various names+-------------------------------------------------------------------------------++instance Arbitrary UnqualComponentName where+    -- same rules as package names+    arbitrary = packageNameToUnqualComponentName <$> arbitrary++instance Arbitrary LibraryName where+    arbitrary = oneof+        [ LSubLibName <$> arbitrary+        , pure LMainLibName+        ]++    shrink (LSubLibName _) = [LMainLibName]+    shrink _               = []++-------------------------------------------------------------------------------+-- option flags+-------------------------------------------------------------------------------++instance Arbitrary a => Arbitrary (Flag a) where+    arbitrary = arbitrary1++    shrink NoFlag   = []+    shrink (Flag x) = NoFlag : [ Flag x' | x' <- shrink x ]++instance Arbitrary1 Flag where+    liftArbitrary genA = sized $ \sz ->+        if sz <= 0+        then pure NoFlag+        else frequency [ (1, pure NoFlag)+                       , (3, Flag <$> genA) ]++-------------------------------------------------------------------------------+-- GPD flags+-------------------------------------------------------------------------------++instance Arbitrary FlagName where+    arbitrary = mkFlagName <$> frequency+        [ (20, flagident)+        -- special nasty cases+        , (1,  pure "none")+        , (1,  pure "any")+        ]+      where+        flagident   = lowercase <$> shortListOf1 5 (elements flagChars)+                      `suchThat` (("-" /=) . take 1)+        flagChars   = "-_" ++ ['a'..'z']++instance Arbitrary FlagAssignment where+    arbitrary = mkFlagAssignment <$> arbitrary+    shrink x = mkFlagAssignment <$> shrink (unFlagAssignment x)++-------------------------------------------------------------------------------+-- Verbosity+-------------------------------------------------------------------------------++instance Arbitrary Verbosity where+    arbitrary = do+        v <- elements [minBound..maxBound]+        -- verbose markoutput is left out on purpose+        flags <- listOf $ elements+            [ verboseCallSite+            , verboseCallStack+            , verboseNoWrap+            , verboseTimestamp+            , verboseStderr+            ]+        return (foldr ($) v flags)++-------------------------------------------------------------------------------+-- SourceRepo+-------------------------------------------------------------------------------++instance Arbitrary RepoType where+    arbitrary = elements (KnownRepoType <$> knownRepoTypes)++instance Arbitrary RepoKind where+    arbitrary = elements [RepoHead, RepoThis]++-------------------------------------------------------------------------------+-- SPDX+-------------------------------------------------------------------------------++instance Arbitrary LicenseId where+    arbitrary = elements $ licenseIdList currentLicenseListVersion++instance Arbitrary LicenseExceptionId where+    arbitrary = elements $ licenseExceptionIdList currentLicenseListVersion++currentLicenseListVersion :: LicenseListVersion+currentLicenseListVersion = cabalSpecVersionToSPDXListVersion cabalSpecLatest++instance Arbitrary LicenseRef where+    arbitrary = mkLicenseRef' <$> ids' <*> ids+      where+        ids = listOf1 $ elements $ ['a'..'z'] ++ ['A' .. 'Z'] ++ ['0'..'9'] ++ "_-"+        ids' = oneof [ pure Nothing, Just <$> ids ]++instance Arbitrary SimpleLicenseExpression where+    arbitrary = oneof+        [ ELicenseId <$> arbitrary+        , ELicenseIdPlus <$> arbitrary+        , ELicenseRef <$> arbitrary+        ]++instance Arbitrary LicenseExpression where+    arbitrary = sized arb+      where+        arb n+            | n <= 0     = ELicense <$> arbitrary <*> pure Nothing+            | otherwise = oneof+                [ ELicense <$> arbitrary <*> arbitrary+                , EAnd <$> arbA <*> arbB+                , EOr <$> arbA <*> arbB+                ]+              where+                m = n `div` 2+                arbA = arb m+                arbB = arb (n - m)++    shrink (EAnd a b) = a : b : map (uncurry EAnd) (shrink (a, b))+    shrink (EOr a b)  = a : b : map (uncurry EOr) (shrink (a, b))+    shrink _          = []++-------------------------------------------------------------------------------+-- Compiler+-------------------------------------------------------------------------------++instance Arbitrary CompilerFlavor where+    arbitrary = elements knownCompilerFlavors++instance Arbitrary CompilerId where+    arbitrary = genericArbitrary+    shrink    = genericShrink++instance Arbitrary ProfDetailLevel where+    arbitrary = elements [ d | (_,_,d) <- knownProfDetailLevels ]++instance Arbitrary OptimisationLevel where+    arbitrary = elements [minBound..maxBound]++instance Arbitrary DebugInfoLevel where+    arbitrary = elements [minBound..maxBound]++-------------------------------------------------------------------------------+-- NonEmptySet+-------------------------------------------------------------------------------++instance (Arbitrary a, Ord a) => Arbitrary (NonEmptySet a) where+    arbitrary = mk <$> arbitrary <*> arbitrary where+        mk x xs = NES.fromNonEmpty (x :| xs)++    shrink nes = case NES.toNonEmpty nes of+        x :| xs -> map mk (shrink (x, xs))+      where+        mk (x,xs) = NES.fromNonEmpty (x :| xs)++-------------------------------------------------------------------------------+-- NubList+-------------------------------------------------------------------------------++instance (Arbitrary a, Ord a) => Arbitrary (NubList a) where+    arbitrary = toNubList <$> arbitrary+    shrink xs = [ toNubList [] | (not . null) (fromNubList xs) ]+    -- try empty, otherwise don't shrink as it can loop++-------------------------------------------------------------------------------+-- InstallDirs+-------------------------------------------------------------------------------++instance Arbitrary a => Arbitrary (InstallDirs a) where+    arbitrary = InstallDirs+        <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary --  4+        <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary --  8+        <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary -- 12+        <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary -- 16++instance Arbitrary PathTemplate where+    arbitrary = toPathTemplate <$> arbitraryShortToken+    shrink t  = [ toPathTemplate s+                | s <- shrink (fromPathTemplate t)+                , not (null s) ]++-------------------------------------------------------------------------------+-- Pkgconfig+-------------------------------------------------------------------------------++instance Arbitrary PkgconfigVersion where+    arbitrary = PkgconfigVersion . BS8.pack . dropDash . concat <$> listOf1 elems where+        elems = frequency+            [ (2, pure ".")+            , (1, pure "-")+            , (5, listOf1 $ elements ['0' .. '9'])+            , (1, listOf1 $ elements ['A' .. 'Z'])+            , (1, listOf1 $ elements ['a' .. 'z'])+            ]++        -- disallow versions starting with dash+        dropDash = notEmpty . dropWhile (== '-')+        notEmpty x+            | null x    = "0"+            | otherwise = x++instance Arbitrary PkgconfigVersionRange where+  arbitrary = sized $ \n -> chooseInt (0, n) >>= verRangeExp . intSqrt+    where+      verRangeExp n+        | n > 0     = oneof+          [ recurse PcUnionVersionRanges     n+          , recurse PcIntersectVersionRanges n+          ]+        | otherwise = oneof+          [ return PcAnyVersion+          , fmap PcThisVersion arbitrary+          , fmap PcLaterVersion arbitrary+          , fmap PcOrLaterVersion arbitrary+          , fmap orLaterVersion' arbitrary+          , fmap PcEarlierVersion arbitrary+          , fmap PcOrEarlierVersion arbitrary+          , fmap orEarlierVersion' arbitrary+          ]++      recurse mk n = do+        k <- chooseInt (0, n - 1)+        liftA2 mk (verRangeExp k) (verRangeExp (n - k - 1))++      orLaterVersion'   v =+        PcUnionVersionRanges (PcLaterVersion v)   (PcThisVersion v)+      orEarlierVersion' v =+        PcUnionVersionRanges (PcEarlierVersion v) (PcThisVersion v)++-------------------------------------------------------------------------------+-- Setup+-------------------------------------------------------------------------------++instance Arbitrary HaddockTarget where+    arbitrary = elements [ForHackage, ForDevelopment]++instance Arbitrary TestShowDetails where+    arbitrary = arbitraryBoundedEnum++-------------------------------------------------------------------------------+-- PackageDB+-------------------------------------------------------------------------------++instance Arbitrary PackageDB where+    arbitrary = oneof [ pure GlobalPackageDB+                      , pure UserPackageDB+                      , SpecificPackageDB <$> arbitraryShortToken+                      ]+++-------------------------------------------------------------------------------+-- Helpers+-------------------------------------------------------------------------------++shortListOf1 :: Int -> Gen a -> Gen [a]+shortListOf1 bound gen = sized $ \n -> do+    k <- choose (1, 1 `max` ((n `div` 2) `min` bound))+    vectorOf k gen++arbitraryShortToken :: Gen String+arbitraryShortToken =+    shortListOf1 5 (choose ('#', '~')) `suchThat` (not . ("[]" `isPrefixOf`))++-- |+intSqrt :: Int -> Int+intSqrt 0 = 0+intSqrt 1 = 1+intSqrt n = case compare n 0 of+    LT -> 0 -- whatever+    EQ -> 0+    GT -> iter (iter guess) -- two iterations give good results+  where+    iter :: Int -> Int+    iter 0 = 0+    iter x = shiftR (x + n `div` x) 1++    guess :: Int+#if MIN_VERSION_base(4,8,0)+    guess = shiftR n (shiftL (finiteBitSize n - countLeadingZeros n) 1)+#else+    guess = shiftR n (shiftR (popCount n) 1)+#endif
+ Cabal-described/src/Distribution/Described.hs view
@@ -0,0 +1,577 @@+{-# LANGUAGE OverloadedStrings   #-}+{-# LANGUAGE ScopedTypeVariables #-}+module Distribution.Described (+    Described (..),+    describeDoc,+    -- * Regular expressions+    GrammarRegex (..),+    reEps,+    reChar,+    reChars,+    reMunchCS,+    reMunch1CS,+    -- * Variables+    reVar0,+    reVar1,+    -- * Special expressions+    reDot,+    reComma,+    reSpacedComma,+    reHsString,+    reUnqualComponent,+    -- *+    describeFlagAssignmentNonEmpty,+    -- * Lists+    reSpacedList,+    reCommaList,+    reCommaNonEmpty,+    reOptCommaList,+    -- * Character Sets+    csChar,+    csAlpha,+    csAlphaNum,+    csUpper,+    csNotSpace,+    csNotSpaceOrComma,+    -- * tasty+    testDescribed,+    ) where++import Prelude+       (Bool (..), Char, Either (..), Enum (..), Eq (..), Ord (..), Show (..), String, elem, fmap, foldr, id, map, maybe, otherwise, return, undefined, ($),+       (.))++import Data.Functor.Identity (Identity (..))+import Data.Maybe            (fromMaybe)+import Data.Proxy            (Proxy (..))+import Data.String           (IsString (..))+import Data.Typeable         (Typeable, typeOf)+import Data.Void             (Void, vacuous)+import Test.QuickCheck       (Arbitrary (..), Property, counterexample)+import Test.Tasty            (TestTree, testGroup)+import Test.Tasty.QuickCheck (testProperty)++import Distribution.Compat.Semigroup (Semigroup (..))+import Distribution.Parsec           (Parsec, eitherParsec)+import Distribution.Pretty           (Pretty, prettyShow)++import qualified Distribution.Utils.CharSet as CS+import qualified RERE                       as RE+import qualified RERE.CharSet               as RE+import qualified Text.PrettyPrint           as PP++import Distribution.Utils.GrammarRegex++-- Types+import Distribution.Compat.Newtype+import Distribution.Compiler                       (CompilerFlavor, CompilerId, knownCompilerFlavors)+import Distribution.FieldGrammar.Newtypes+import Distribution.ModuleName                     (ModuleName)+import Distribution.System                         (Arch, OS, knownArches, knownOSs)+import Distribution.Types.AbiDependency            (AbiDependency)+import Distribution.Types.AbiHash                  (AbiHash)+import Distribution.Types.BenchmarkType            (BenchmarkType)+import Distribution.Types.BuildType                (BuildType)+import Distribution.Types.Dependency               (Dependency)+import Distribution.Types.ExecutableScope          (ExecutableScope)+import Distribution.Types.ExeDependency            (ExeDependency)+import Distribution.Types.ExposedModule            (ExposedModule)+import Distribution.Types.Flag                     (FlagAssignment, FlagName)+import Distribution.Types.ForeignLib               (LibVersionInfo)+import Distribution.Types.ForeignLibOption         (ForeignLibOption)+import Distribution.Types.ForeignLibType           (ForeignLibType)+import Distribution.Types.IncludeRenaming          (IncludeRenaming)+import Distribution.Types.LegacyExeDependency      (LegacyExeDependency)+import Distribution.Types.LibraryVisibility        (LibraryVisibility)+import Distribution.Types.Mixin                    (Mixin)+import Distribution.Types.ModuleReexport           (ModuleReexport)+import Distribution.Types.ModuleRenaming           (ModuleRenaming)+import Distribution.Types.MungedPackageName        (MungedPackageName)+import Distribution.Types.PackageId                (PackageIdentifier)+import Distribution.Types.PackageName              (PackageName)+import Distribution.Types.PackageVersionConstraint (PackageVersionConstraint)+import Distribution.Types.PkgconfigDependency      (PkgconfigDependency)+import Distribution.Types.SourceRepo               (RepoType)+import Distribution.Types.TestType                 (TestType)+import Distribution.Types.UnitId                   (UnitId)+import Distribution.Types.UnqualComponentName      (UnqualComponentName)+import Distribution.Verbosity                      (Verbosity)+import Distribution.Version                        (Version, VersionRange)+import Language.Haskell.Extension                  (Extension, Language)++-- | Class describing the pretty/parsec format of a.+class (Pretty a, Parsec a) => Described a where+    -- | A pretty document of "regex" describing the field format+    describe :: proxy a -> GrammarRegex void++-- | Pretty-print description.+--+-- >>> describeDoc ([] :: [Bool])+-- \left\{ \mathop{\mathord{``}\mathtt{True}\mathord{"}}\mid\mathop{\mathord{``}\mathtt{False}\mathord{"}} \right\}+--+describeDoc :: Described a => proxy a -> PP.Doc+describeDoc p = regexDoc (describe p)++instance Described Bool where+    describe _ = REUnion ["True", "False"]++instance Described a => Described (Identity a) where+    describe _ = describe ([] :: [a])++-------------------------------------------------------------------------------+-- Lists+------------------------------------------------------------------------------++reSpacedList :: GrammarRegex a -> GrammarRegex a+reSpacedList = REMunch RESpaces1++reCommaList :: GrammarRegex a -> GrammarRegex a+reCommaList = RECommaList++reCommaNonEmpty :: GrammarRegex a -> GrammarRegex a+reCommaNonEmpty = RECommaNonEmpty++reOptCommaList :: GrammarRegex a -> GrammarRegex a+reOptCommaList = REOptCommaList++-------------------------------------------------------------------------------+-- Specific grammars+-------------------------------------------------------------------------------++reHsString :: GrammarRegex a+reHsString = RENamed "hs-string" impl  where+    impl = reChar '"' <> REMunch reEps (REUnion [strChar, escChar]) <> reChar '"'+    strChar = RECharSet $ CS.difference CS.universe (CS.fromList "\"\\")++    escChar = REUnion+        [ "\\&"+        , "\\\\"+        , REUnion ["\\n", RENamed "escapes" "\\n"] -- TODO+        , "\\" <> RECharSet "0123456789"+        , "\\o" <> RECharSet "01234567"+        , "\\x" <> RECharSet "0123456789abcdefABCDEF"+        , REUnion ["\\^@", RENamed "control" "\\^@"] -- TODO+        , REUnion ["\\NUL", RENamed "ascii" "\\NUL"] -- TODO+        ]++reUnqualComponent :: GrammarRegex a+reUnqualComponent = RENamed "unqual-name" $+    REMunch1 (reChar '-') component+  where+    component+        = REMunch reEps (RECharSet csAlphaNum)+        -- currently the parser accepts "csAlphaNum `difference` "0123456789"+        -- which is larger set than CS.alpha+        --+        -- Hackage rejects non ANSI names, so it's not so relevant.+        <> RECharSet CS.alpha+        <> REMunch reEps (RECharSet csAlphaNum)++reDot :: GrammarRegex a+reDot = reChar '.'++reComma :: GrammarRegex a+reComma = reChar ','++reSpacedComma :: GrammarRegex a+reSpacedComma = RESpaces <> reComma <> RESpaces++-------------------------------------------------------------------------------+-- Character sets+-------------------------------------------------------------------------------++csChar :: Char -> CS.CharSet+csChar = CS.singleton++csAlpha :: CS.CharSet+csAlpha = CS.alpha++csAlphaNum :: CS.CharSet+csAlphaNum = CS.alphanum++csUpper :: CS.CharSet+csUpper = CS.upper++csNotSpace :: CS.CharSet+csNotSpace = CS.difference CS.universe $ CS.singleton ' '++csNotSpaceOrComma :: CS.CharSet+csNotSpaceOrComma = CS.difference csNotSpace $ CS.singleton ','++-------------------------------------------------------------------------------+-- Special+-------------------------------------------------------------------------------++describeFlagAssignmentNonEmpty :: GrammarRegex void+describeFlagAssignmentNonEmpty = REMunch1 RESpaces1 $+    REUnion [fromString "+", fromString "-"] <> describe (Proxy :: Proxy FlagName)++-------------------------------------------------------------------------------+-- Conversion+-------------------------------------------------------------------------------++convert :: GrammarRegex Void -> RE.RE Void+convert = go id . vacuous where+    go :: Ord b => (a -> b) -> GrammarRegex a -> RE.RE b+    go f (REAppend rs)      = foldr (\r acc -> go f r <> acc) RE.Eps rs+    go f (REUnion rs)       = foldr (\r acc -> go f r RE.\/ acc) RE.Null rs+    go _ (RECharSet cs)     = RE.Ch (convertCS cs)+    go _ (REString str)     = RE.string_ str++    go f (REMunch sep r)    = RE.Eps RE.\/ r' <> RE.star_ (sep' <> r') where+        sep' = go f sep+        r'   = go f r+    go f (REMunch1 sep r)   = r' <> RE.star_ (sep' <> r') where+        sep' = go f sep+        r'   = go f r+    go f (REMunchR n sep r)+        | n <= 0    = RE.Eps+        | otherwise = RE.Eps RE.\/ r' <> go' (pred n)+      where+        sep' = go f sep+        r'   = go f r++        go' m | m <= 0    = RE.Eps+              | otherwise = RE.Eps RE.\/ sep' <> r' <> go' (pred m)++    go f (REOpt r)          = RE.Eps RE.\/ go f r++    go f (REVar a)          = RE.Var (f a)+    go f (RENamed _ r)      = go f r+    go f (RERec n r)        = RE.fix_ (fromString n)+        (go (maybe RE.B (RE.F . f)) r)++    go _ RESpaces           = RE.Eps RE.\/ RE.ch_ ' ' RE.\/ "  " RE.\/ "\n"+    go _ RESpaces1          = RE.ch_ ' ' RE.\/ "  " RE.\/ "\n"++    go f (RECommaList r)    = go f (expandedCommaList r)+    go f (RECommaNonEmpty r)= go f (expandedCommaNonEmpty r)+    go f (REOptCommaList r) = go f (expandedOptCommaList r)++    go _ RETodo             = RE.Null++expandedCommaList :: GrammarRegex a -> GrammarRegex a+expandedCommaList = REUnion . expandedCommaList'++expandedCommaNonEmpty :: GrammarRegex a -> GrammarRegex a+expandedCommaNonEmpty r = REUnion+    [ REMunch1 reSpacedComma r+    , reComma <> RESpaces <> REMunch1 reSpacedComma r+    , REMunch1 reSpacedComma r <> RESpaces <> reComma+    ]++expandedCommaList' :: GrammarRegex a -> [GrammarRegex a]+expandedCommaList' r =+    [ REMunch reSpacedComma r+    , reComma <> RESpaces <> REMunch1 reSpacedComma r+    , REMunch1 reSpacedComma r <> RESpaces <> reComma+    ]++expandedOptCommaList :: GrammarRegex a -> GrammarRegex a+expandedOptCommaList r = REUnion $ reSpacedList r : expandedCommaList' r++convertCS :: CS.CharSet -> RE.CharSet+convertCS = RE.fromIntervalList . CS.toIntervalList++-------------------------------------------------------------------------------+-- tasty+-------------------------------------------------------------------------------++testDescribed+    :: forall a. (Arbitrary a, Described a, Typeable a, Eq a, Show a)+    => Proxy a+    -> TestTree+testDescribed _ = testGroup name+    [ testProperty "parsec" propParsec+    , testProperty "pretty" propPretty+    , testProperty "roundtrip" propRoundtrip+    ]+  where+    name = show (typeOf (undefined :: a))++    propParsec :: Ex a -> Property+    propParsec (Example str) = counterexample (show res) $ case res of+        Right _ -> True+        Left _  -> False+      where+        res :: Either String a+        res = eitherParsec str++    rr :: RE.RE Void+    rr = convert $ describe (Proxy :: Proxy a)++    propPretty :: a -> Property+    propPretty x = counterexample str $ RE.matchR rr str+      where+        str = prettyShow x++    propRoundtrip :: a -> Property+    propRoundtrip x = counterexample (show (res, str)) $ case res of+        Right y -> x == y+        Left _  -> False+      where+        str = prettyShow x+        res = eitherParsec str++newtype Ex a = Example String+  deriving (Show)++instance Described a => Arbitrary (Ex a) where+    arbitrary+        = fmap Example+        $ fromMaybe (return "")+        $ RE.generate 10 5+        $ convert $ describe (Proxy :: Proxy a)++    shrink (Example s)+        | '\n' `elem` s = [ Example $ map (\c -> if c == '\n' then ' ' else c) s ]+        | otherwise     = []++-------------------------------------------------------------------------------+-- Instances+-------------------------------------------------------------------------------++instance Described AbiDependency where+    describe _ =+        describe (Proxy :: Proxy UnitId) <>+        reChar '=' <>+        describe (Proxy :: Proxy AbiHash)++instance Described AbiHash where+    describe _ = reMunchCS csAlphaNum++instance Described Arch where+    describe _ = REUnion+        [ fromString (prettyShow arch)+        | arch <- knownArches+        ]++instance Described BenchmarkType where+    describe _ = "exitcode-stdio-1.0"++instance Described BuildType where+    describe _ = REUnion ["Simple","Configure","Custom","Make","Default"]++instance Described CompilerFlavor where+    describe _ = REUnion+        [ fromString (prettyShow c)+        | c <- knownCompilerFlavors+        ]++instance Described CompilerId where+    describe _ =+        describe (Proxy :: Proxy CompilerFlavor)+        <> fromString "-"+        <> describe (Proxy :: Proxy Version)++instance Described Dependency where+    describe _ = REAppend+        [ RENamed "pkg-name" (describe (Proxy :: Proxy PackageName))+        , REOpt $+               reChar ':'+            <> REUnion+                [ reUnqualComponent+                , REAppend+                    [ reChar '{'+                    , RESpaces+                    -- no leading or trailing comma+                    , REMunch1 reSpacedComma reUnqualComponent+                    , RESpaces+                    , reChar '}'+                    ]+                ]++        , REOpt $ RESpaces <> vr+        ]+      where+        vr = RENamed "version-range" (describe (Proxy :: Proxy VersionRange))++instance Described ExecutableScope where+    describe _ = REUnion ["public","private"]++instance Described ExeDependency where+    describe _ = RETodo++instance Described ExposedModule where+    describe _ = RETodo++instance Described Extension where+    describe _ = RETodo++instance Described FlagAssignment where+    describe _ = REMunch RESpaces1 $+        REUnion [fromString "+", fromString "-"] <> describe (Proxy :: Proxy FlagName)++instance Described FlagName where+    describe _ = lead <> rest where+        lead = RECharSet $ csAlphaNum <> fromString "_"+        rest = reMunchCS $ csAlphaNum <> fromString "_-"++instance Described ForeignLibOption where+    describe _ = "standalone"++instance Described ForeignLibType where+    describe _ = REUnion ["native-shared","native-static"]++instance Described IncludeRenaming where+    describe _ = mr <> REOpt (RESpaces <> "requires" <> RESpaces1 <> mr)+      where+        mr = describe (Proxy :: Proxy ModuleRenaming)++instance Described Language where+    describe _ = REUnion ["Haskell98", "Haskell2010"]++instance Described LegacyExeDependency where+    describe _ = RETodo++instance Described LibraryVisibility where+    describe _ = REUnion ["public","private"]++instance Described LibVersionInfo where+    describe _ = reDigits <> REOpt (reChar ':' <> reDigits <> REOpt (reChar ':' <> reDigits)) where+        reDigits = reChars ['0'..'9']++instance Described Mixin where+    describe _ =+        RENamed "package-name" (describe (Proxy :: Proxy PackageName)) <>+        REOpt (reChar ':' <> RENamed "library-name" (describe (Proxy :: Proxy UnqualComponentName))) <>+        REOpt (RESpaces1 <> describe (Proxy :: Proxy IncludeRenaming))++instance Described ModuleName where+    describe _ = REMunch1 (reChar '.') component where+        component = RECharSet csUpper <> REMunch reEps (REUnion [RECharSet csAlphaNum, RECharSet (fromString "_'")])++instance Described ModuleReexport where+    describe _ = RETodo++instance Described ModuleRenaming where+    describe _ = REUnion+        [ reEps+        , "hiding" <> RESpaces <> bp (REMunch reSpacedComma mn)+        , bp (REMunch reSpacedComma entry)+        ]+      where+        bp r = "(" <> RESpaces <> r <> RESpaces <> ")"+        mn = RENamed "module-name" $ describe (Proxy :: Proxy ModuleName)++        entry = mn <> REOpt (RESpaces1 <> "as" <> RESpaces1 <> mn)++instance Described MungedPackageName where+    describe _ = RETodo++instance Described OS where+    describe _ = REUnion+        [ fromString (prettyShow os)+        | os <- knownOSs+        ]++instance Described PackageIdentifier where+    describe _ = describe (Proxy :: Proxy PackageName) <> fromString "-" <> describe (Proxy :: Proxy Version)++instance Described PackageName where+    describe _ = reUnqualComponent++instance Described PackageVersionConstraint where+    describe _ = describe (Proxy :: Proxy PackageName) <> REUnion+        [ fromString "-" <> describe (Proxy :: Proxy Version)+        , RESpaces <> describe (Proxy :: Proxy VersionRange)+        ]++instance Described PkgconfigDependency where+    describe _ = RETodo++instance Described RepoType where+    describe _ = reMunch1CS $ csAlphaNum <> csChar '_' <> csChar '-'++instance Described TestType where+    describe _ = REUnion ["exitcode-stdio-1.0", "detailed-0.9"]++instance Described Verbosity where+    describe _ = REUnion+        [ REUnion ["0", "1", "2", "3"]+        , REUnion ["silent", "normal", "verbose", "debug", "deafening"]+          <> REMunch reEps (RESpaces <> "+" <>+            -- markoutput is left out on purpose+            REUnion ["callsite", "callstack", "nowrap", "timestamp", "stderr", "stdout" ])+        ]++instance Described Version where+    describe _ = REMunch1 reDot reDigits where+        reDigits = REUnion+            [ reChar '0'+            , reChars ['1'..'9'] <> REMunchR 8 reEps (reChars ['0'..'9'])+            ]++instance Described VersionRange where+    describe _ = RERec "version-range" $ REUnion+        [ "=="  <> RESpaces <> ver+        , ">"   <> RESpaces <> ver+        , "<"   <> RESpaces <> ver+        , "<="  <> RESpaces <> ver+        , ">="  <> RESpaces <> ver+        , "^>=" <> RESpaces <> ver++        -- ==0.1.*+        , "==" <> RESpaces <> wildVer++        , reVar0 <> RESpaces  <> "||" <> RESpaces <> reVar0+        , reVar0 <> RESpaces  <> "&&" <> RESpaces <> reVar0+        , "(" <> RESpaces <> reVar0  <> RESpaces <> ")"++        -- == { 0.1.2 }+        -- silly haddock: ^>= { 0.1.2, 3.4.5 }+        , "=="  <> RESpaces <> verSet+        , "^>=" <> RESpaces <> verSet+        ]+      where+        ver'    = describe (Proxy :: Proxy Version)+        ver     = RENamed "version" ver'+        wildVer = ver' <> ".*"+        verSet  = "{" <> RESpaces <> REMunch1 reSpacedComma ver <> RESpaces <> "}"++instance Described UnitId where+    describe _ = reMunch1CS $ csAlphaNum <> csChar '-' <> csChar '_' <> csChar '.' <> csChar '+'++instance Described UnqualComponentName where+    describe _ = reUnqualComponent++-------------------------------------------------------------------------------+-- Instances: Newtypes+-------------------------------------------------------------------------------++class Sep sep => DescribeSep sep where+    describeSep :: Proxy sep -> GrammarRegex a -> GrammarRegex a++instance DescribeSep CommaVCat   where describeSep _ = reCommaList+instance DescribeSep CommaFSep   where describeSep _ = reCommaList+instance DescribeSep VCat        where describeSep _ = reCommaList+instance DescribeSep FSep        where describeSep _ = reOptCommaList+instance DescribeSep NoCommaFSep where describeSep _ = reSpacedList++instance (Newtype a b, DescribeSep sep, Described b) => Described (List sep b a) where+    describe _ = describeSep (Proxy :: Proxy sep) (describe (Proxy :: Proxy b))++instance (Newtype a b, Ord a, DescribeSep sep, Described b) => Described (Set' sep b a) where+    describe _ = describeSep (Proxy :: Proxy sep) (describe (Proxy :: Proxy b))++instance Described Token where+    describe _ = REUnion [reHsString, reMunch1CS csNotSpaceOrComma]++instance Described Token' where+    describe _ = REUnion [reHsString, reMunch1CS csNotSpace]++instance Described a => Described (MQuoted a) where+    -- TODO: this is simplification+    describe _ = describe ([] :: [a])++instance Described SpecVersion where+    describe _ = "3.4" -- :)++instance Described SpecLicense where+    describe _ = RETodo++instance Described TestedWith where+    describe _ = RETodo++instance Described FilePathNT where+    describe _ = describe ([] :: [Token])
+ Cabal-described/src/Distribution/Utils/CharSet.hs view
@@ -0,0 +1,242 @@+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE CPP          #-}+-- | Sets of characters.+--+-- Using this is more efficint than 'RE.Type.Alt':ng individual characters.+module Distribution.Utils.CharSet (+    -- * Set of characters+    CharSet,+    -- * Construction+    empty,+    universe,+    singleton,+    insert,+    union,+    intersection,+    complement,+    difference,+    -- * Query+    size,+    null,+    member,+    -- * Conversions+    fromList,+    toList,+    fromIntervalList,+    toIntervalList,+    -- * Special lists+    alpha,+    alphanum,+    upper,+    ) where++import Data.Char                     (chr, isAlpha, isAlphaNum, isUpper, ord)+import Data.List                     (foldl', sortBy)+import Data.Monoid                   (Monoid (..))+import Data.String                   (IsString (..))+import Distribution.Compat.Semigroup (Semigroup (..))+import Prelude+       (Bool (..), Bounded (..), Char, Enum (..), Eq (..), Int, Maybe (..), Num (..), Ord (..), Show (..), String, concatMap, flip, fst, otherwise, showParen,+       showString, uncurry, ($), (.))++#if MIN_VERSION_containers(0,5,0)+import qualified Data.IntMap.Strict as IM+#else+import qualified Data.IntMap as IM+#endif++-- | A set of 'Char's.+--+-- We use range set, which works great with 'Char'.+newtype CharSet = CS { unCS :: IM.IntMap Int }+  deriving (Eq, Ord)++instance IsString CharSet where+    fromString = fromList++instance Show CharSet where+    showsPrec d cs+        | size cs < 20+        = showsPrec d (toList cs)+        | otherwise+        = showParen (d > 10)+        $ showString "CS "+        . showsPrec 11 (unCS cs)++instance Semigroup CharSet where+    (<>) = union++instance Monoid CharSet where+    mempty = empty+    mappend = (<>)++-- | Empty character set.+empty :: CharSet+empty = CS IM.empty++-- | universe+universe :: CharSet+universe = CS $ IM.singleton 0 0x10ffff++-- | Check whether 'CharSet' is 'empty'.+null :: CharSet -> Bool+null (CS cs) = IM.null cs++-- | Size of 'CharSet'+--+-- >>> size $ fromIntervalList [('a','f'), ('0','9')]+-- 16+--+-- >>> length $ toList $ fromIntervalList [('a','f'), ('0','9')]+-- 16+--+size :: CharSet -> Int+size (CS m) = foldl' (\ !acc (lo, hi) -> acc + (hi - lo) + 1) 0 (IM.toList m)++-- | Singleton character set.+singleton :: Char -> CharSet+singleton c = CS (IM.singleton (ord c) (ord c))++-- | Test whether character is in the set.+member :: Char -> CharSet -> Bool+#if MIN_VERSION_containers(0,5,0)+member c (CS m) = case IM.lookupLE i m of+    Nothing      -> False+    Just (_, hi) -> i <= hi+  where+#else+member c (CS m) = go (IM.toList m)+  where+    go [] = False+    go ((x,y):zs) = (x <= i && i <= y) || go zs+#endif+    i = ord c++-- | Insert 'Char' into 'CharSet'.+insert :: Char -> CharSet -> CharSet+insert c (CS m) = normalise (IM.insert (ord c) (ord c) m)++-- | Union of two 'CharSet's.+union :: CharSet -> CharSet -> CharSet+union (CS xs) (CS ys) = normalise (IM.unionWith max xs ys)++-- | Intersection of two 'CharSet's+intersection :: CharSet -> CharSet -> CharSet+intersection (CS xs) (CS ys) = CS $+    IM.fromList (intersectRangeList (IM.toList xs) (IM.toList ys))++-- | Compute the intersection.+intersectRangeList :: Ord a => [(a, a)] -> [(a, a)] -> [(a, a)]+intersectRangeList aset@((x,y):as) bset@((u,v):bs)+   | y < u     = intersectRangeList as bset+   | v < x     = intersectRangeList aset bs+   | y < v     = (max x u, y) : intersectRangeList as bset+   | otherwise = (max x u, v) : intersectRangeList aset bs+intersectRangeList _ [] = []+intersectRangeList [] _ = []++-- | Complement of a CharSet+complement :: CharSet -> CharSet+complement (CS xs) = CS $ IM.fromList $ complementRangeList (IM.toList xs)++-- | Compute the complement intersected with @[x,)@ assuming @x<u@.+complementRangeList' :: Int -> [(Int, Int)] -> [(Int, Int)]+complementRangeList' x ((u,v):s) = (x,pred u) : complementRangeList'' v s+complementRangeList' x []        = [(x,0x10ffff)]++-- | Compute the complement intersected with @(x,)@.+complementRangeList'' :: Int -> [(Int, Int)] -> [(Int, Int)]+complementRangeList'' x s+    | x == 0x10ffff = []+    | otherwise     = complementRangeList' (succ x) s++-- | Compute the complement.+--+-- Note: we treat Ints as codepoints, i.e minBound is 0, and maxBound is 0x10ffff+complementRangeList :: [(Int, Int)] -> [(Int, Int)]+complementRangeList s@((x,y):s')+    | x == 0    = complementRangeList'' y s'+    | otherwise = complementRangeList' 0 s+complementRangeList [] = [(0, 0x10ffff)]++-- | Difference of two 'CharSet's.+difference :: CharSet -> CharSet -> CharSet+difference xs ys = intersection xs (complement ys)++-- | Make 'CharSet' from a list of characters, i.e. 'String'.+fromList :: String -> CharSet+fromList = normalise . foldl' (\ acc c -> IM.insert (ord c) (ord c) acc) IM.empty++-- | Convert 'CharSet' to a list of characters i.e. 'String'.+toList :: CharSet -> String+toList = concatMap (uncurry enumFromTo) . toIntervalList++-- | Convert to interval list+--+-- >>> toIntervalList $ union "01234" "56789"+-- [('0','9')]+--+toIntervalList :: CharSet -> [(Char, Char)]+toIntervalList (CS m) = [ (chr lo, chr hi) | (lo, hi) <- IM.toList m ]++-- | Convert from interval pairs.+--+-- >>> fromIntervalList []+-- ""+--+-- >>> fromIntervalList [('a','f'), ('0','9')]+-- "0123456789abcdef"+--+-- >>> fromIntervalList [('Z','A')]+-- ""+--+fromIntervalList :: [(Char,Char)] -> CharSet+fromIntervalList xs = normalise' $ sortBy (\a b -> compare (fst a) (fst b))+    [ (ord lo, ord hi)+    | (lo, hi) <- xs+    , lo <= hi+    ]++-------------------------------------------------------------------------------+-- Normalisation+-------------------------------------------------------------------------------++normalise :: IM.IntMap Int -> CharSet+normalise = normalise'. IM.toList++normalise' :: [(Int,Int)] -> CharSet+normalise' = CS . IM.fromList . go where+    go :: [(Int,Int)] -> [(Int,Int)]+    go []         = []+    go ((x,y):zs) = go' x y zs++    go' :: Int -> Int -> [(Int, Int)] -> [(Int, Int)]+    go' lo hi [] = [(lo, hi)]+    go' lo hi ws0@((u,v):ws)+        | u <= succ hi = go' lo (max v hi) ws+        | otherwise    = (lo,hi) : go ws0++-------------------------------------------------------------------------------+-- Alpha Numeric character list+-------------------------------------------------------------------------------++-- Computing this takes some time,+-- but they are not used in-non testing in Cabal's normal operation.++-- | Note: this set varies depending on @base@ version.+--+alpha :: CharSet+alpha = foldl' (flip insert) empty [ c | c <- [ minBound .. maxBound ], isAlpha c ]+{-# NOINLINE alpha #-}++-- | Note: this set varies depending on @base@ version.+--+alphanum :: CharSet+alphanum = foldl' (flip insert) empty [ c | c <- [ minBound .. maxBound ], isAlphaNum c ]+{-# NOINLINE alphanum #-}++-- | Note: this set varies depending on @base@ version.+--+upper :: CharSet+upper = foldl' (flip insert) empty [ c | c <- [ minBound .. maxBound ], isUpper c ]+{-# NOINLINE upper #-}
+ Cabal-described/src/Distribution/Utils/GrammarRegex.hs view
@@ -0,0 +1,215 @@+{-# LANGUAGE DeriveFoldable      #-}+{-# LANGUAGE DeriveFunctor       #-}+{-# LANGUAGE DeriveTraversable   #-}+{-# LANGUAGE OverloadedStrings   #-}+{-# LANGUAGE ScopedTypeVariables #-}+module Distribution.Utils.GrammarRegex (+    -- * Regular expressions+    GrammarRegex (..),+    reEps,+    reChar,+    reChars,+    reMunchCS,+    reMunch1CS,+    -- * Variables+    reVar0,+    reVar1,+    -- * Pretty-printing+    regexDoc,+    ) where++import Data.Char                     (isAlphaNum, isControl, ord)+import Data.Foldable                 (Foldable)+import Data.Maybe                    (fromMaybe)+import Data.Monoid                   (Monoid (..))+import Data.String                   (IsString (..))+import Data.Traversable              (Traversable)+import Data.Void                     (Void, vacuous)+import Distribution.Compat.Semigroup (Semigroup (..))+import Prelude                       (Bool (..), Char, Eq (..), Functor, Int, Maybe (..), Ord (..), Show, String, fmap, length, map, otherwise, ($), (++), (.))++import qualified Distribution.Utils.CharSet as CS+import qualified Text.PrettyPrint           as PP++(<<>>) :: PP.Doc -> PP.Doc -> PP.Doc+(<<>>) = (PP.<>)++-------------------------------------------------------------------------------+-- GrammarRegex+-------------------------------------------------------------------------------++-- | Recursive regular expressions tuned for 'Described' use-case.+data GrammarRegex a+    = REAppend  [GrammarRegex a]          -- ^ append @ab@+    | REUnion   [GrammarRegex a]          -- ^ union @a|b@++    -- repetition+    | REMunch   (GrammarRegex a) (GrammarRegex a)       -- ^ star @a*@, with a separator+    | REMunch1  (GrammarRegex a) (GrammarRegex a)       -- ^ plus @a+@, with a separator+    | REMunchR Int (GrammarRegex a) (GrammarRegex a)    -- ^ 1-n, with a separator+    | REOpt     (GrammarRegex a)                        -- ^ optional @r?@++    | REString  String                           -- ^ literal string @abcd@+    | RECharSet CS.CharSet                       -- ^ charset @[:alnum:]@+    | REVar     a                                -- ^ variable+    | RENamed   String (GrammarRegex a)          -- ^ named expression+    | RERec     String (GrammarRegex (Maybe a))  -- ^ recursive expressions++    -- cabal syntax specifics+    | RESpaces                            -- ^ zero-or-more spaces+    | RESpaces1                           -- ^ one-or-more spaces+    | RECommaList (GrammarRegex a)        -- ^ comma list (note, leading or trailing commas)+    | RECommaNonEmpty (GrammarRegex a)    -- ^ comma non-empty list (note, leading or trailing commas)+    | REOptCommaList (GrammarRegex a)     -- ^ opt comma list++    | RETodo                              -- ^ unspecified+  deriving (Eq, Ord, Show, Functor, Foldable, Traversable)++-------------------------------------------------------------------------------+-- Instances+-------------------------------------------------------------------------------++instance IsString (GrammarRegex a)  where+    fromString = REString++instance Semigroup (GrammarRegex a) where+    x <> y = REAppend (unAppend x ++ unAppend y) where+        unAppend (REAppend rs) = rs+        unAppend r             = [r]++instance Monoid (GrammarRegex a) where+    mempty = REAppend []+    mappend = (<>)++-------------------------------------------------------------------------------+-- Smart constructors+-------------------------------------------------------------------------------++reEps :: GrammarRegex a+reEps = REAppend []++reChar :: Char -> GrammarRegex a+reChar = RECharSet . CS.singleton++reChars :: [Char] -> GrammarRegex a+reChars = RECharSet . CS.fromList++reMunch1CS :: CS.CharSet -> GrammarRegex a+reMunch1CS = REMunch1 reEps . RECharSet++reMunchCS :: CS.CharSet -> GrammarRegex a+reMunchCS = REMunch reEps . RECharSet++-------------------------------------------------------------------------------+-- Variables+-------------------------------------------------------------------------------++reVar0 :: GrammarRegex (Maybe a)+reVar0 = REVar Nothing++reVar1 :: GrammarRegex (Maybe (Maybe a))+reVar1 = REVar (Just Nothing)++-------------------------------------------------------------------------------+-- Pretty-printing+-------------------------------------------------------------------------------++-- |+--+-- >>> regexDoc $ REString "True"+-- \mathop{\mathord{``}\mathtt{True}\mathord{"}}+--+-- Note: we don't simplify regexps yet:+--+-- >>> regexDoc $ REString "foo" <> REString "bar"+-- \mathop{\mathord{``}\mathtt{foo}\mathord{"}}\mathop{\mathord{``}\mathtt{bar}\mathord{"}}+--+regexDoc :: GrammarRegex Void -> PP.Doc+regexDoc = go 0 . vacuous where+    go :: Int -> GrammarRegex PP.Doc -> PP.Doc+    go _ (REAppend [])    = ""+    go d (REAppend rs)    = parensIf (d > 2) $ PP.hcat (map (go 2) rs)+    go d (REUnion [r])    = go d r+    go _ (REUnion rs)     = PP.hsep+        [ "\\left\\{"+        , if length rs < 4+          then PP.hcat (PP.punctuate (PP.text "\\mid") (map (go 0) rs))+          else "\\begin{gathered}" <<>>+               PP.hcat (PP.punctuate "\\\\" (map (go 0) rs)) <<>>+              "\\end{gathered}"+        , "\\right\\}" ]++    go d (REMunch sep r)  = parensIf (d > 3) $+        PP.text "{" <<>> go 4 r <<>> PP.text "}^\\ast_{" <<>> go 4 sep <<>> PP.text "}"+    go d (REMunch1 sep r) = parensIf (d > 3) $+        PP.text "{" <<>> go 4 r <<>> PP.text "}^+_{" <<>> go 4 sep <<>> PP.text "}"+    go d (REMunchR n sep r) = parensIf (d > 3) $+        PP.text "{" <<>> go 4 r <<>> PP.text "}^{\\in [0\\ldots" <<>> PP.int n <<>> "]}_{" <<>> go 4 sep <<>> PP.text "}"+    go d (REOpt r)        = parensIf (d > 3) $+        PP.text "{" <<>> go 4 r <<>> PP.text "}^?"++    go _ (REString s)     = PP.text "\\mathop{\\mathord{``}\\mathtt{" <<>> PP.hcat (map charDoc s) <<>> PP.text "}\\mathord{\"}}"+    go _ (RECharSet cs)   = charsetDoc cs++    go _ RESpaces         = "\\circ"+    go _ RESpaces1        = "\\bullet"++    go _ (RECommaList r)  =+        "\\mathrm{commalist}" <<>> go 4 r+    go _ (RECommaNonEmpty r)  =+        "\\mathrm{commanonempty}" <<>> go 4 r+    go _ (REOptCommaList r) =+        "\\mathrm{optcommalist}" <<>> go 4 r++    go _ (REVar a)         = a+    go _ (RENamed n _)     = terminalDoc n+    go d (RERec n r)       = parensIf (d > 0) $+        "\\mathbf{fix}\\;" <<>> n' <<>> "\\;\\mathbf{in}\\;" <<>>+        go 0 (fmap (fromMaybe n') r)+      where+        n' = terminalDoc n++    go _ RETodo            = PP.text "\\mathsf{\\color{red}{TODO}}"++    parensIf :: Bool -> PP.Doc -> PP.Doc+    parensIf True  d = PP.text "\\left(" <<>> d <<>> PP.text "\\right)"+    parensIf False d = d++terminalDoc :: String -> PP.Doc+terminalDoc s = PP.text "\\mathop{\\mathit{" <<>> PP.hcat (map charDoc s) <<>> PP.text "}}"++charDoc :: Char -> PP.Doc+charDoc ' ' = PP.text "\\ "+charDoc '{' = PP.text "\\{"+charDoc '}' = PP.text "\\}"+charDoc '\\' = PP.text "\\text{\\\\}"+charDoc c+    | isAlphaNum c = PP.char c+    | isControl  c = PP.int (ord c) -- TODO: some syntax+    | otherwise    = PP.text ("\\text{" ++ c : "}")++inquotes :: PP.Doc -> PP.Doc+inquotes d = "\\mathop{\\mathord{``}" <<>> d <<>> "\\mathord{\"}}"++mathtt :: PP.Doc -> PP.Doc+mathtt d = "\\mathtt{" <<>> d <<>> "}"++charsetDoc :: CS.CharSet -> PP.Doc+charsetDoc acs+    | acs == CS.alpha    = terminalDoc "alpha"+    | acs == CS.alphanum = terminalDoc "alpha-num"+    | acs == CS.upper    = terminalDoc "upper"+charsetDoc acs = case CS.toIntervalList acs of+    []               -> "\\emptyset"+    [(x,y)] | x == y -> inquotes $ mathtt $ charDoc x+    rs+        | CS.size acs <= CS.size notAcs+        -> PP.brackets $ PP.hcat $ map rangeDoc rs+        | otherwise+        -> PP.braces $ PP.brackets (PP.hcat $ map rangeDoc (CS.toIntervalList notAcs)) <<>> PP.text "^c"+  where+    notAcs = CS.complement acs++    rangeDoc :: (Char, Char) -> PP.Doc+    rangeDoc (x, y) | x == y    = inquotes (mathtt $ charDoc x)+                    | otherwise = inquotes (mathtt $ charDoc x) <<>> PP.text "\\cdots" <<>> inquotes (mathtt $ charDoc y)
+ Cabal-tree-diff/src/Data/TreeDiff/Instances/Cabal.hs view
@@ -0,0 +1,135 @@+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -freduction-depth=0 #-}+#else+{-# OPTIONS_GHC -fcontext-stack=151 #-}+#endif+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Data.TreeDiff.Instances.Cabal () where++import Data.TreeDiff++import Data.TreeDiff.Instances.CabalLanguage ()+import Data.TreeDiff.Instances.CabalSPDX ()+import Data.TreeDiff.Instances.CabalVersion ()++-------------------------------------------------------------------------------++import Distribution.Backpack                       (OpenModule, OpenUnitId)+import Distribution.CabalSpecVersion               (CabalSpecVersion)+import Distribution.Compiler                       (CompilerFlavor, CompilerId, PerCompilerFlavor)+import Distribution.InstalledPackageInfo           (AbiDependency, ExposedModule, InstalledPackageInfo)+import Distribution.ModuleName                     (ModuleName)+import Distribution.PackageDescription+import Distribution.Simple.Compiler                (DebugInfoLevel, OptimisationLevel, ProfDetailLevel)+import Distribution.Simple.Flag                    (Flag)+import Distribution.Simple.InstallDirs+import Distribution.Simple.InstallDirs.Internal+import Distribution.Simple.Setup                   (HaddockTarget, TestShowDetails)+import Distribution.System+import Distribution.Types.AbiHash                  (AbiHash)+import Distribution.Types.ComponentId              (ComponentId)+import Distribution.Types.IncludeRenaming          (IncludeRenaming)+import Distribution.Types.Mixin+import Distribution.Types.ModuleReexport+import Distribution.Types.ModuleRenaming+import Distribution.Types.PackageVersionConstraint+import Distribution.Types.PkgconfigName            (PkgconfigName)+import Distribution.Types.PkgconfigVersion         (PkgconfigVersion)+import Distribution.Types.PkgconfigVersionRange    (PkgconfigVersionRange)+import Distribution.Types.UnitId                   (DefUnitId, UnitId)+import Distribution.Utils.NubList                  (NubList)+import Distribution.Utils.ShortText                (ShortText, fromShortText)+import Distribution.Verbosity+import Distribution.Verbosity.Internal++import qualified Distribution.Compat.NonEmptySet as NES++-------------------------------------------------------------------------------+-- instances+-------------------------------------------------------------------------------++instance (Eq a, Show a) => ToExpr (Condition a) where toExpr = defaultExprViaShow+instance (Show a, ToExpr b, ToExpr c, Show b, Show c, Eq a, Eq c, Eq b) => ToExpr (CondTree a b c)+instance (Show a, ToExpr b, ToExpr c, Show b, Show c, Eq a, Eq c, Eq b) => ToExpr (CondBranch a b c)+instance (ToExpr a) => ToExpr (NubList a)+instance (ToExpr a) => ToExpr (Flag a)+instance ToExpr a => ToExpr (NES.NonEmptySet a) where+    toExpr xs = App "NonEmptySet.fromNonEmpty" [toExpr $ NES.toNonEmpty xs]++instance ToExpr a => ToExpr (PerCompilerFlavor a)++instance ToExpr Dependency where+    toExpr d@(Dependency pn vr cs)+        | cs == mainLibSet = App "Dependency" [toExpr pn, toExpr vr, App "mainLibSet" []]+        | otherwise        = genericToExpr d++instance ToExpr AbiDependency+instance ToExpr AbiHash+instance ToExpr Arch+instance ToExpr Benchmark+instance ToExpr BenchmarkInterface+instance ToExpr BenchmarkType+instance ToExpr BuildInfo+instance ToExpr BuildType+instance ToExpr CabalSpecVersion+instance ToExpr CompilerFlavor+instance ToExpr CompilerId+instance ToExpr ComponentId+instance ToExpr DebugInfoLevel+instance ToExpr DefUnitId+instance ToExpr ExeDependency+instance ToExpr Executable+instance ToExpr ExecutableScope+instance ToExpr ExposedModule+instance ToExpr FlagAssignment+instance ToExpr FlagName+instance ToExpr ForeignLib+instance ToExpr ForeignLibOption+instance ToExpr ForeignLibType+instance ToExpr GenericPackageDescription+instance ToExpr HaddockTarget+instance ToExpr IncludeRenaming+instance ToExpr InstalledPackageInfo+instance ToExpr KnownRepoType+instance ToExpr LegacyExeDependency+instance ToExpr LibVersionInfo+instance ToExpr Library+instance ToExpr LibraryName+instance ToExpr LibraryVisibility+instance ToExpr Mixin+instance ToExpr ModuleName+instance ToExpr ModuleReexport+instance ToExpr ModuleRenaming+instance ToExpr OS+instance ToExpr OpenModule+instance ToExpr OpenUnitId+instance ToExpr OptimisationLevel+instance ToExpr PackageDescription+instance ToExpr PackageFlag+instance ToExpr PackageIdentifier+instance ToExpr PackageName+instance ToExpr PackageVersionConstraint+instance ToExpr PathComponent+instance ToExpr PathTemplate+instance ToExpr PathTemplateVariable+instance ToExpr PkgconfigDependency+instance ToExpr PkgconfigName+instance ToExpr PkgconfigVersion+instance ToExpr PkgconfigVersionRange+instance ToExpr ProfDetailLevel+instance ToExpr RepoKind+instance ToExpr RepoType+instance ToExpr SetupBuildInfo+instance ToExpr SourceRepo+instance ToExpr TestShowDetails+instance ToExpr TestSuite+instance ToExpr TestSuiteInterface+instance ToExpr TestType+instance ToExpr UnitId+instance ToExpr UnqualComponentName+instance ToExpr Verbosity+instance ToExpr VerbosityFlag+instance ToExpr VerbosityLevel++instance ToExpr ShortText where toExpr = toExpr . fromShortText
+ Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalLanguage.hs view
@@ -0,0 +1,17 @@+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -freduction-depth=0 #-}+#else+{-# OPTIONS_GHC -fcontext-stack=151 #-}+#endif+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Data.TreeDiff.Instances.CabalLanguage () where++import Data.TreeDiff+import Language.Haskell.Extension (Extension, KnownExtension, Language)++-- These are big enums, so they are in separate file.+--+instance ToExpr Extension+instance ToExpr KnownExtension+instance ToExpr Language
+ Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalSPDX.hs view
@@ -0,0 +1,28 @@+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -freduction-depth=0 #-}+#else+{-# OPTIONS_GHC -fcontext-stack=151 #-}+#endif+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Data.TreeDiff.Instances.CabalSPDX () where++import Data.TreeDiff+import Distribution.License (License)++import Data.TreeDiff.Instances.CabalVersion ()++import qualified Distribution.SPDX as SPDX++-- 'License' almost belongs here.++instance ToExpr License++-- Generics instance is too heavy+instance ToExpr SPDX.LicenseId where toExpr = defaultExprViaShow+instance ToExpr SPDX.LicenseExceptionId where toExpr = defaultExprViaShow++instance ToExpr SPDX.License+instance ToExpr SPDX.LicenseExpression+instance ToExpr SPDX.LicenseRef+instance ToExpr SPDX.SimpleLicenseExpression
+ Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalVersion.hs view
@@ -0,0 +1,14 @@+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -freduction-depth=0 #-}+#else+{-# OPTIONS_GHC -fcontext-stack=151 #-}+#endif+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Data.TreeDiff.Instances.CabalVersion where++import Data.TreeDiff+import Distribution.Version (Version, VersionRange, versionNumbers)++instance ToExpr Version where toExpr v = App "mkVersion" [toExpr $ versionNumbers v]+instance ToExpr VersionRange
Cabal.cabal view
@@ -1,6 +1,6 @@ cabal-version: >=1.10 name:          Cabal-version:       3.2.1.0+version:       3.4.0.0 copyright:     2003-2020, Cabal Development Team (see AUTHORS file) license:       BSD3 license-file:  LICENSE@@ -35,6 +35,8 @@   -- BEGIN gen-extra-source-files   tests/ParserTests/errors/MiniAgda.cabal   tests/ParserTests/errors/MiniAgda.errors+  tests/ParserTests/errors/anynone.cabal+  tests/ParserTests/errors/anynone.errors   tests/ParserTests/errors/big-version.cabal   tests/ParserTests/errors/big-version.errors   tests/ParserTests/errors/common1.cabal@@ -110,6 +112,9 @@   tests/ParserTests/regressions/Octree-0.5.cabal   tests/ParserTests/regressions/Octree-0.5.expr   tests/ParserTests/regressions/Octree-0.5.format+  tests/ParserTests/regressions/anynone.cabal+  tests/ParserTests/regressions/anynone.expr+  tests/ParserTests/regressions/anynone.format   tests/ParserTests/regressions/assoc-cpp-options.cabal   tests/ParserTests/regressions/assoc-cpp-options.check   tests/ParserTests/regressions/bad-glob-syntax.cabal@@ -153,6 +158,9 @@   tests/ParserTests/regressions/ghc-option-j.check   tests/ParserTests/regressions/haddock-api-2.18.1-check.cabal   tests/ParserTests/regressions/haddock-api-2.18.1-check.check+  tests/ParserTests/regressions/hasktorch.cabal+  tests/ParserTests/regressions/hasktorch.expr+  tests/ParserTests/regressions/hasktorch.format   tests/ParserTests/regressions/hidden-main-lib.cabal   tests/ParserTests/regressions/hidden-main-lib.expr   tests/ParserTests/regressions/hidden-main-lib.format@@ -171,9 +179,30 @@   tests/ParserTests/regressions/issue-5846.cabal   tests/ParserTests/regressions/issue-5846.expr   tests/ParserTests/regressions/issue-5846.format+  tests/ParserTests/regressions/issue-6083-a.cabal+  tests/ParserTests/regressions/issue-6083-a.expr+  tests/ParserTests/regressions/issue-6083-a.format+  tests/ParserTests/regressions/issue-6083-b.cabal+  tests/ParserTests/regressions/issue-6083-b.expr+  tests/ParserTests/regressions/issue-6083-b.format+  tests/ParserTests/regressions/issue-6083-c.cabal+  tests/ParserTests/regressions/issue-6083-c.expr+  tests/ParserTests/regressions/issue-6083-c.format   tests/ParserTests/regressions/issue-6083-pkg-pkg.cabal   tests/ParserTests/regressions/issue-6083-pkg-pkg.expr   tests/ParserTests/regressions/issue-6083-pkg-pkg.format+  tests/ParserTests/regressions/issue-6288-a.cabal+  tests/ParserTests/regressions/issue-6288-a.check+  tests/ParserTests/regressions/issue-6288-b.cabal+  tests/ParserTests/regressions/issue-6288-b.check+  tests/ParserTests/regressions/issue-6288-c.cabal+  tests/ParserTests/regressions/issue-6288-c.check+  tests/ParserTests/regressions/issue-6288-d.cabal+  tests/ParserTests/regressions/issue-6288-d.check+  tests/ParserTests/regressions/issue-6288-e.cabal+  tests/ParserTests/regressions/issue-6288-e.check+  tests/ParserTests/regressions/issue-6288-f.cabal+  tests/ParserTests/regressions/issue-6288-f.check   tests/ParserTests/regressions/issue-774.cabal   tests/ParserTests/regressions/issue-774.check   tests/ParserTests/regressions/issue-774.expr@@ -202,6 +231,9 @@   tests/ParserTests/regressions/mixin-3.cabal   tests/ParserTests/regressions/mixin-3.expr   tests/ParserTests/regressions/mixin-3.format+  tests/ParserTests/regressions/monad-param.cabal+  tests/ParserTests/regressions/monad-param.expr+  tests/ParserTests/regressions/monad-param.format   tests/ParserTests/regressions/multiple-libs-2.cabal   tests/ParserTests/regressions/multiple-libs-2.check   tests/ParserTests/regressions/multiple-libs-2.expr@@ -217,6 +249,10 @@   tests/ParserTests/regressions/pre-1.6-glob.check   tests/ParserTests/regressions/pre-2.4-globstar.cabal   tests/ParserTests/regressions/pre-2.4-globstar.check+  tests/ParserTests/regressions/public-multilib-1.cabal+  tests/ParserTests/regressions/public-multilib-1.check+  tests/ParserTests/regressions/public-multilib-2.cabal+  tests/ParserTests/regressions/public-multilib-2.check   tests/ParserTests/regressions/shake.cabal   tests/ParserTests/regressions/shake.expr   tests/ParserTests/regressions/shake.format@@ -248,6 +284,10 @@   tests/ParserTests/warnings/nbsp.cabal   tests/ParserTests/warnings/newsyntax.cabal   tests/ParserTests/warnings/oldsyntax.cabal+  tests/ParserTests/warnings/operator.cabal+  tests/ParserTests/warnings/specversion-a.cabal+  tests/ParserTests/warnings/specversion-b.cabal+  tests/ParserTests/warnings/specversion-c.cabal   tests/ParserTests/warnings/subsection.cabal   tests/ParserTests/warnings/tab.cabal   tests/ParserTests/warnings/trailingfield.cabal@@ -255,6 +295,7 @@   tests/ParserTests/warnings/unknownsection.cabal   tests/ParserTests/warnings/utf8.cabal   tests/ParserTests/warnings/versiontag.cabal+  tests/ParserTests/warnings/wildcard.cabal   tests/cbits/rpmvercmp.c   tests/hackage/check.sh   tests/hackage/download.sh@@ -273,7 +314,7 @@ library   build-depends:     array      >= 0.4.0.1  && < 0.6,-    base       >= 4.6      && < 5,+    base       >= 4.6      && < 4.16,     bytestring >= 0.10.0.0 && < 0.11,     containers >= 0.5.0.0  && < 0.7,     deepseq    >= 1.3.0.1  && < 1.5,@@ -305,6 +346,9 @@     -- already depends on `fail` and `semigroups` transitively     build-depends: fail == 4.9.*, semigroups >= 0.18.3 && < 0.20 +  if !impl(ghc >= 7.10)+    build-depends: void >= 0.7.3 && < 0.8+   if !impl(ghc >= 7.8)     -- semigroups depends on tagged.     build-depends:  tagged >=0.8.6 && <0.9@@ -334,6 +378,7 @@     Distribution.Compat.Graph     Distribution.Compat.Internal.TempFile     Distribution.Compat.Newtype+    Distribution.Compat.NonEmptySet     Distribution.Compat.ResponseFile     Distribution.Compat.Prelude.Internal     Distribution.Compat.Process@@ -507,6 +552,7 @@     Distribution.FieldGrammar     Distribution.FieldGrammar.Class     Distribution.FieldGrammar.FieldDescrs+    Distribution.FieldGrammar.Newtypes     Distribution.FieldGrammar.Parsec     Distribution.FieldGrammar.Pretty     Distribution.PackageDescription.FieldGrammar@@ -514,7 +560,6 @@     Distribution.PackageDescription.Quirks     Distribution.Parsec     Distribution.Parsec.Error-    Distribution.Parsec.Newtypes     Distribution.Parsec.Position     Distribution.Parsec.Warning     Distribution.Parsec.FieldLineStream@@ -562,10 +607,12 @@     Distribution.GetOpt     Distribution.Lex     Distribution.Utils.String+    Distribution.Simple.Build.Macros.Z     Distribution.Simple.GHC.EnvironmentParser     Distribution.Simple.GHC.Internal     Distribution.Simple.GHC.ImplInfo     Distribution.Simple.Utils.Json+    Distribution.ZinzaPrelude     Paths_Cabal    if flag(bundled-binary-generic)@@ -611,9 +658,11 @@   other-modules:     Test.Laws     Test.QuickCheck.Utils+    UnitTests.Distribution.CabalSpecVersion     UnitTests.Distribution.Compat.CreatePipe     UnitTests.Distribution.Compat.Graph     UnitTests.Distribution.Compat.Time+    UnitTests.Distribution.Described     UnitTests.Distribution.Simple.Glob     UnitTests.Distribution.Simple.Program.GHC     UnitTests.Distribution.Simple.Program.Internal@@ -621,6 +670,7 @@     UnitTests.Distribution.SPDX     UnitTests.Distribution.System     UnitTests.Distribution.Types.GenericPackageDescription+    UnitTests.Distribution.Utils.CharSet     UnitTests.Distribution.Utils.Generic     UnitTests.Distribution.Utils.NubList     UnitTests.Distribution.Utils.ShortText@@ -628,29 +678,53 @@     UnitTests.Distribution.Version     UnitTests.Distribution.PkgconfigVersion     UnitTests.Orphans++  -- Cabal-quickcheck+  hs-source-dirs: Cabal-QuickCheck/src+  other-modules:+    Test.QuickCheck.GenericArbitrary+    Test.QuickCheck.Instances.Cabal++  -- Cabal-described+  hs-source-dirs: Cabal-described/src+  other-modules:+    Distribution.Described+    Distribution.Utils.CharSet+    Distribution.Utils.GrammarRegex+       main-is: UnitTests.hs   build-depends:     array,+    async >= 2.2.2 && <2.3,     base,     binary,     bytestring,     containers,+    deepseq,     directory,     filepath,     integer-logarithms >= 1.0.2 && <1.1,+    pretty,+    rere >=0.1 && <0.2,+    tagged,     tasty >= 1.2.3 && < 1.4,     tasty-hunit,     tasty-quickcheck,-    tagged,     temporary,     text,-    pretty,+    transformers,     Diff >=0.4 && <0.5,     QuickCheck >= 2.14 && < 2.15,     Cabal   ghc-options: -Wall   default-language: Haskell2010 +  if !impl(ghc >= 7.10)+    build-depends: void++  if !impl(ghc >= 8.0)+    build-depends: semigroups+ test-suite parser-tests   type: exitcode-stdio-1.0   hs-source-dirs: tests@@ -671,16 +745,17 @@   default-language: Haskell2010    if !impl(ghc >= 8.0)-    build-depends:  semigroups+    build-depends: semigroups    if impl(ghc >= 7.8)     build-depends:       tree-diff      >= 0.1 && <0.2+    hs-source-dirs: Cabal-tree-diff/src     other-modules:-      Instances.TreeDiff-      Instances.TreeDiff.Language-      Instances.TreeDiff.SPDX-      Instances.TreeDiff.Version+      Data.TreeDiff.Instances.Cabal+      Data.TreeDiff.Instances.CabalLanguage+      Data.TreeDiff.Instances.CabalSPDX+      Data.TreeDiff.Instances.CabalVersion  test-suite check-tests   type: exitcode-stdio-1.0@@ -737,18 +812,20 @@   build-depends:     base-compat          >=0.11.0   && <0.12,     base-orphans         >=0.6      && <0.9,-    optparse-applicative >=0.13.2.0 && <0.16,+    clock                >=0.8      && <0.9,+    optparse-applicative >=0.13.2.0 && <0.17,     stm                  >=2.4.5.0  && <2.6,     tar                  >=0.5.0.3  && <0.6    if impl(ghc >= 7.8)     build-depends:       tree-diff      >= 0.1 && <0.2+    hs-source-dirs: Cabal-tree-diff/src     other-modules:-      Instances.TreeDiff-      Instances.TreeDiff.Language-      Instances.TreeDiff.SPDX-      Instances.TreeDiff.Version+      Data.TreeDiff.Instances.Cabal+      Data.TreeDiff.Instances.CabalLanguage+      Data.TreeDiff.Instances.CabalSPDX+      Data.TreeDiff.Instances.CabalVersion    ghc-options: -Wall -rtsopts -threaded   default-extensions: CPP
ChangeLog.md view
@@ -1,3 +1,6 @@+# 3.4.0.0 [Oleg Grenrus](mailgo:oleg.grnerus@iki.fi) February 2021+  * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.4.0.0.md+ # 3.2.1.0 [Oleg Grenrus](mailto:oleg.grenris@iki.fi) October 2020   * Pass `cxx-options` with `-optcxx` for GHC >= 8.10   * Use process jobs when calling subprocesses
Distribution/Backpack.hs view
@@ -117,7 +117,7 @@ --Right (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "foobar"})) -- -- >>> eitherParsec "foo[Str=text-1.2.3:Data.Text.Text]" :: Either String OpenUnitId--- Right (IndefFullUnitId (ComponentId "foo") (fromList [(ModuleName ["Str"],OpenModule (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "text-1.2.3"})) (ModuleName ["Data","Text","Text"]))]))+-- Right (IndefFullUnitId (ComponentId "foo") (fromList [(ModuleName "Str",OpenModule (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "text-1.2.3"})) (ModuleName "Data.Text.Text"))])) -- instance Parsec OpenUnitId where     parsec = P.try parseOpenUnitId <|> fmap DefiniteUnitId parsec@@ -180,7 +180,7 @@ -- | -- -- >>> eitherParsec "Includes2-0.1.0.0-inplace-mysql:Database.MySQL" :: Either String OpenModule--- Right (OpenModule (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "Includes2-0.1.0.0-inplace-mysql"})) (ModuleName ["Database","MySQL"]))+-- Right (OpenModule (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "Includes2-0.1.0.0-inplace-mysql"})) (ModuleName "Database.MySQL")) -- instance Parsec OpenModule where     parsec = parsecModuleVar <|> parsecOpenModule
Distribution/Backpack/ComponentsGraph.hs view
@@ -12,13 +12,13 @@ import Distribution.Compat.Prelude  import Distribution.Package-import Distribution.PackageDescription as PD hiding (Flag)+import Distribution.PackageDescription import Distribution.Simple.BuildToolDepends import Distribution.Simple.LocalBuildInfo import Distribution.Types.ComponentRequestedSpec-import Distribution.Types.UnqualComponentName import Distribution.Compat.Graph (Graph, Node(..)) import qualified Distribution.Compat.Graph as Graph+import qualified Distribution.Compat.NonEmptySet as NES import Distribution.Utils.Generic  import Distribution.Pretty (pretty)@@ -63,21 +63,19 @@   where     -- The dependencies for the given component     componentDeps component =-      (CExeName <$> getAllInternalToolDependencies pkg_descr bi)--      ++ [ if pkgname == packageName pkg_descr-           then CLibName LMainLibName-           else CLibName (LSubLibName toolname)-         | Dependency pkgname _ _ <- targetBuildDepends bi-         , let toolname = packageNameToUnqualComponentName pkgname-         , toolname `elem` internalPkgDeps ]+        toolDependencies ++ libDependencies       where         bi = componentBuildInfo component-        internalPkgDeps = map (conv . libName) (allLibraries pkg_descr) -        conv LMainLibName    = packageNameToUnqualComponentName $ packageName pkg_descr-        conv (LSubLibName s) = s+        toolDependencies = CExeName <$> getAllInternalToolDependencies pkg_descr bi +        libDependencies = do+            Dependency pkgname _ lns <- targetBuildDepends bi+            guard (pkgname == packageName pkg_descr)++            ln <- NES.toList lns+            return (CLibName ln)+ -- | Given the package description and a 'PackageDescription' (used -- to determine if a package name is internal or not), sort the -- components in dependency order (fewest dependencies first).  This is@@ -90,9 +88,10 @@     map (\(N c _ cs) -> (c, cs)) . Graph.revTopSort  -- | Error message when there is a cycle; takes the SCC of components.-componentCycleMsg :: [ComponentName] -> Doc-componentCycleMsg cnames =-    text $ "Components in the package depend on each other in a cyclic way:\n  "-       ++ intercalate " depends on "+componentCycleMsg :: PackageIdentifier -> [ComponentName] -> Doc+componentCycleMsg pn cnames =+    text "Components in the package" <+> pretty pn <+> text "depend on each other in a cyclic way:"+    $$+    text (intercalate " depends on "             [ "'" ++ showComponentName cname ++ "'"-            | cname <- cnames ++ maybeToList (safeHead cnames) ]+            | cname <- cnames ++ maybeToList (safeHead cnames) ])
Distribution/Backpack/Configure.hs view
@@ -27,14 +27,14 @@ import Distribution.Backpack.ComponentsGraph import Distribution.Backpack.Id -import Distribution.Simple.Compiler hiding (Flag)+import Distribution.Simple.Compiler import Distribution.Package import qualified Distribution.InstalledPackageInfo as Installed import Distribution.InstalledPackageInfo (InstalledPackageInfo                                          ,emptyInstalledPackageInfo) import qualified Distribution.Simple.PackageIndex as PackageIndex import Distribution.Simple.PackageIndex (InstalledPackageIndex)-import Distribution.PackageDescription as PD hiding (Flag)+import Distribution.PackageDescription import Distribution.ModuleName import Distribution.Simple.Setup as Setup import Distribution.Simple.LocalBuildInfo@@ -78,7 +78,7 @@     -- NB: In single component mode, this returns a *single* component.     -- In this graph, the graph is NOT closed.     graph0 <- case mkComponentsGraph enabled pkg_descr of-                Left ccycle -> dieProgress (componentCycleMsg ccycle)+                Left ccycle -> dieProgress (componentCycleMsg (package pkg_descr) ccycle)                 Right g -> return (componentsGraphToList g)     infoProgress $ hang (text "Source component graph:") 4                         (dispComponentsWithDeps graph0)
Distribution/Backpack/ConfiguredComponent.hs view
@@ -21,6 +21,7 @@  import Distribution.Backpack.Id +import Distribution.CabalSpecVersion import Distribution.Types.AnnotatedId import Distribution.Types.Dependency import Distribution.Types.ExeDependency@@ -31,23 +32,23 @@ import Distribution.Types.Mixin import Distribution.Types.ComponentName import Distribution.Types.LibraryName-import Distribution.Types.UnqualComponentName import Distribution.Types.ComponentInclude import Distribution.Package-import Distribution.PackageDescription as PD hiding (Flag)+import Distribution.PackageDescription import Distribution.Simple.BuildToolDepends import Distribution.Simple.Setup as Setup import Distribution.Simple.LocalBuildInfo-import Distribution.Version import Distribution.Utils.LogProgress import Distribution.Utils.MapAccum import Distribution.Utils.Generic  import Control.Monad import qualified Data.Set as Set+import qualified Distribution.Compat.NonEmptySet as NonEmptySet import qualified Data.Map as Map import Distribution.Pretty-import Text.PrettyPrint+import Text.PrettyPrint (Doc, hang, text, vcat, hsep, quotes, ($$))+import qualified Text.PrettyPrint as PP  -- | A configured component, we know exactly what its 'ComponentId' is, -- and the 'ComponentId's of the things it depends on.@@ -111,13 +112,12 @@ mkConfiguredComponent pkg_descr this_cid lib_deps exe_deps component = do     -- Resolve each @mixins@ into the actual dependency     -- from @lib_deps@.-    explicit_includes <- forM (mixins bi) $ \(Mixin name rns) -> do-        let keys = fixFakePkgName pkg_descr name-        aid <- case Map.lookup keys deps_map of+    explicit_includes <- forM (mixins bi) $ \(Mixin pn ln rns) -> do+        aid <- case Map.lookup (pn, CLibName ln) deps_map of                 Nothing ->                     dieProgress $-                    text "Mix-in refers to non-existent package" <+>-                    quotes (pretty name) $$+                    text "Mix-in refers to non-existent library" <+>+                    quotes (pretty pn <<>> prettyLN ln) $$                     text "(did you forget to add the package to build-depends?)"                 Just r  -> return r         return ComponentInclude {@@ -149,9 +149,17 @@             cc_includes = explicit_includes ++ implicit_includes         }   where+    bi :: BuildInfo     bi = componentBuildInfo component++    prettyLN :: LibraryName -> Doc+    prettyLN LMainLibName    = PP.empty+    prettyLN (LSubLibName n) = PP.colon <<>> pretty n++    deps_map :: Map (PackageName, ComponentName) (AnnotatedId ComponentId)     deps_map = Map.fromList [ ((packageName dep, ann_cname dep), dep)                             | dep <- lib_deps ]+     is_public = componentName component == CLibName LMainLibName  type ConfiguredComponentMap =@@ -169,27 +177,21 @@         if newPackageDepsBehaviour pkg_descr             then fmap concat $ forM (targetBuildDepends bi) $                  \(Dependency name _ sublibs) -> do-                    -- The package name still needs fixing in case of legacy-                    -- sublibrary dependency syntax-                    let (pn, _) = fixFakePkgName pkg_descr name-                    pkg <- case Map.lookup pn lib_dep_map of+                    pkg <- case Map.lookup name lib_dep_map of                         Nothing ->                             dieProgress $                                 text "Dependency on unbuildable" <+>-                                text "package" <+> pretty pn+                                text "package" <+> pretty name                         Just p -> return p                     -- Return all library components-                    forM (Set.toList sublibs) $ \lib ->+                    forM (NonEmptySet.toList sublibs) $ \lib ->                         let comp = CLibName lib in-                        case Map.lookup (CLibName $ LSubLibName $-                                         packageNameToUnqualComponentName name) pkg-                         <|> Map.lookup comp pkg-                        of+                        case Map.lookup comp pkg of                             Nothing ->                                 dieProgress $                                     text "Dependency on unbuildable" <+>                                     text (showLibraryName lib) <+>-                                    text "from" <+> pretty pn+                                    text "from" <+> pretty name                             Just v -> return v             else return old_style_lib_deps     mkConfiguredComponent@@ -292,8 +294,8 @@                         m component         return (extendConfiguredComponentMap cc m, cc) -newPackageDepsBehaviourMinVersion :: Version-newPackageDepsBehaviourMinVersion = mkVersion [1,7,1]+newPackageDepsBehaviourMinVersion :: CabalSpecVersion+newPackageDepsBehaviourMinVersion = CabalSpecV1_8   -- In older cabal versions, there was only one set of package dependencies for@@ -304,19 +306,3 @@ newPackageDepsBehaviour :: PackageDescription -> Bool newPackageDepsBehaviour pkg =    specVersion pkg >= newPackageDepsBehaviourMinVersion---- | 'build-depends:' stanzas are currently ambiguous as the external packages--- and internal libraries are specified the same. For now, we assume internal--- libraries shadow, and this function disambiguates accordingly, but soon the--- underlying ambiguity will be addressed.--- Multiple public libraries (cabal 3.0) added an unambiguous way of specifying--- sublibraries, but we still have to support the old syntax for bc reasons.-fixFakePkgName :: PackageDescription -> PackageName -> (PackageName, ComponentName)-fixFakePkgName pkg_descr pn =-  if subLibName `elem` internalLibraries-  then (packageName pkg_descr, CLibName (LSubLibName subLibName))-  else (pn,                    CLibName LMainLibName            )-  where-    subLibName        = packageNameToUnqualComponentName pn-    internalLibraries = mapMaybe (libraryNameString . libName)-                        (allLibraries pkg_descr)
Distribution/Backpack/Id.hs view
@@ -11,13 +11,12 @@ import Distribution.Compat.Prelude  import Distribution.Types.UnqualComponentName-import Distribution.Simple.Compiler hiding (Flag)-import Distribution.PackageDescription as PD hiding (Flag)+import Distribution.Simple.Compiler+import Distribution.PackageDescription import Distribution.Simple.Setup as Setup import qualified Distribution.Simple.InstallDirs as InstallDirs import Distribution.Simple.LocalBuildInfo import Distribution.Types.ComponentId-import Distribution.Types.PackageId import Distribution.Types.UnitId import Distribution.Types.MungedPackageName import Distribution.Utils.Base62@@ -125,8 +124,8 @@     -> UnitId     -> String computeCompatPackageKey comp pkg_name pkg_version uid-    | not (packageKeySupported comp) =-        prettyShow pkg_name ++ "-" ++ prettyShow pkg_version+    | not (packageKeySupported comp || unitIdSupported comp)+    = prettyShow pkg_name ++ "-" ++ prettyShow pkg_version     | not (unifiedIPIDRequired comp) =         let str = unUnitId uid -- assume no Backpack support             mb_verbatim_key
Distribution/Backpack/LinkedComponent.hs view
@@ -29,13 +29,14 @@  import Distribution.Types.AnnotatedId import Distribution.Types.ComponentName+import Distribution.Types.ModuleReexport import Distribution.Types.ModuleRenaming import Distribution.Types.IncludeRenaming import Distribution.Types.ComponentInclude import Distribution.Types.ComponentId import Distribution.Types.PackageId import Distribution.Package-import Distribution.PackageDescription as PD hiding (Flag)+import Distribution.PackageDescription import Distribution.ModuleName import Distribution.Simple.LocalBuildInfo import Distribution.Verbosity@@ -43,11 +44,8 @@  import qualified Data.Set as Set import qualified Data.Map as Map-import Data.Traversable-    ( mapM ) import Distribution.Pretty (pretty)-import Text.PrettyPrint-import Data.Either+import Text.PrettyPrint (Doc, hang, text, vcat, ($+$), hsep, quotes)  -- | A linked component is a component that has been mix-in linked, at -- which point we have determined how all the dependencies of the@@ -187,19 +185,19 @@                 m_u <- convertModule (OpenModule this_uid m)                 return (Map.singleton m [WithSource (from m) m_u], Map.empty)         -- Handle 'exposed-modules'-        exposed_mod_shapes_u <- mapM (convertMod FromExposedModules) src_provs+        exposed_mod_shapes_u <- traverse (convertMod FromExposedModules) src_provs         -- Handle 'other-modules'-        other_mod_shapes_u <- mapM (convertMod FromOtherModules) src_hidden+        other_mod_shapes_u <- traverse (convertMod FromOtherModules) src_hidden          -- Handle 'signatures'         let convertReq :: ModuleName -> UnifyM s (ModuleScopeU s)             convertReq req = do                 req_u <- convertModule (OpenModuleVar req)                 return (Map.empty, Map.singleton req [WithSource (FromSignatures req) req_u])-        req_shapes_u <- mapM convertReq src_reqs+        req_shapes_u <- traverse convertReq src_reqs          -- Handle 'mixins'-        (incl_shapes_u, all_includes_u) <- fmap unzip (mapM convertInclude unlinked_includes)+        (incl_shapes_u, all_includes_u) <- fmap unzip (traverse convertInclude unlinked_includes)          failIfErrs -- Prevent error cascade         -- Mix-in link everything!  mixLink is the real workhorse.@@ -208,7 +206,7 @@                           ++ req_shapes_u                           ++ incl_shapes_u -        -- src_reqs_u <- mapM convertReq src_reqs+        -- src_reqs_u <- traverse convertReq src_reqs         -- Read out all the final results by converting back         -- into a pure representation.         let convertIncludeU (ComponentInclude dep_aid rns i) = do@@ -220,8 +218,8 @@                         })         shape <- convertModuleScopeU shape_u         let (includes_u, sig_includes_u) = partitionEithers all_includes_u-        incls <- mapM convertIncludeU includes_u-        sig_incls <- mapM convertIncludeU sig_includes_u+        incls <- traverse convertIncludeU includes_u+        sig_incls <- traverse convertIncludeU sig_includes_u         return (shape, incls, sig_incls)      let isNotLib (CLib _) = False
Distribution/Backpack/ReadyComponent.hs view
@@ -39,9 +39,6 @@ import Distribution.Package import Distribution.Simple.Utils -import qualified Control.Applicative as A-import qualified Data.Traversable as T- import Control.Monad import Text.PrettyPrint import qualified Data.Map as Map@@ -198,14 +195,14 @@     fmap f (InstM m) = InstM $ \s -> let (x, s') = m s                                      in (f x, s') -instance A.Applicative InstM where+instance Applicative InstM where     pure a = InstM $ \s -> (a, s)     InstM f <*> InstM x = InstM $ \s -> let (f', s') = f s                                             (x', s'') = x s'                                         in (f' x', s'')  instance Monad InstM where-    return = A.pure+    return = pure     InstM m >>= f = InstM $ \s -> let (x, s') = m s                                   in runInstM (f x) s' @@ -259,20 +256,20 @@         -> InstM (Maybe ReadyComponent)     instantiateComponent uid cid insts       | Just lc <- Map.lookup cid cmap = do-            provides <- T.mapM (substModule insts) (modShapeProvides (lc_shape lc))+            provides <- traverse (substModule insts) (modShapeProvides (lc_shape lc))             -- NB: lc_sig_includes is omitted here, because we don't             -- need them to build             includes <- forM (lc_includes lc) $ \ci -> do                 uid' <- substUnitId insts (ci_id ci)                 return ci { ci_ann_id = fmap (const uid') (ci_ann_id ci) }-            exe_deps <- mapM (substExeDep insts) (lc_exe_deps lc)+            exe_deps <- traverse (substExeDep insts) (lc_exe_deps lc)             s <- InstM $ \s -> (s, s)             let getDep (Module dep_def_uid _)                     | let dep_uid = unDefUnitId dep_def_uid                     -- Lose DefUnitId invariant for rc_depends                     = [(dep_uid,                           fromMaybe err_pid $-                            Map.lookup dep_uid pid_map A.<|>+                            Map.lookup dep_uid pid_map <|>                             fmap rc_munged_id (join (Map.lookup dep_uid s)))]                   where                     err_pid = MungedPackageId@@ -313,7 +310,7 @@     substSubst :: Map ModuleName Module                -> Map ModuleName OpenModule                -> InstM (Map ModuleName Module)-    substSubst subst insts = T.mapM (substModule subst) insts+    substSubst subst insts = traverse (substModule subst) insts      substModule :: Map ModuleName Module -> OpenModule -> InstM Module     substModule subst (OpenModuleVar mod_name)@@ -346,7 +343,7 @@                     then do uid' <- substUnitId Map.empty (ci_id ci)                             return $ ci { ci_ann_id = fmap (const (DefiniteUnitId uid')) (ci_ann_id ci) }                     else return ci-            exe_deps <- mapM (substExeDep Map.empty) (lc_exe_deps lc)+            exe_deps <- traverse (substExeDep Map.empty) (lc_exe_deps lc)             let indefc = IndefiniteComponent {                         indefc_requires = map fst (lc_insts lc),                         indefc_provides = modShapeProvides (lc_shape lc),
Distribution/Backpack/UnifyM.hs view
@@ -60,7 +60,7 @@ import Distribution.Types.IncludeRenaming import Distribution.Types.ComponentInclude import Distribution.Types.AnnotatedId-import Distribution.Types.ComponentName+import Distribution.Types.ModuleRenaming import Distribution.Verbosity  import Data.STRef@@ -70,7 +70,6 @@ import qualified Data.Set as Set import Data.IntMap (IntMap) import qualified Data.IntMap as IntMap-import qualified Data.Traversable as T import Text.PrettyPrint  -- TODO: more detailed trace output on high verbosity would probably@@ -321,7 +320,7 @@ convertUnitId' stk (IndefFullUnitId cid insts) = do     fs <- fmap unify_uniq getUnifEnv     x <- liftST $ UnionFind.fresh (error "convertUnitId") -- tie the knot later-    insts_u <- T.forM insts $ convertModule' (extendMuEnv stk x)+    insts_u <- for insts $ convertModule' (extendMuEnv stk x)     u <- readUnifRef fs     writeUnifRef fs (u+1)     y <- liftST $ UnionFind.fresh (UnitIdU u cid insts_u)@@ -359,11 +358,11 @@  -- | Conversion of 'ModuleSubst' to 'ModuleSubstU' convertModuleSubst :: Map ModuleName OpenModule -> UnifyM s (Map ModuleName (ModuleU s))-convertModuleSubst = T.mapM convertModule+convertModuleSubst = traverse convertModule  -- | Conversion of 'ModuleSubstU' to 'ModuleSubst' convertModuleSubstU :: ModuleSubstU s -> UnifyM s OpenModuleSubst-convertModuleSubstU = T.mapM convertModuleU+convertModuleSubstU = traverse convertModuleU  ----------------------------------------------------------------------- -- Conversion from the unifiable data types@@ -400,7 +399,7 @@                     failWith (text "Unsupported mutually recursive unit identifier")                     -- return (UnitIdVar i)                 Nothing -> do-                    insts <- T.forM insts_u $ convertModuleU' (extendMooEnv stk u)+                    insts <- for insts_u $ convertModuleU' (extendMooEnv stk u)                     return (IndefFullUnitId cid insts)  convertModuleU' :: MooEnv -> ModuleU s -> UnifyM s OpenModule@@ -615,11 +614,11 @@  -- | Convert a 'ModuleProvides' to a 'ModuleProvidesU' convertModuleProvides :: ModuleProvides -> UnifyM s (ModuleProvidesU s)-convertModuleProvides = T.mapM (mapM (T.mapM convertModule))+convertModuleProvides = traverse (traverse (traverse convertModule))  -- | Convert a 'ModuleProvidesU' to a 'ModuleProvides' convertModuleProvidesU :: ModuleProvidesU s -> UnifyM s ModuleProvides-convertModuleProvidesU = T.mapM (mapM (T.mapM convertModuleU))+convertModuleProvidesU = traverse (traverse (traverse convertModuleU))  convertModuleRequires :: ModuleRequires -> UnifyM s (ModuleRequiresU s) convertModuleRequires = convertModuleProvides
Distribution/CabalSpecVersion.hs view
@@ -26,12 +26,19 @@     | CabalSpecV2_2     | CabalSpecV2_4     | CabalSpecV3_0+    -- 3.2: no changes+    | CabalSpecV3_4   deriving (Eq, Ord, Show, Read, Enum, Bounded, Typeable, Data, Generic) +instance Binary CabalSpecVersion+instance Structured CabalSpecVersion+instance NFData CabalSpecVersion where rnf = genericRnf+ -- | Show cabal spec version, but not the way in the .cabal files -- -- @since 3.0.0.0 showCabalSpecVersion :: CabalSpecVersion -> String+showCabalSpecVersion CabalSpecV3_4  = "3.4" showCabalSpecVersion CabalSpecV3_0  = "3.0" showCabalSpecVersion CabalSpecV2_4  = "2.4" showCabalSpecVersion CabalSpecV2_2  = "2.2"@@ -49,14 +56,15 @@ showCabalSpecVersion CabalSpecV1_0  = "1.0"  cabalSpecLatest :: CabalSpecVersion-cabalSpecLatest = CabalSpecV3_0+cabalSpecLatest = CabalSpecV3_4 -cabalSpecFromVersionDigits :: [Int] -> CabalSpecVersion+-- | Parse 'CabalSpecVersion' from version digits.+--+-- It may fail if for recent versions the version is not exact.+--+cabalSpecFromVersionDigits :: [Int] -> Maybe CabalSpecVersion cabalSpecFromVersionDigits v-    = fromMaybe cabalSpecLatest (cabalSpecFromVersionDigitsMaybe v)--cabalSpecFromVersionDigitsMaybe :: [Int] -> Maybe CabalSpecVersion-cabalSpecFromVersionDigitsMaybe v+    | v == [3,4]  = Just CabalSpecV3_4     | v == [3,0]  = Just CabalSpecV3_0     | v == [2,4]  = Just CabalSpecV2_4     | v == [2,2]  = Just CabalSpecV2_2@@ -74,7 +82,9 @@     | v >= [1,1]  = Just CabalSpecV1_2     | otherwise   = Just CabalSpecV1_0 +-- | @since 3.4.0.0 cabalSpecToVersionDigits :: CabalSpecVersion -> [Int]+cabalSpecToVersionDigits CabalSpecV3_4   = [3,4] cabalSpecToVersionDigits CabalSpecV3_0   = [3,0] cabalSpecToVersionDigits CabalSpecV2_4   = [2,4] cabalSpecToVersionDigits CabalSpecV2_2   = [2,2]@@ -103,6 +113,7 @@ -- >>> cabalSpecMinimumLibraryVersion CabalSpecV2_4 -- [2,3] --+-- @since 3.4.0.0 cabalSpecMinimumLibraryVersion :: CabalSpecVersion -> [Int] cabalSpecMinimumLibraryVersion CabalSpecV1_0 = [1,0] cabalSpecMinimumLibraryVersion csv = case cabalSpecToVersionDigits (pred csv) of
Distribution/Compat/CharParsing.hs view
@@ -38,6 +38,7 @@   , CharParsing(..)   -- * Cabal additions   , integral+  , signedIntegral   , munch1   , munch   , skipSpaces1@@ -330,6 +331,14 @@     f '9' = 9     f _   = error "panic! integral" {-# INLINE integral #-}++-- | Accepts negative (starting with @-@) and positive (without sign) integral+-- numbers.+-- +-- @since 3.4.0.0+signedIntegral :: (CharParsing m, Integral a) => m a+signedIntegral = negate <$ char '-' <*> integral <|> integral+{-# INLINE signedIntegral #-}  -- | Greedily munch characters while predicate holds. -- Require at least one character.
Distribution/Compat/CopyFile.hs view
@@ -14,13 +14,11 @@ import Prelude () import Distribution.Compat.Prelude -import Distribution.Compat.Exception- #ifndef mingw32_HOST_OS import Distribution.Compat.Internal.TempFile  import Control.Exception-         ( bracketOnError, throwIO )+         ( bracketOnError ) import qualified Data.ByteString.Lazy as BSL import System.IO.Error          ( ioeSetLocation )@@ -43,8 +41,6 @@  #else /* else mingw32_HOST_OS */ -import Control.Exception-  ( throwIO ) import qualified Data.ByteString.Lazy as BSL import System.IO.Error   ( ioeSetLocation )@@ -69,16 +65,16 @@ import qualified System.Win32.File as Win32 ( copyFile ) #endif /* mingw32_HOST_OS */ -copyOrdinaryFile, copyExecutableFile :: FilePath -> FilePath -> NoCallStackIO ()+copyOrdinaryFile, copyExecutableFile :: FilePath -> FilePath -> IO () copyOrdinaryFile   src dest = copyFile src dest >> setFileOrdinary   dest copyExecutableFile src dest = copyFile src dest >> setFileExecutable dest -setFileOrdinary,  setFileExecutable, setDirOrdinary  :: FilePath -> NoCallStackIO ()+setFileOrdinary,  setFileExecutable, setDirOrdinary  :: FilePath -> IO () #ifndef mingw32_HOST_OS setFileOrdinary   path = setFileMode path 0o644 -- file perms -rw-r--r-- setFileExecutable path = setFileMode path 0o755 -- file perms -rwxr-xr-x -setFileMode :: FilePath -> FileMode -> NoCallStackIO ()+setFileMode :: FilePath -> FileMode -> IO () setFileMode name m =   withFilePath name $ \s -> do     throwErrnoPathIfMinus1_ "setFileMode" name (c_chmod s m)@@ -91,7 +87,7 @@  -- | Copies a file to a new destination. -- Often you should use `copyFileChanged` instead.-copyFile :: FilePath -> FilePath -> NoCallStackIO ()+copyFile :: FilePath -> FilePath -> IO () copyFile fromFPath toFPath =   copy     `catchIO` (\ioe -> throwIO (ioeSetLocation ioe "copyFile"))@@ -229,7 +225,7 @@ -- | Like `copyFile`, but does not touch the target if source and destination -- are already byte-identical. This is recommended as it is useful for -- time-stamp based recompilation avoidance.-copyFileChanged :: FilePath -> FilePath -> NoCallStackIO ()+copyFileChanged :: FilePath -> FilePath -> IO () copyFileChanged src dest = do   equal <- filesEqual src dest   unless equal $ copyFile src dest@@ -237,7 +233,7 @@ -- | Checks if two files are byte-identical. -- Returns False if either of the files do not exist or if files -- are of different size.-filesEqual :: FilePath -> FilePath -> NoCallStackIO Bool+filesEqual :: FilePath -> FilePath -> IO Bool filesEqual f1 f2 = do   ex1 <- doesFileExist f1   ex2 <- doesFileExist f2
Distribution/Compat/CreatePipe.hs view
@@ -4,7 +4,10 @@  module Distribution.Compat.CreatePipe (createPipe) where -import System.IO (Handle, hSetEncoding, localeEncoding)+#if MIN_VERSION_process(1,2,1)+import System.Process (createPipe)+#else+import System.IO (Handle, hSetBinaryMode)  import Prelude () import Distribution.Compat.Prelude@@ -40,11 +43,11 @@         return (readfd, writefd)     (do readh <- fdToHandle readfd ReadMode         writeh <- fdToHandle writefd WriteMode-        hSetEncoding readh localeEncoding-        hSetEncoding writeh localeEncoding+        hSetBinaryMode readh True+        hSetBinaryMode writeh True         return (readh, writeh)) `onException` (close readfd >> close writefd)   where-    fdToHandle :: CInt -> IOMode -> NoCallStackIO Handle+    fdToHandle :: CInt -> IOMode -> IO Handle     fdToHandle fd mode = do         (fd', deviceType) <- mkFD fd mode (Just (Stream, 0, 0)) False False         mkHandleFromFD fd' deviceType "" mode False Nothing@@ -69,9 +72,10 @@     (readfd, writefd) <- Posix.createPipe     readh <- fdToHandle readfd     writeh <- fdToHandle writefd-    hSetEncoding readh localeEncoding-    hSetEncoding writeh localeEncoding+    hSetBinaryMode readh True+    hSetBinaryMode writeh True     return (readh, writeh)   where     _ = callStack+#endif #endif
Distribution/Compat/DList.hs view
@@ -12,6 +12,7 @@ module Distribution.Compat.DList (     DList,     runDList,+    empty,     singleton,     fromList,     toList,@@ -19,7 +20,7 @@ ) where  import Prelude ()-import Distribution.Compat.Prelude hiding (toList)+import Distribution.Compat.Prelude hiding (toList, empty)  -- | Difference list. newtype DList a = DList ([a] -> [a])@@ -31,6 +32,10 @@ singleton :: a -> DList a singleton a = DList (a:) +-- | @since 3.4.0.0+empty :: DList a+empty = DList id+ fromList :: [a] -> DList a fromList as = DList (as ++) @@ -41,7 +46,7 @@ snoc xs x = xs <> singleton x  instance Monoid (DList a) where-  mempty = DList id+  mempty  = empty   mappend = (<>)  instance Semigroup (DList a) where
Distribution/Compat/Environment.hs view
@@ -38,7 +38,7 @@ import System.Posix.Internals ( withFilePath ) #endif /* mingw32_HOST_OS */ -getEnvironment :: NoCallStackIO [(String, String)]+getEnvironment :: IO [(String, String)] #ifdef mingw32_HOST_OS -- On Windows, the names of environment variables are case-insensitive, but are -- often given in mixed-case (e.g. "PATH" is "Path"), so we have to normalise
Distribution/Compat/Exception.hs view
@@ -6,22 +6,32 @@   displayException,   ) where +#ifdef MIN_VERSION_base+#define MINVER_base_48 MIN_VERSION_base(4,8,0)+#else+#define MINVER_base_48 (__GLASGOW_HASKELL__ >= 710)+#endif+ import System.Exit import qualified Control.Exception as Exception-#if __GLASGOW_HASKELL__ >= 710++#if MINVER_base_48 import Control.Exception (displayException) #endif +-- | Try 'IOException'. tryIO :: IO a -> IO (Either Exception.IOException a) tryIO = Exception.try +-- | Catch 'IOException'. catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a catchIO = Exception.catch +-- | Catch 'ExitCode' catchExit :: IO a -> (ExitCode -> IO a) -> IO a catchExit = Exception.catch -#if __GLASGOW_HASKELL__ < 710+#if !MINVER_base_48 displayException :: Exception.Exception e => e -> String displayException = show #endif
Distribution/Compat/GetShortPathName.hs view
@@ -40,7 +40,7 @@ --      will always return the required buffer size for a --      specified lpszLongPath. ---getShortPathName :: FilePath -> NoCallStackIO FilePath+getShortPathName :: FilePath -> IO FilePath getShortPathName path =   Win32.withTString path $ \c_path -> do     c_len <- Win32.failIfZero "GetShortPathName #1 failed!" $@@ -53,7 +53,7 @@  #else -getShortPathName :: FilePath -> NoCallStackIO FilePath+getShortPathName :: FilePath -> IO FilePath getShortPathName path = return path  #endif
Distribution/Compat/Graph.hs view
@@ -88,7 +88,6 @@ import Prelude ()  import Data.Array                    ((!))-import Data.Either                   (partitionEithers) import Data.Graph                    (SCC (..)) import Distribution.Utils.Structured (Structure (..), Structured (..)) 
Distribution/Compat/Internal/TempFile.hs view
@@ -10,17 +10,22 @@ import Distribution.Compat.Exception  import System.FilePath        ((</>))-import Foreign.C              (CInt, eEXIST, getErrno, errnoToIOError)  import System.IO              (Handle, openTempFile, openBinaryTempFile)+#if defined(__IO_MANAGER_WINIO__)+import System.IO              (openBinaryTempFileWithDefaultPermissions)+#else+import Control.Exception      (onException) import Data.Bits              ((.|.))-import System.Posix.Internals (c_open, c_close, o_CREAT, o_EXCL, o_RDWR,-                               o_BINARY, o_NONBLOCK, o_NOCTTY,-                               withFilePath, c_getpid)-import System.IO.Error        (isAlreadyExistsError)+import Foreign.C              (CInt, eEXIST, getErrno, errnoToIOError) import GHC.IO.Handle.FD       (fdToHandle)-import Control.Exception      (onException)+import System.Posix.Internals (c_open, c_close, o_EXCL, o_BINARY, withFilePath,+                               o_CREAT, o_RDWR, o_NONBLOCK, o_NOCTTY)+#endif +import System.Posix.Internals (c_getpid)+import System.IO.Error        (isAlreadyExistsError)+ #if defined(mingw32_HOST_OS) || defined(ghcjs_HOST_OS) import System.Directory       ( createDirectory ) #else@@ -36,10 +41,17 @@ -- TODO: This file should probably be removed.  -- This is a copy/paste of the openBinaryTempFile definition, but--- if uses 666 rather than 600 for the permissions. The base library--- needs to be changed to make this better.+-- it uses 666 rather than 600 for the permissions. Newer versions+-- of base have a new function with this behavior which we use on+-- Windows when the new IO manager is used. openNewBinaryFile :: FilePath -> String -> IO (FilePath, Handle) openNewBinaryFile dir template = do+  -- This method can't be used under WINIO. Also the current implementation has+  -- thread safety issues depending on which GHC is used.  On newer GHC's let's+  -- use the built in one.+#if defined(__IO_MANAGER_WINIO__)+  openBinaryTempFileWithDefaultPermissions dir template+#else   pid <- c_getpid   findTempName pid   where@@ -88,6 +100,12 @@                   | last a == pathSeparator = a ++ b                   | otherwise = a ++ [pathSeparator] ++ b +-- FIXME: Copied from GHC.Handle+std_flags, output_flags, rw_flags :: CInt+std_flags    = o_NONBLOCK   .|. o_NOCTTY+output_flags = std_flags    .|. o_CREAT+rw_flags     = output_flags .|. o_RDWR+ -- FIXME: Should use System.FilePath library pathSeparator :: Char #ifdef mingw32_HOST_OS@@ -95,12 +113,8 @@ #else pathSeparator = '/' #endif---- FIXME: Copied from GHC.Handle-std_flags, output_flags, rw_flags :: CInt-std_flags    = o_NONBLOCK   .|. o_NOCTTY-output_flags = std_flags    .|. o_CREAT-rw_flags     = output_flags .|. o_RDWR+-- /* __IO_MANAGER_WINIO__ */+#endif  createTempDirectory :: FilePath -> String -> IO FilePath createTempDirectory dir template = do
Distribution/Compat/Lens.hs view
@@ -50,7 +50,6 @@ import Prelude() import Distribution.Compat.Prelude -import Control.Applicative (Const (..)) import Control.Monad.State.Class (MonadState (..), gets, modify)  import qualified Distribution.Compat.DList as DList
+ Distribution/Compat/NonEmptySet.hs view
@@ -0,0 +1,155 @@+{-# LANGUAGE CPP                #-}+{-# LANGUAGE DeriveDataTypeable #-}+module Distribution.Compat.NonEmptySet (+    NonEmptySet,+    -- * Construction+    singleton,+    -- * Insertion+    insert,+    -- * Deletion+    delete,+    -- * Conversions+    toNonEmpty,+    fromNonEmpty,+    toList,+    toSet,+    -- * Query+    member,+    -- * Map+    map,+) where++import Prelude (Bool (..), Eq, Maybe (..), Ord (..), Read, Show (..), String, error, otherwise, return, showParen, showString, ($), (++), (.))++import Control.DeepSeq    (NFData (..))+import Data.Data          (Data)+import Data.List.NonEmpty (NonEmpty (..))+import Data.Semigroup     (Semigroup (..))+import Data.Typeable      (Typeable)++import qualified Data.Foldable as F+import qualified Data.Set      as Set++import Distribution.Compat.Binary    (Binary (..))+import Distribution.Utils.Structured++#if MIN_VERSION_binary(0,6,0)+import Control.Applicative (empty)+#else+import Control.Monad (fail)+#endif++-- | @since 3.4.0.0+newtype NonEmptySet a = NES (Set.Set a)+  deriving (Eq, Ord, Typeable, Data, Read)++-------------------------------------------------------------------------------+-- Instances+-------------------------------------------------------------------------------++instance Show a => Show (NonEmptySet a) where+    showsPrec d s = showParen (d > 10)+        $ showString "fromNonEmpty "+        . showsPrec 11 (toNonEmpty s)++instance Binary a => Binary (NonEmptySet a) where+    put (NES s) = put s+    get = do+        xs <- get+        if Set.null xs+#if MIN_VERSION_binary(0,6,0)+        then empty+#else+        then fail "NonEmptySet: empty"+#endif+        else return (NES xs)++instance Structured a => Structured (NonEmptySet a) where+    structure = containerStructure++instance NFData a => NFData (NonEmptySet a) where+    rnf (NES x) = rnf x++-- | Note: there aren't @Monoid@ instance.+instance Ord a => Semigroup (NonEmptySet a) where+    NES x <> NES y = NES (Set.union x y)++instance F.Foldable NonEmptySet where+    foldMap f (NES s) = F.foldMap f s+    foldr f z (NES s) = F.foldr f z s++#if MIN_VERSION_base(4,8,0)+    toList         = toList+    null _         = False+    length (NES s) = F.length s+#endif++-------------------------------------------------------------------------------+-- Constructors+-------------------------------------------------------------------------------++singleton :: a -> NonEmptySet a+singleton = NES . Set.singleton++-------------------------------------------------------------------------------+-- Insertion+-------------------------------------------------------------------------------++insert :: Ord a => a -> NonEmptySet a -> NonEmptySet a+insert x (NES xs) = NES (Set.insert x xs)++-------------------------------------------------------------------------------+-- Deletion+-------------------------------------------------------------------------------++delete :: Ord a => a -> NonEmptySet a -> Maybe (NonEmptySet a)+delete x (NES xs)+    | Set.null res = Nothing+    | otherwise    = Just (NES xs)+  where+    res = Set.delete x xs++-------------------------------------------------------------------------------+-- Conversions+-------------------------------------------------------------------------------++fromNonEmpty :: Ord a => NonEmpty a -> NonEmptySet a+fromNonEmpty (x :| xs) = NES (Set.fromList (x : xs))++toNonEmpty :: NonEmptySet a -> NonEmpty a+toNonEmpty (NES s) = case Set.toList s of+    []   -> panic "toNonEmpty"+    x:xs -> x :| xs++toList :: NonEmptySet a -> [a]+toList (NES s) = Set.toList s++toSet :: NonEmptySet a -> Set.Set a+toSet (NES s) = s++-------------------------------------------------------------------------------+-- Query+-------------------------------------------------------------------------------++member :: Ord a => a -> NonEmptySet a -> Bool+member x (NES xs) = Set.member x xs++-------------------------------------------------------------------------------+-- Map+-------------------------------------------------------------------------------++map+    :: ( Ord b+#if !MIN_VERSION_containers(0,5,2)+       , Ord a+#endif+       )+    => (a -> b) -> NonEmptySet a -> NonEmptySet b+map f (NES x) = NES (Set.map f x)++-------------------------------------------------------------------------------+-- Internal+-------------------------------------------------------------------------------++panic :: String -> a+panic msg = error $ "NonEmptySet invariant violated: " ++ msg
Distribution/Compat/Prelude.hs view
@@ -1,7 +1,8 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE RankNTypes       #-}+{-# LANGUAGE Trustworthy      #-}+{-# LANGUAGE TypeOperators    #-}  #ifdef MIN_VERSION_base #define MINVER_base_411 MIN_VERSION_base(4,11,0)@@ -44,12 +45,17 @@     IsString (..),      -- * Some types-    IO, NoCallStackIO,     Map,     Set,+    NonEmptySet,     Identity (..),     Proxy (..),+    Const (..),+    Void, +    -- * Data.Either+    partitionEithers,+     -- * Data.Maybe     catMaybes, mapMaybe,     fromMaybe,@@ -62,6 +68,7 @@     intercalate, intersperse,     sort, sortBy,     nub, nubBy,+    partition,      -- * Data.List.NonEmpty     NonEmpty((:|)), foldl1, foldr1,@@ -79,6 +86,12 @@     Traversable, traverse, sequenceA,     for, +    -- * Data.Function+    on,++    -- * Data.Ord+    comparing,+     -- * Control.Arrow     first, @@ -87,26 +100,49 @@     unless, when,     ap, void,     foldM, filterM,+    join, guard, +    -- * Control.Exception+    catch, throwIO, evaluate,+    Exception (..), IOException, SomeException (..),+#if !MINVER_base_48+    displayException,+#endif+    tryIO, catchIO, catchExit,++    -- * Control.DeepSeq+    deepseq, force,+     -- * Data.Char     isSpace, isDigit, isUpper, isAlpha, isAlphaNum,     chr, ord,     toLower, toUpper, +    -- * Data.Void+    absurd, vacuous,+     -- * Data.Word & Data.Int     Word,     Word8, Word16, Word32, Word64,     Int8, Int16, Int32, Int64,      -- * Text.PrettyPrint-    (<<>>),+    (<<>>), (Disp.<+>), +    -- * System.Exit+    ExitCode (..),+    exitWith, exitSuccess, exitFailure,+     -- * Text.Read     readMaybe,++    -- * Debug.Trace (as deprecated functions)+    trace, traceShow, traceShowId,     ) where+ -- We also could hide few partial function import Prelude                       as BasePrelude hiding-  ( IO, mapM, mapM_, sequence, null, length, foldr, any, all, head, tail, last, init+  ( mapM, mapM_, sequence, null, length, foldr, any, all, head, tail, last, init   -- partial functions   , read   , foldr1, foldl1@@ -123,55 +159,57 @@ #endif   ) +-- AMP #if !MINVER_base_48 import Control.Applicative           (Applicative (..), (<$), (<$>))-import Distribution.Compat.Semigroup (Monoid (..)) import Data.Foldable                 (toList)+import Distribution.Compat.Semigroup (Monoid (..)) #else-import Data.Foldable                 (length, null, Foldable(toList))+import Data.Foldable (Foldable (toList), length, null) #endif -import Data.Foldable                 (Foldable (foldMap, foldr), find, foldl', for_, traverse_, any, all)-import Data.Traversable              (Traversable (traverse, sequenceA), for)+import Data.Foldable    (Foldable (foldMap, foldr), all, any, find, foldl', for_, traverse_)+import Data.Traversable (Traversable (sequenceA, traverse), for)+ import qualified Data.Foldable +-- Extra exports import Control.Applicative           (Alternative (..))-import Control.DeepSeq               (NFData (..))+import Control.Applicative           (Const (..))+import Control.Arrow                 (first)+import Control.DeepSeq               (NFData (..), deepseq, force)+import Control.Exception             (Exception (..), IOException, SomeException (..), catch, evaluate, throwIO)+import Control.Monad                 (MonadPlus (..), ap, filterM, foldM, guard, join, liftM, liftM2, unless, void, when)+import Data.Char                     (chr, isAlpha, isAlphaNum, isDigit, isSpace, isUpper, ord, toLower, toUpper) import Data.Data                     (Data)-import Distribution.Compat.Typeable  (Typeable, TypeRep, typeRep)-import Distribution.Compat.Binary    (Binary (..))-import Distribution.Compat.Semigroup (Semigroup (..), gmappend, gmempty)-import GHC.Generics                  (Generic, Rep(..),-                                      V1, U1(U1), K1(unK1), M1(unM1),-                                      (:*:)((:*:)), (:+:)(L1,R1))-+import Data.Either                   (partitionEithers)+import Data.Function                 (on) import Data.Functor.Identity         (Identity (..))+import Data.Int                      (Int16, Int32, Int64, Int8)+import Data.List                     (intercalate, intersperse, isPrefixOf, isSuffixOf, nub, nubBy, partition, sort, sortBy, unfoldr)+import Data.List.NonEmpty            (NonEmpty ((:|)), head, init, last, tail) import Data.Map                      (Map)+import Data.Maybe                    (catMaybes, fromMaybe, isJust, isNothing, listToMaybe, mapMaybe, maybeToList)+import Data.Ord                      (comparing) import Data.Proxy                    (Proxy (..)) import Data.Set                      (Set)--import Control.Arrow                 (first)-import Control.Monad                 hiding (mapM)-import Data.Char-import Data.List                     (intercalate, intersperse, isPrefixOf,-                                      isSuffixOf, nub, nubBy, sort, sortBy,-                                      unfoldr)-import Data.List.NonEmpty            (NonEmpty((:|)), head, tail, init, last)-import Data.Maybe import Data.String                   (IsString (..))-import Data.Int-import Data.Word+import Data.Void                     (Void, absurd, vacuous)+import Data.Word                     (Word, Word16, Word32, Word64, Word8)+import Distribution.Compat.Binary    (Binary (..))+import Distribution.Compat.Semigroup (Semigroup (..), gmappend, gmempty)+import Distribution.Compat.Typeable  (TypeRep, Typeable, typeRep)+import GHC.Generics                  ((:*:) ((:*:)), (:+:) (L1, R1), Generic, K1 (unK1), M1 (unM1), Rep (..), U1 (U1), V1)+import System.Exit                   (ExitCode (..), exitFailure, exitSuccess, exitWith) import Text.Read                     (readMaybe)  import qualified Text.PrettyPrint as Disp -import qualified Prelude as OrigPrelude-import Distribution.Compat.Stack--import Distribution.Utils.Structured (Structured)+import Distribution.Compat.Exception+import Distribution.Compat.NonEmptySet (NonEmptySet)+import Distribution.Utils.Structured   (Structured) -type IO a = WithCallStack (OrigPrelude.IO a)-type NoCallStackIO a = OrigPrelude.IO a+import qualified Debug.Trace  -- | New name for 'Text.PrettyPrint.<>' (<<>>) :: Disp.Doc -> Disp.Doc -> Disp.Doc@@ -257,3 +295,22 @@ {-# INLINE foldl1 #-} foldl1 :: (a -> a -> a) -> NonEmpty a -> a foldl1 = Data.Foldable.foldl1++-------------------------------------------------------------------------------+-- Trace+-------------------------------------------------------------------------------++-- Functions from Debug.Trace+-- but with DEPRECATED pragma, so -Werror will scream on them.++trace :: String -> a -> a+trace = Debug.Trace.trace+{-# DEPRECATED trace "Don't leave me in the code" #-}++traceShowId :: Show a => a -> a+traceShowId x = Debug.Trace.traceShow x x+{-# DEPRECATED traceShowId "Don't leave me in the code" #-}++traceShow :: Show a => a -> b -> b+traceShow = Debug.Trace.traceShow+{-# DEPRECATED traceShow "Don't leave me in the code" #-}
Distribution/Compat/Process.hs view
@@ -26,11 +26,11 @@ -- in the presence of @exec(3)@ on Windows. -- -- Unfortunately the process job support is badly broken in @process@ releases--- prior to 1.6.8, so we disable it in these versions, despite the fact that+-- prior to 1.6.9, so we disable it in these versions, despite the fact that -- this means we may see sporatic build failures without jobs. enableProcessJobs :: CreateProcess -> CreateProcess #ifdef MIN_VERSION_process-#if MIN_VERSION_process(1,6,8)+#if MIN_VERSION_process(1,6,9) enableProcessJobs cp = cp {Process.use_process_jobs = True} #else enableProcessJobs cp = cp
Distribution/Compat/ResponseFile.hs view
@@ -1,68 +1,67 @@-{-# LANGUAGE CPP, RankNTypes, FlexibleContexts #-}
-
--- Compatibility layer for GHC.ResponseFile
--- Implementation from base 4.12.0 is used.
--- http://hackage.haskell.org/package/base-4.12.0.0/src/LICENSE
-module Distribution.Compat.ResponseFile (expandResponse) where
-
-import Prelude (mapM)
-import Distribution.Compat.Prelude
-
-import System.Exit
-import System.FilePath
-import System.IO (hPutStrLn, stderr)
-import System.IO.Error
-
-#if MIN_VERSION_base(4,12,0)
-import GHC.ResponseFile (unescapeArgs)
-#else
-
-unescapeArgs :: String -> [String]
-unescapeArgs = filter (not . null) . unescape
-
-data Quoting = NoneQ | SngQ | DblQ
-
-unescape :: String -> [String]
-unescape args = reverse . map reverse $ go args NoneQ False [] []
-    where
-      -- n.b., the order of these cases matters; these are cribbed from gcc
-      -- case 1: end of input
-      go []     _q    _bs   a as = a:as
-      -- case 2: back-slash escape in progress
-      go (c:cs) q     True  a as = go cs q     False (c:a) as
-      -- case 3: no back-slash escape in progress, but got a back-slash
-      go (c:cs) q     False a as
-        | '\\' == c              = go cs q     True  a     as
-      -- case 4: single-quote escaping in progress
-      go (c:cs) SngQ  False a as
-        | '\'' == c              = go cs NoneQ False a     as
-        | otherwise              = go cs SngQ  False (c:a) as
-      -- case 5: double-quote escaping in progress
-      go (c:cs) DblQ  False a as
-        | '"' == c               = go cs NoneQ False a     as
-        | otherwise              = go cs DblQ  False (c:a) as
-      -- case 6: no escaping is in progress
-      go (c:cs) NoneQ False a as
-        | isSpace c              = go cs NoneQ False []    (a:as)
-        | '\'' == c              = go cs SngQ  False a     as
-        | '"'  == c              = go cs DblQ  False a     as
-        | otherwise              = go cs NoneQ False (c:a) as
-
-#endif
-
-expandResponse :: [String] -> IO [String]
-expandResponse = go recursionLimit "."
-  where
-    recursionLimit = 100
-
-    go :: Int -> FilePath -> [String] -> IO [String]
-    go n dir
-      | n >= 0    = fmap concat . mapM (expand n dir)
-      | otherwise = const $ hPutStrLn stderr "Error: response file recursion limit exceeded." >> exitFailure
-
-    expand :: Int -> FilePath -> String -> IO [String]
-    expand n dir arg@('@':f) = readRecursively n (dir </> f) `catchIOError` (const $ print "?" >> return [arg])
-    expand _n _dir x = return [x]
-
-    readRecursively :: Int -> FilePath -> IO [String]
-    readRecursively n f = go (n - 1) (takeDirectory f) =<< unescapeArgs <$> readFile f
+{-# LANGUAGE CPP, RankNTypes, FlexibleContexts #-}++-- Compatibility layer for GHC.ResponseFile+-- Implementation from base 4.12.0 is used.+-- http://hackage.haskell.org/package/base-4.12.0.0/src/LICENSE+module Distribution.Compat.ResponseFile (expandResponse) where++import Distribution.Compat.Prelude+import Prelude ()++import System.FilePath+import System.IO (hPutStrLn, stderr)+import System.IO.Error++#if MIN_VERSION_base(4,12,0)+import GHC.ResponseFile (unescapeArgs)+#else++unescapeArgs :: String -> [String]+unescapeArgs = filter (not . null) . unescape++data Quoting = NoneQ | SngQ | DblQ++unescape :: String -> [String]+unescape args = reverse . map reverse $ go args NoneQ False [] []+    where+      -- n.b., the order of these cases matters; these are cribbed from gcc+      -- case 1: end of input+      go []     _q    _bs   a as = a:as+      -- case 2: back-slash escape in progress+      go (c:cs) q     True  a as = go cs q     False (c:a) as+      -- case 3: no back-slash escape in progress, but got a back-slash+      go (c:cs) q     False a as+        | '\\' == c              = go cs q     True  a     as+      -- case 4: single-quote escaping in progress+      go (c:cs) SngQ  False a as+        | '\'' == c              = go cs NoneQ False a     as+        | otherwise              = go cs SngQ  False (c:a) as+      -- case 5: double-quote escaping in progress+      go (c:cs) DblQ  False a as+        | '"' == c               = go cs NoneQ False a     as+        | otherwise              = go cs DblQ  False (c:a) as+      -- case 6: no escaping is in progress+      go (c:cs) NoneQ False a as+        | isSpace c              = go cs NoneQ False []    (a:as)+        | '\'' == c              = go cs SngQ  False a     as+        | '"'  == c              = go cs DblQ  False a     as+        | otherwise              = go cs NoneQ False (c:a) as++#endif++expandResponse :: [String] -> IO [String]+expandResponse = go recursionLimit "."+  where+    recursionLimit = 100++    go :: Int -> FilePath -> [String] -> IO [String]+    go n dir+      | n >= 0    = fmap concat . traverse (expand n dir)+      | otherwise = const $ hPutStrLn stderr "Error: response file recursion limit exceeded." >> exitFailure++    expand :: Int -> FilePath -> String -> IO [String]+    expand n dir arg@('@':f) = readRecursively n (dir </> f) `catchIOError` (const $ print "?" >> return [arg])+    expand _n _dir x = return [x]++    readRecursively :: Int -> FilePath -> IO [String]+    readRecursively n f = go (n - 1) (takeDirectory f) =<< unescapeArgs <$> readFile f
Distribution/Compat/Time.hs view
@@ -72,7 +72,7 @@ -- -- This is a modified version of the code originally written for Shake by Neil -- Mitchell. See module Development.Shake.FileInfo.-getModTime :: FilePath -> NoCallStackIO ModTime+getModTime :: FilePath -> IO ModTime  #if defined mingw32_HOST_OS @@ -110,7 +110,7 @@ foreign import CALLCONV "windows.h GetFileAttributesExW"   c_getFileAttributesEx :: LPCTSTR -> Int32 -> LPVOID -> Prelude.IO BOOL -getFileAttributesEx :: String -> LPVOID -> NoCallStackIO BOOL+getFileAttributesEx :: String -> LPVOID -> IO BOOL getFileAttributesEx path lpFileInformation =   withTString path $ \c_path ->       c_getFileAttributesEx c_path getFileExInfoStandard lpFileInformation@@ -154,14 +154,14 @@                        + (secToUnixEpoch * windowsTick)  -- | Return age of given file in days.-getFileAge :: FilePath -> NoCallStackIO Double+getFileAge :: FilePath -> IO Double getFileAge file = do   t0 <- getModificationTime file   t1 <- getCurrentTime   return $ realToFrac (t1 `diffUTCTime` t0) / realToFrac posixDayLength  -- | Return the current time as 'ModTime'.-getCurTime :: NoCallStackIO ModTime+getCurTime :: IO ModTime getCurTime = posixTimeToModTime `fmap` getPOSIXTime -- Uses 'gettimeofday'.  -- | Based on code written by Neil Mitchell for Shake. See
Distribution/Compiler.hs view
@@ -1,5 +1,8 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveTraversable #-}  ----------------------------------------------------------------------------- -- |@@ -122,7 +125,8 @@ -- Cabal parses only @ghc-options@ and @ghcjs-options@, others are omitted. -- data PerCompilerFlavor v = PerCompilerFlavor v v-  deriving (Generic, Show, Read, Eq, Typeable, Data)+  deriving (Generic, Show, Read, Eq, Typeable, Data, Functor, Foldable+           , Traversable)  instance Binary a => Binary (PerCompilerFlavor a) instance Structured a => Structured (PerCompilerFlavor a)
Distribution/FieldGrammar.hs view
@@ -26,6 +26,8 @@     runFieldParser,     runFieldParser',     defaultFreeTextFieldDefST,+    -- * Newtypes+    module Distribution.FieldGrammar.Newtypes,     )  where  import Distribution.Compat.Prelude@@ -34,10 +36,11 @@ import qualified Data.Map.Strict as Map  import Distribution.FieldGrammar.Class+import Distribution.FieldGrammar.Newtypes import Distribution.FieldGrammar.Parsec import Distribution.FieldGrammar.Pretty import Distribution.Fields.Field-import Distribution.Utils.Generic (spanMaybe)+import Distribution.Utils.Generic         (spanMaybe)  type ParsecFieldGrammar' a = ParsecFieldGrammar a a type PrettyFieldGrammar' a = PrettyFieldGrammar a a
Distribution/FieldGrammar/Class.hs view
@@ -1,3 +1,13 @@+{-# LANGUAGE CPP                     #-}+{-# LANGUAGE ConstraintKinds         #-}+{-# LANGUAGE FunctionalDependencies  #-}+{-# LANGUAGE RankNTypes              #-}+{-# LANGUAGE ScopedTypeVariables     #-}+#if __GLASGOW_HASKELL__ >= 800+{-# LANGUAGE UndecidableSuperClasses #-}+#else+{-# LANGUAGE UndecidableInstances #-}+#endif module Distribution.FieldGrammar.Class (     FieldGrammar (..),     uniqueField,@@ -5,17 +15,16 @@     optionalFieldDef,     monoidalField,     defaultFreeTextFieldDefST,-    ) where+) where  import Distribution.Compat.Lens import Distribution.Compat.Prelude import Prelude () -import Distribution.CabalSpecVersion (CabalSpecVersion)-import Distribution.Compat.Newtype   (Newtype)+import Distribution.CabalSpecVersion      (CabalSpecVersion)+import Distribution.Compat.Newtype        (Newtype)+import Distribution.FieldGrammar.Newtypes import Distribution.Fields.Field-import Distribution.Parsec           (Parsec)-import Distribution.Pretty           (Pretty) import Distribution.Utils.ShortText  -- | 'FieldGrammar' is parametrised by@@ -27,13 +36,17 @@ -- -- /Note:/ We'd like to have @forall s. Applicative (f s)@ context. ---class FieldGrammar g where+class+    ( c SpecVersion, c TestedWith, c SpecLicense, c Token, c Token', c FilePathNT+    )+    => FieldGrammar c g | g -> c+  where     -- | Unfocus, zoom out, /blur/ 'FieldGrammar'.-    blurFieldGrammar :: ALens' a b -> g b c -> g a c+    blurFieldGrammar :: ALens' a b -> g b d -> g a d      -- | Field which should be defined, exactly once.     uniqueFieldAla-        :: (Parsec b, Pretty b, Newtype a b)+        :: (c b, Newtype a b)         => FieldName   -- ^ field name         -> (a -> b)    -- ^ 'Newtype' pack         -> ALens' s a  -- ^ lens into the field@@ -48,7 +61,7 @@      -- | Optional field.     optionalFieldAla-        :: (Parsec b, Pretty b, Newtype a b)+        :: (c b, Newtype a b)         => FieldName          -- ^ field name         -> (a -> b)           -- ^ 'pack'         -> ALens' s (Maybe a) -- ^ lens into the field@@ -56,7 +69,7 @@      -- | Optional field with default value.     optionalFieldDefAla-        :: (Parsec b, Pretty b, Newtype a b, Eq a)+        :: (c b, Newtype a b, Eq a)         => FieldName   -- ^ field name         -> (a -> b)    -- ^ 'Newtype' pack         -> ALens' s a  -- ^ @'Lens'' s a@: lens into the field@@ -94,7 +107,7 @@     -- /Note:/ 'optionalFieldAla' is a @monoidalField@ with 'Last' monoid.     --     monoidalFieldAla-        :: (Parsec b, Pretty b, Monoid a, Newtype a b)+        :: (c b, Monoid a, Newtype a b)         => FieldName   -- ^ field name         -> (a -> b)    -- ^ 'pack'         -> ALens' s a  -- ^ lens into the field@@ -133,42 +146,55 @@         -> g s a         -> g s a +    -- | Annotate field with since spec-version.+    -- This is used to recognise, but warn about the field.+    -- It is used to process @other-extensions@ field.+    --+    -- Default implementation is to not warn.+    --+    -- @since 3.4.0.0+    availableSinceWarn+        :: CabalSpecVersion  -- ^ spec version+        -> g s a+        -> g s a+    availableSinceWarn _ = id+ -- | Field which can be defined at most once. uniqueField-    :: (FieldGrammar g, Parsec a, Pretty a)+    :: (FieldGrammar c g, c (Identity a))     => FieldName   -- ^ field name     -> ALens' s a  -- ^ lens into the field     -> g s a-uniqueField fn = uniqueFieldAla fn Identity+uniqueField fn l = uniqueFieldAla fn Identity l  -- | Field which can be defined at most once. optionalField-    :: (FieldGrammar g, Parsec a, Pretty a)+    :: (FieldGrammar c g, c (Identity a))     => FieldName          -- ^ field name     -> ALens' s (Maybe a) -- ^ lens into the field     -> g s (Maybe a)-optionalField fn = optionalFieldAla fn Identity+optionalField fn l = optionalFieldAla fn Identity l  -- | Optional field with default value. optionalFieldDef-    :: (FieldGrammar g, Functor (g s), Parsec a, Pretty a, Eq a)+    :: (FieldGrammar c g, Functor (g s), c (Identity a), Eq a)     => FieldName   -- ^ field name     -> ALens' s a  -- ^ @'Lens'' s a@: lens into the field     -> a           -- ^ default value     -> g s a-optionalFieldDef fn = optionalFieldDefAla fn Identity+optionalFieldDef fn l x = optionalFieldDefAla fn Identity l x  -- | Field which can be define multiple times, and the results are @mappend@ed. monoidalField-    :: (FieldGrammar g, Parsec a, Pretty a, Monoid a)+    :: (FieldGrammar c g, c (Identity a), Monoid a)     => FieldName   -- ^ field name     -> ALens' s a  -- ^ lens into the field     -> g s a-monoidalField fn = monoidalFieldAla fn Identity+monoidalField fn l = monoidalFieldAla fn Identity l  -- | Default implementation for 'freeTextFieldDefST'. defaultFreeTextFieldDefST-    :: (Functor (g s), FieldGrammar g)+    :: (Functor (g s), FieldGrammar c g)     => FieldName     -> ALens' s ShortText -- ^ lens into the field     -> g s ShortText
Distribution/FieldGrammar/FieldDescrs.hs view
@@ -1,5 +1,8 @@-{-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE RankNTypes    #-}+{-# LANGUAGE DeriveFunctor         #-}+{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RankNTypes            #-}+{-# LANGUAGE UndecidableInstances  #-} module Distribution.FieldGrammar.FieldDescrs (     FieldDescrs,     fieldDescrPretty,@@ -14,7 +17,7 @@ import Distribution.Compat.Lens    (aview, cloneLens) import Distribution.Compat.Newtype import Distribution.FieldGrammar-import Distribution.Pretty         (pretty, showFreeText)+import Distribution.Pretty         (Pretty (..), showFreeText)  import qualified Data.Map                        as Map import qualified Distribution.Compat.CharParsing as C@@ -45,7 +48,7 @@  -- | Lookup a field value parser. fieldDescrParse :: P.CabalParsing m => FieldDescrs s a -> P.FieldName -> Maybe (s -> m s)-fieldDescrParse (F m) fn = pParse <$> Map.lookup fn m+fieldDescrParse (F m) fn = (\f -> pParse f) <$> Map.lookup fn m  fieldDescrsToList     :: P.CabalParsing m@@ -55,7 +58,7 @@     mk (name, SP ppr parse) = (name, ppr, parse)  -- | /Note:/ default values are printed.-instance FieldGrammar FieldDescrs where+instance FieldGrammar ParsecPretty FieldDescrs where     blurFieldGrammar l (F m) = F (fmap blur m) where         blur (SP f g) = SP (f . aview l) (cloneLens l g) @@ -113,3 +116,6 @@      trim :: String -> String     trim = dropWhile isSpace . dropWhileEnd isSpace++class    (P.Parsec a, Pretty a) => ParsecPretty a+instance (P.Parsec a, Pretty a) => ParsecPretty a
+ Distribution/FieldGrammar/Newtypes.hs view
@@ -0,0 +1,339 @@+{-# LANGUAGE FlexibleContexts       #-}+{-# LANGUAGE FlexibleInstances      #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE OverloadedStrings      #-}+{-# LANGUAGE RankNTypes             #-}+{-# LANGUAGE ScopedTypeVariables    #-}+-- | This module provides @newtype@ wrappers to be used with "Distribution.FieldGrammar".+module Distribution.FieldGrammar.Newtypes (+    -- * List+    alaList,+    alaList',+    -- ** Modifiers+    CommaVCat (..),+    CommaFSep (..),+    VCat (..),+    FSep (..),+    NoCommaFSep (..),+    Sep (..),+    -- ** Type+    List,+    -- * Set+    alaSet,+    alaSet',+    Set',+    -- * Version & License+    SpecVersion (..),+    TestedWith (..),+    SpecLicense (..),+    -- * Identifiers+    Token (..),+    Token' (..),+    MQuoted (..),+    FilePathNT (..),+    ) where++import Distribution.Compat.Newtype+import Distribution.Compat.Prelude+import Prelude ()++import Distribution.CabalSpecVersion+import Distribution.Compiler         (CompilerFlavor)+import Distribution.License          (License)+import Distribution.Parsec+import Distribution.Pretty+import Distribution.Version+       (LowerBound (..), Version, VersionRange, VersionRangeF (..), anyVersion, asVersionIntervals, cataVersionRange, mkVersion, version0, versionNumbers)+import Text.PrettyPrint              (Doc, comma, fsep, punctuate, text, vcat)++import qualified Data.Set                        as Set+import qualified Distribution.Compat.CharParsing as P+import qualified Distribution.SPDX               as SPDX++-- | Vertical list with commas. Displayed with 'vcat'+data CommaVCat = CommaVCat++-- | Paragraph fill list with commas. Displayed with 'fsep'+data CommaFSep = CommaFSep++-- | Vertical list with optional commas. Displayed with 'vcat'.+data VCat = VCat++-- | Paragraph fill list with optional commas. Displayed with 'fsep'.+data FSep = FSep++-- | Paragraph fill list without commas. Displayed with 'fsep'.+data NoCommaFSep = NoCommaFSep++class    Sep sep  where+    prettySep :: Proxy sep -> [Doc] -> Doc++    parseSep :: CabalParsing m => Proxy sep -> m a -> m [a]++instance Sep CommaVCat where+    prettySep  _ = vcat . punctuate comma+    parseSep   _ p = do+        v <- askCabalSpecVersion+        if v >= CabalSpecV2_2 then parsecLeadingCommaList p else parsecCommaList p+instance Sep CommaFSep where+    prettySep _ = fsep . punctuate comma+    parseSep   _ p = do+        v <- askCabalSpecVersion+        if v >= CabalSpecV2_2 then parsecLeadingCommaList p else parsecCommaList p+instance Sep VCat where+    prettySep _  = vcat+    parseSep   _ p = do+        v <- askCabalSpecVersion+        if v >= CabalSpecV3_0 then parsecLeadingOptCommaList p else parsecOptCommaList p+instance Sep FSep where+    prettySep _  = fsep+    parseSep   _ p = do+        v <- askCabalSpecVersion+        if v >= CabalSpecV3_0 then parsecLeadingOptCommaList p else parsecOptCommaList p+instance Sep NoCommaFSep where+    prettySep _   = fsep+    parseSep  _ p = many (p <* P.spaces)++-- | List separated with optional commas. Displayed with @sep@, arguments of+-- type @a@ are parsed and pretty-printed as @b@.+newtype List sep b a = List { _getList :: [a] }++-- | 'alaList' and 'alaList'' are simply 'List', with additional phantom+-- arguments to constraint the resulting type+--+-- >>> :t alaList VCat+-- alaList VCat :: [a] -> List VCat (Identity a) a+--+-- >>> :t alaList' FSep Token+-- alaList' FSep Token :: [String] -> List FSep Token String+--+alaList :: sep -> [a] -> List sep (Identity a) a+alaList _ = List++-- | More general version of 'alaList'.+alaList' :: sep -> (a -> b) -> [a] -> List sep b a+alaList' _ _ = List++instance Newtype [a] (List sep wrapper a)++instance (Newtype a b, Sep sep, Parsec b) => Parsec (List sep b a) where+    parsec   = pack . map (unpack :: b -> a) <$> parseSep (Proxy :: Proxy sep) parsec++instance (Newtype a b, Sep sep, Pretty b) => Pretty (List sep b a) where+    pretty = prettySep (Proxy :: Proxy sep) . map (pretty . (pack :: a -> b)) . unpack++--+-- | Like 'List', but for 'Set'.+--+-- @since 3.2.0.0+newtype Set' sep b a = Set' { _getSet :: Set a }++-- | 'alaSet' and 'alaSet'' are simply 'Set'' constructor, with additional phantom+-- arguments to constraint the resulting type+--+-- >>> :t alaSet VCat+-- alaSet VCat :: Set a -> Set' VCat (Identity a) a+--+-- >>> :t alaSet' FSep Token+-- alaSet' FSep Token :: Set String -> Set' FSep Token String+--+-- >>> unpack' (alaSet' FSep Token) <$> eitherParsec "foo bar foo"+-- Right (fromList ["bar","foo"])+--+-- @since 3.2.0.0+alaSet :: sep -> Set a -> Set' sep (Identity a) a+alaSet _ = Set'++-- | More general version of 'alaSet'.+--+-- @since 3.2.0.0+alaSet' :: sep -> (a -> b) -> Set a -> Set' sep b a+alaSet' _ _ = Set'++instance Newtype (Set a) (Set' sep wrapper a)++instance (Newtype a b, Ord a, Sep sep, Parsec b) => Parsec (Set' sep b a) where+    parsec   = pack . Set.fromList . map (unpack :: b -> a) <$> parseSep (Proxy :: Proxy sep) parsec++instance (Newtype a b, Sep sep, Pretty b) => Pretty (Set' sep b a) where+    pretty = prettySep (Proxy :: Proxy sep) . map (pretty . (pack :: a -> b)) . Set.toList . unpack++-------------------------------------------------------------------------------+-- Identifiers+-------------------------------------------------------------------------------++-- | Haskell string or @[^ ,]+@+newtype Token = Token { getToken :: String }++instance Newtype String Token++instance Parsec Token where+    parsec = pack <$> parsecToken++instance Pretty Token where+    pretty = showToken . unpack++-- | Haskell string or @[^ ]+@+newtype Token' = Token' { getToken' :: String }++instance Newtype String Token'++instance Parsec Token' where+    parsec = pack <$> parsecToken'++instance Pretty Token' where+    pretty = showToken . unpack++-- | Either @"quoted"@ or @un-quoted@.+newtype MQuoted a = MQuoted { getMQuoted :: a }++instance Newtype a (MQuoted a)++instance Parsec a => Parsec (MQuoted a) where+    parsec = pack <$> parsecMaybeQuoted parsec++instance Pretty a => Pretty (MQuoted a)  where+    pretty = pretty . unpack++-- | Filepath are parsed as 'Token'.+newtype FilePathNT = FilePathNT { getFilePathNT :: String }++instance Newtype String FilePathNT++instance Parsec FilePathNT where+    parsec = pack <$> parsecToken++instance Pretty FilePathNT where+    pretty = showFilePath . unpack++-------------------------------------------------------------------------------+-- SpecVersion+-------------------------------------------------------------------------------++-- | Version range or just version, i.e. @cabal-version@ field.+--+-- There are few things to consider:+--+-- * Starting with 2.2 the cabal-version field should be the first field in the+--   file and only exact version is accepted. Therefore if we get e.g.+--   @>= 2.2@, we fail.+--   See <https://github.com/haskell/cabal/issues/4899>+--+-- We have this newtype, as writing Parsec and Pretty instances+-- for CabalSpecVersion would cause cycle in modules:+--     Version -> CabalSpecVersion -> Parsec -> ...+--+newtype SpecVersion = SpecVersion { getSpecVersion :: CabalSpecVersion }+  deriving (Eq, Show) -- instances needed for tests++instance Newtype CabalSpecVersion SpecVersion++instance Parsec SpecVersion where+    parsec = do+        e <- parsecSpecVersion+        let ver    :: Version+            ver    = either id specVersionFromRange e++            digits :: [Int]+            digits = versionNumbers ver++        case cabalSpecFromVersionDigits digits of+            Nothing  -> fail $ "Unknown cabal spec version specified: " ++ prettyShow ver+            Just csv -> do+                -- Check some warnings:+                case e of+                    -- example:   cabal-version: 1.10+                    -- should be  cabal-version: >=1.10+                    Left _v | csv < CabalSpecV1_12 -> parsecWarning PWTSpecVersion $ concat+                        [ "With 1.10 or earlier, the 'cabal-version' field must use "+                        , "range syntax rather than a simple version number. Use "+                        , "'cabal-version: >= " ++ prettyShow ver ++ "'."+                        ]++                    -- example:   cabal-version: >=1.12+                    -- should be  cabal-version: 1.12+                    Right _vr | csv >= CabalSpecV1_12 -> parsecWarning PWTSpecVersion $ concat+                        [ "Packages with 'cabal-version: 1.12' or later should specify a "+                        , "specific version of the Cabal spec of the form "+                        , "'cabal-version: x.y'. "+                        , "Use 'cabal-version: " ++ prettyShow ver ++ "'."+                        ]++                    -- example:   cabal-version: >=1.10 && <1.12+                    -- should be  cabal-version: >=1.10+                    Right vr | csv < CabalSpecV1_12+                            , not (simpleSpecVersionRangeSyntax vr) -> parsecWarning PWTSpecVersion $ concat+                        [ "It is recommended that the 'cabal-version' field only specify a "+                        , "version range of the form '>= x.y' for older cabal versions. Use "+                        , "'cabal-version: >= " ++ prettyShow ver ++ "'. "+                        , "Tools based on Cabal 1.10 and later will ignore upper bounds."+                        ]++                    -- otherwise no warnings+                    _ -> pure ()++                return (pack csv)+      where+        parsecSpecVersion = Left <$> parsec <|> Right <$> range++        range = do+            vr <- parsec+            if specVersionFromRange vr >= mkVersion [2,1]+            then fail "cabal-version higher than 2.2 cannot be specified as a range. See https://github.com/haskell/cabal/issues/4899"+            else return vr++        specVersionFromRange :: VersionRange -> Version+        specVersionFromRange versionRange = case asVersionIntervals versionRange of+            []                            -> version0+            ((LowerBound version _, _):_) -> version++        simpleSpecVersionRangeSyntax = cataVersionRange alg where+            alg (OrLaterVersionF _) = True+            alg _                   = False+++instance Pretty SpecVersion where+    pretty (SpecVersion csv)+        | csv >= CabalSpecV1_12 = text (showCabalSpecVersion csv)+        | otherwise             = text ">=" <<>> text (showCabalSpecVersion csv)++-------------------------------------------------------------------------------+-- SpecLicense+-------------------------------------------------------------------------------++-- | SPDX License expression or legacy license+newtype SpecLicense = SpecLicense { getSpecLicense :: Either SPDX.License License }++instance Newtype (Either SPDX.License License) SpecLicense++instance Parsec SpecLicense where+    parsec = do+        v <- askCabalSpecVersion+        if v >= CabalSpecV2_2+        then SpecLicense . Left <$> parsec+        else SpecLicense . Right <$> parsec++instance Pretty SpecLicense where+    pretty = either pretty pretty . unpack++-------------------------------------------------------------------------------+-- TestedWith+-------------------------------------------------------------------------------++-- | Version range or just version+newtype TestedWith = TestedWith { getTestedWith :: (CompilerFlavor, VersionRange) }++instance Newtype (CompilerFlavor, VersionRange) TestedWith++instance Parsec TestedWith where+    parsec = pack <$> parsecTestedWith++instance Pretty TestedWith where+    pretty x = case unpack x of+        (compiler, vr) -> pretty compiler <+> pretty vr++parsecTestedWith :: CabalParsing m => m (CompilerFlavor, VersionRange)+parsecTestedWith = do+    name <- lexemeParsec+    ver  <- parsec <|> pure anyVersion+    return (name, ver)
Distribution/FieldGrammar/Parsec.hs view
@@ -1,6 +1,7 @@-{-# LANGUAGE DeriveFunctor       #-}-{-# LANGUAGE OverloadedStrings   #-}-{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE DeriveFunctor         #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings     #-}+{-# LANGUAGE ScopedTypeVariables   #-} -- | This module provides a 'FieldGrammarParser', one way to parse -- @.cabal@ -like files. --@@ -65,7 +66,6 @@     )  where  import Data.List                   (dropWhileEnd)-import Data.Ord                    (comparing) import Distribution.Compat.Newtype import Distribution.Compat.Prelude import Distribution.Simple.Utils   (fromUTF8BS)@@ -151,7 +151,7 @@     parseWarning pos PWTMultipleSingularField $         "The field " <> show fn <> " is specified more than once at positions " ++ intercalate ", " (map showPos (pos : poss)) -instance FieldGrammar ParsecFieldGrammar where+instance FieldGrammar Parsec ParsecFieldGrammar where     blurFieldGrammar _ (ParsecFG s s' parser) = ParsecFG s s' parser      uniqueFieldAla fn _pack _extract = ParsecFG (Set.singleton fn) Set.empty parser@@ -286,6 +286,20 @@                             "The field " <> show name <> " is available only since the Cabal specification version " ++ showCabalSpecVersion vs ++ ". This field will be ignored."                  pure def++    availableSinceWarn vs (ParsecFG names prefixes parser) = ParsecFG names prefixes parser'+      where+        parser' v values+            | v >= vs = parser v values+            | otherwise = do+                let unknownFields = Map.intersection values $ Map.fromSet (const ()) names+                for_ (Map.toList unknownFields) $ \(name, fields) ->+                    for_ fields $ \(MkNamelessField pos _) ->+                        parseWarning pos PWTUnknownField $+                            "The field " <> show name <> " is available only since the Cabal specification version " ++ showCabalSpecVersion vs ++ "."++                parser v values+      -- todo we know about this field     deprecatedSince vs msg (ParsecFG names prefixes parser) = ParsecFG names prefixes parser'
Distribution/FieldGrammar/Pretty.hs view
@@ -1,4 +1,5 @@-{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveFunctor         #-}+{-# LANGUAGE MultiParamTypeClasses #-} module Distribution.FieldGrammar.Pretty (     PrettyFieldGrammar,     prettyFieldGrammar,@@ -33,7 +34,7 @@ prettyFieldGrammar :: CabalSpecVersion -> PrettyFieldGrammar s a -> s -> [PrettyField ()] prettyFieldGrammar = flip fieldGrammarPretty -instance FieldGrammar PrettyFieldGrammar where+instance FieldGrammar Pretty PrettyFieldGrammar where     blurFieldGrammar f (PrettyFG pp) = PrettyFG (\v -> pp v . aview f)      uniqueFieldAla fn _pack l = PrettyFG $ \_v s ->
Distribution/Fields/ConfVar.hs view
@@ -1,14 +1,14 @@ {-# LANGUAGE OverloadedStrings #-} module Distribution.Fields.ConfVar (parseConditionConfVar) where -import Distribution.Compat.CharParsing              (char, integral)+import Distribution.Compat.CharParsing     (char, integral) import Distribution.Compat.Prelude-import Distribution.Parsec                    (Parsec (..), runParsecParser, Position (..))-import Distribution.Parsec.FieldLineStream (fieldLineStreamFromBS)-import Distribution.Fields.Field                    (SectionArg (..))+import Distribution.Fields.Field           (SectionArg (..)) import Distribution.Fields.ParseResult+import Distribution.Parsec                 (Parsec (..), Position (..), runParsecParser)+import Distribution.Parsec.FieldLineStream (fieldLineStreamFromBS) import Distribution.Types.Condition-import Distribution.Types.ConfVar (ConfVar (..))+import Distribution.Types.ConfVar          (ConfVar (..)) import Distribution.Version        (anyVersion, earlierVersion, intersectVersionRanges, laterVersion, majorBoundVersion,        mkVersion, noVersion, orEarlierVersion, orLaterVersion, thisVersion, unionVersionRanges,@@ -52,7 +52,7 @@      boolLiteral  = Lit <$> boolLiteral'     osCond       = Var . OS   <$ string "os"   <*> parens fromParsec-    flagCond     = Var . Flag <$ string "flag" <*> parens fromParsec+    flagCond     = Var . PackageFlag <$ string "flag" <*> parens fromParsec     archCond     = Var . Arch <$ string "arch" <*> parens fromParsec     implCond     = Var        <$ string "impl" <*> parens implCond' 
Distribution/Fields/Lexer.hs view
@@ -372,6 +372,7 @@ #endif  {-# INLINE alexIndexInt16OffAddr #-}+alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt16OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN   narrow16Int# i@@ -381,10 +382,14 @@         low  = int2Word# (ord# (indexCharOffAddr# arr off'))         off' = off *# 2# #else-  indexInt16OffAddr# arr off+#if __GLASGOW_HASKELL__ >= 901+  int16ToInt# #endif+    (indexInt16OffAddr# arr off)+#endif  {-# INLINE alexIndexInt32OffAddr #-}+alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int# alexIndexInt32OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN   narrow32Int# i@@ -398,7 +403,10 @@    b0   = int2Word# (ord# (indexCharOffAddr# arr off'))    off' = off *# 4# #else-  indexInt32OffAddr# arr off+#if __GLASGOW_HASKELL__ >= 901+  int32ToInt#+#endif+    (indexInt32OffAddr# arr off) #endif  #if __GLASGOW_HASKELL__ < 503
Distribution/Fields/ParseResult.hs view
@@ -15,7 +15,8 @@     getCabalSpecVersion,     setCabalSpecVersion,     readAndParseFile,-    parseString+    parseString,+    withoutWarnings,     ) where  import qualified Data.ByteString.Char8        as BS@@ -42,10 +43,20 @@         -> r     } +-- Note: we have version here, as we could get any version. data PRState = PRState ![PWarning] ![PError] !(Maybe Version)  emptyPRState :: PRState emptyPRState = PRState [] [] Nothing++-- | Forget 'ParseResult's warnings.+--+-- @since 3.4.0.0+withoutWarnings :: ParseResult a -> ParseResult a+withoutWarnings m = PR $ \s failure success ->+    unPR m s failure $ \ !s1 -> success (s1 `withWarningsOf` s)+  where+    withWarningsOf (PRState _ e v) (PRState w _ _) = PRState w e v  -- | Destruct a 'ParseResult' into the emitted warnings and either -- a successful value or
Distribution/Fields/Parser.hs view
@@ -27,7 +27,6 @@ #endif     ) where -import           Control.Monad                  (guard) import qualified Data.ByteString.Char8          as B8 import           Data.Functor.Identity import           Distribution.Compat.Prelude
Distribution/Fields/Pretty.hs view
@@ -45,11 +45,21 @@ -- between comment lines. -- showFields :: (ann -> [String]) -> [PrettyField ann] -> String-showFields rann = showFields' rann 4+showFields rann = showFields' rann (const id) 4  -- | 'showFields' with user specified indentation.-showFields' :: (ann -> [String]) -> Int -> [PrettyField ann] -> String-showFields' rann n = unlines . renderFields (Opts rann indent) where+showFields'+  :: (ann -> [String])+     -- ^ Convert an annotation to lined to preceed the field or section.+  -> (ann -> [String] -> [String])+     -- ^ Post-process non-annotation produced lines.+  -> Int+     -- ^ Indentation level.+  -> [PrettyField ann]+     -- ^ Fields/sections to show.+  -> String+showFields' rann post n = unlines . renderFields (Opts rann indent post)+  where     -- few hardcoded, "unrolled"  variants.     indent | n == 4    = indent4            | n == 2    = indent2@@ -63,7 +73,11 @@     indent2 [] = []     indent2 xs = ' ' : ' ' : xs -data Opts ann = Opts (ann -> [String]) (String -> String)+data Opts ann = Opts+  { _optAnnotation ::(ann -> [String])+  , _optIndent ::(String -> String)+  , _optPostprocess :: ann -> [String] -> [String]+  }  renderFields :: Opts ann -> [PrettyField ann] -> [String] renderFields opts fields = flattenBlocks $ map (renderField opts len) fields@@ -97,8 +111,8 @@             | otherwise                 = id  renderField :: Opts ann -> Int -> PrettyField ann -> Block-renderField (Opts rann indent) fw (PrettyField ann name doc) =-    Block before after $ comments ++ lines'+renderField (Opts rann indent post) fw (PrettyField ann name doc) =+    Block before after $ comments ++ post ann lines'   where     comments = rann ann     before = if null comments then NoMargin else Margin@@ -115,10 +129,10 @@     narrowStyle :: PP.Style     narrowStyle = PP.style { PP.lineLength = PP.lineLength PP.style - fw } -renderField opts@(Opts rann indent) _ (PrettySection ann name args fields) = Block Margin Margin $+renderField opts@(Opts rann indent post) _ (PrettySection ann name args fields) = Block Margin Margin $     rann ann-    ++ -    [ PP.render $ PP.hsep $ PP.text (fromUTF8BS name) : args ]+    +++    post ann [ PP.render $ PP.hsep $ PP.text (fromUTF8BS name) : args ]     ++     (map indent $ renderFields opts fields) 
Distribution/InstalledPackageInfo.hs view
@@ -52,7 +52,6 @@ import Distribution.Types.ComponentName import Distribution.Utils.Generic            (toUTF8BS) -import Control.DeepSeq (deepseq) import Data.ByteString (ByteString)  import qualified Data.Map            as Map@@ -103,7 +102,11 @@     Right fs -> case partitionFields fs of         (fs', _) -> case P.runParseResult $ parseFieldGrammar cabalSpecLatest fs' ipiFieldGrammar of             (ws, Right x) -> x `deepseq` Right (ws', x) where-                ws' = map (P.showPWarning "") ws+                ws' = [ P.showPWarning "" w+                      | w@(P.PWarning wt _ _) <- ws+                      -- filter out warnings about experimental features+                      , wt /= P.PWTExperimental+                      ]             (_,  Left (_, errs)) -> Left errs' where                 errs' = fmap (P.showPError "") errs 
Distribution/Make.hs view
@@ -67,7 +67,6 @@ import Distribution.Compat.Prelude  -- local-import Distribution.Compat.Exception import Distribution.Package import Distribution.Simple.Program import Distribution.Simple.Setup@@ -80,7 +79,6 @@ import Distribution.Pretty  import System.Environment (getArgs, getProgName)-import System.Exit  defaultMain :: IO () defaultMain = getArgs >>= defaultMainArgs
Distribution/ModuleName.hs view
@@ -1,6 +1,7 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveGeneric      #-}-+{-# LANGUAGE BangPatterns        #-}+{-# LANGUAGE DeriveDataTypeable  #-}+{-# LANGUAGE DeriveGeneric       #-}+{-# LANGUAGE ScopedTypeVariables #-} ----------------------------------------------------------------------------- -- | -- Module      :  Distribution.ModuleName@@ -13,7 +14,7 @@ -- Data type for Haskell module names.  module Distribution.ModuleName (-        ModuleName (..), -- TODO: move Parsec instance here, don't export constructor+        ModuleName,         fromString,         fromComponents,         components,@@ -32,13 +33,17 @@ import System.FilePath              (pathSeparator)  import qualified Distribution.Compat.CharParsing as P+import qualified Distribution.Compat.DList       as DList import qualified Text.PrettyPrint                as Disp  -- | A valid Haskell module name. ---newtype ModuleName = ModuleName ShortTextLst+newtype ModuleName = ModuleName ShortText   deriving (Eq, Generic, Ord, Read, Show, Typeable, Data) +unModuleName :: ModuleName -> String+unModuleName (ModuleName s) = fromShortText s+ instance Binary ModuleName instance Structured ModuleName @@ -46,24 +51,43 @@     rnf (ModuleName ms) = rnf ms  instance Pretty ModuleName where-  pretty (ModuleName ms) =-    Disp.hcat (intersperse (Disp.char '.') (map Disp.text $ stlToStrings ms))+  pretty = Disp.text . unModuleName  instance Parsec ModuleName where-    parsec = fromComponents <$> toList <$> P.sepByNonEmpty component (P.char '.')-      where-        component = do-            c  <- P.satisfy isUpper-            cs <- P.munch validModuleChar-            return (c:cs)+    parsec = parsecModuleName +parsecModuleName :: forall m. CabalParsing m => m ModuleName+parsecModuleName = state0 DList.empty where+    upper :: m Char+    !upper = P.satisfy isUpper++    ch :: m Char+    !ch = P.satisfy (\c -> validModuleChar c || c == '.')++    alt :: m ModuleName -> m ModuleName -> m ModuleName+    !alt = (<|>)++    state0 :: DList.DList Char -> m ModuleName+    state0 acc = do+        c <- upper+        state1 (DList.snoc acc c)++    state1 :: DList.DList Char -> m ModuleName+    state1 acc = state1' acc `alt` return (fromString (DList.toList acc))++    state1' :: DList.DList Char -> m ModuleName+    state1' acc = do+        c <- ch+        case c of+            '.' -> state0 (DList.snoc acc c)+            _   -> state1 (DList.snoc acc c)+ validModuleChar :: Char -> Bool validModuleChar c = isAlphaNum c || c == '_' || c == '\''  validModuleComponent :: String -> Bool validModuleComponent []     = False-validModuleComponent (c:cs) = isUpper c-                           && all validModuleChar cs+validModuleComponent (c:cs) = isUpper c && all validModuleChar cs  -- | Construct a 'ModuleName' from a valid module name 'String'. --@@ -72,34 +96,29 @@ -- are parsing user input then use 'Distribution.Text.simpleParse' instead. -- instance IsString ModuleName where-    fromString string = fromComponents (split string)-      where-        split cs = case break (=='.') cs of-          (chunk,[])     -> chunk : []-          (chunk,_:rest) -> chunk : split rest+    fromString = ModuleName . toShortText  -- | Construct a 'ModuleName' from valid module components, i.e. parts -- separated by dots. fromComponents :: [String] -> ModuleName-fromComponents components'-    | null components'                     = error zeroComponents-    | all validModuleComponent components' = ModuleName (stlFromStrings components')-    | otherwise                            = error badName-  where-    zeroComponents = "ModuleName.fromComponents: zero components"-    badName        = "ModuleName.fromComponents: invalid components " ++ show components'+fromComponents comps = fromString (intercalate "." comps)+{-# DEPRECATED fromComponents "Exists for cabal-install only" #-}  -- | The module name @Main@. -- main :: ModuleName-main = ModuleName (stlFromStrings ["Main"])+main = ModuleName (fromString "Main")  -- | The individual components of a hierarchical module name. For example -- -- > components (fromString "A.B.C") = ["A", "B", "C"] -- components :: ModuleName -> [String]-components (ModuleName ms) = stlToStrings ms+components mn = split (unModuleName mn)+  where+    split cs = case break (=='.') cs of+      (chunk,[])     -> chunk : []+      (chunk,_:rest) -> chunk : split rest  -- | Convert a module name to a file path, but without any file extension. -- For example:@@ -107,42 +126,6 @@ -- > toFilePath (fromString "A.B.C") = "A/B/C" -- toFilePath :: ModuleName -> FilePath-toFilePath = intercalate [pathSeparator] . components--------------------------------------------------------------------------------- internal helper---- | Strict/unpacked representation of @[ShortText]@-data ShortTextLst = STLNil-                  | STLCons !ShortText !ShortTextLst-                  deriving (Eq, Generic, Ord, Typeable, Data)--instance NFData ShortTextLst where-    rnf = flip seq ()--instance Show ShortTextLst where-    showsPrec p = showsPrec p . stlToList---instance Read ShortTextLst where-    readsPrec p = map (first stlFromList) . readsPrec p--instance Binary ShortTextLst where-    put = put . stlToList-    get = stlFromList <$> get--instance Structured ShortTextLst--stlToList :: ShortTextLst -> [ShortText]-stlToList STLNil = []-stlToList (STLCons st next) = st : stlToList next--stlToStrings :: ShortTextLst -> [String]-stlToStrings = map fromShortText . stlToList--stlFromList :: [ShortText] -> ShortTextLst-stlFromList [] = STLNil-stlFromList (x:xs) = STLCons x (stlFromList xs)--stlFromStrings :: [String] -> ShortTextLst-stlFromStrings = stlFromList . map toShortText+toFilePath = map f . unModuleName where+    f '.' = pathSeparator+    f c   = c
Distribution/PackageDescription.hs view
@@ -7,135 +7,91 @@ -- Maintainer  :  cabal-devel@haskell.org -- Portability :  portable ----- Backwards compatibility reexport of everything you need to know+-- Backwards compatibility reexport of most things you need to know -- about @.cabal@ files.  module Distribution.PackageDescription (-        -- * Package descriptions-        PackageDescription(..),-        emptyPackageDescription,-        specVersion,-        buildType,-        license,-        BuildType(..),-        knownBuildTypes,-        allLibraries,--        -- ** Renaming (syntactic)-        ModuleRenaming(..),-        defaultRenaming,--        -- ** Libraries-        Library(..),-        ModuleReexport(..),-        emptyLibrary,-        withLib,-        hasPublicLib,-        hasLibs,-        explicitLibModules,-        libModulesAutogen,--        -- ** Executables-        Executable(..),-        emptyExecutable,-        withExe,-        hasExes,-        exeModules,-        exeModulesAutogen,--        -- * Tests-        TestSuite(..),-        TestSuiteInterface(..),-        TestType(..),-        testType,-        knownTestTypes,-        emptyTestSuite,-        hasTests,-        withTest,-        testModules,-        testModulesAutogen,--        -- * Benchmarks-        Benchmark(..),-        BenchmarkInterface(..),-        BenchmarkType(..),-        benchmarkType,-        knownBenchmarkTypes,-        emptyBenchmark,-        hasBenchmarks,-        withBenchmark,-        benchmarkModules,-        benchmarkModulesAutogen,--        -- * Build information-        BuildInfo(..),-        emptyBuildInfo,-        allBuildInfo,-        allLanguages,-        allExtensions,-        usedExtensions,-        usesTemplateHaskellOrQQ,-        hcOptions,-        hcProfOptions,-        hcSharedOptions,-        hcStaticOptions,--        -- ** Supplementary build information-        allBuildDepends,-        enabledBuildDepends,-        ComponentName(..),-        LibraryName(..),-        defaultLibName,-        HookedBuildInfo,-        emptyHookedBuildInfo,-        updatePackageDescription,--        -- * package configuration-        GenericPackageDescription(..),-        Flag(..), emptyFlag,-        FlagName, mkFlagName, unFlagName,-        FlagAssignment, mkFlagAssignment, unFlagAssignment,-        nullFlagAssignment, showFlagValue,-        diffFlagAssignment, lookupFlagAssignment, insertFlagAssignment,-        dispFlagAssignment, parsecFlagAssignment,-        findDuplicateFlagAssignments,-        CondTree(..), ConfVar(..), Condition(..),-        cNot, cAnd, cOr,--        -- * Source repositories-        SourceRepo(..),-        RepoKind(..),-        RepoType(..),-        knownRepoTypes,-        emptySourceRepo,--        -- * Custom setup build information-        SetupBuildInfo(..),+    -- * PD and GPD+    module Distribution.Types.PackageDescription,+    module Distribution.Types.GenericPackageDescription,+    -- * Components+    module Distribution.Types.ComponentName,+    -- ** Library+    module Distribution.Types.Library,+    module Distribution.Types.LibraryName,+    module Distribution.Types.LibraryVisibility,+    -- ** Executable+    module Distribution.Types.Executable,+    module Distribution.Types.ExecutableScope,+    -- ** TestSuite+    module Distribution.Types.TestSuite,+    module Distribution.Types.TestType,+    module Distribution.Types.TestSuiteInterface,+    -- ** Benchmark+    module Distribution.Types.Benchmark,+    module Distribution.Types.BenchmarkType,+    module Distribution.Types.BenchmarkInterface,+    -- ** Foreign library+    module Distribution.Types.ForeignLib,+    module Distribution.Types.ForeignLibType,+    module Distribution.Types.ForeignLibOption,+    -- * BuildInfo+    module Distribution.Types.BuildType,+    module Distribution.Types.BuildInfo,+    module Distribution.Types.HookedBuildInfo,+    module Distribution.Types.SetupBuildInfo,+    -- * Flags+    module Distribution.Types.Flag,+    -- * Identifiers+    module Distribution.Types.PackageId,+    module Distribution.Types.PackageName,+    module Distribution.Types.UnqualComponentName,+    -- * Dependencies+    module Distribution.Types.Dependency,+    module Distribution.Types.ExeDependency,+    module Distribution.Types.LegacyExeDependency,+    module Distribution.Types.PkgconfigDependency,+    -- * Condition trees+    module Distribution.Types.CondTree,+    module Distribution.Types.Condition,+    module Distribution.Types.ConfVar,+    -- * Source repository+    module Distribution.Types.SourceRepo,   ) where  import Prelude () --import Distribution.Compat.Prelude -import Distribution.Types.Library-import Distribution.Types.TestSuite-import Distribution.Types.Executable import Distribution.Types.Benchmark-import Distribution.Types.TestType-import Distribution.Types.TestSuiteInterface-import Distribution.Types.BenchmarkType import Distribution.Types.BenchmarkInterface-import Distribution.Types.ModuleRenaming-import Distribution.Types.ModuleReexport+import Distribution.Types.BenchmarkType import Distribution.Types.BuildInfo-import Distribution.Types.SetupBuildInfo import Distribution.Types.BuildType-import Distribution.Types.GenericPackageDescription-import Distribution.Types.CondTree-import Distribution.Types.Condition-import Distribution.Types.PackageDescription import Distribution.Types.ComponentName-import Distribution.Types.LibraryName+import Distribution.Types.Condition+import Distribution.Types.CondTree+import Distribution.Types.ConfVar+import Distribution.Types.Dependency+import Distribution.Types.Executable+import Distribution.Types.ExecutableScope+import Distribution.Types.ExeDependency+import Distribution.Types.Flag+import Distribution.Types.ForeignLib+import Distribution.Types.ForeignLibOption+import Distribution.Types.ForeignLibType+import Distribution.Types.GenericPackageDescription import Distribution.Types.HookedBuildInfo+import Distribution.Types.LegacyExeDependency+import Distribution.Types.Library+import Distribution.Types.LibraryName+import Distribution.Types.LibraryVisibility+import Distribution.Types.PackageDescription+import Distribution.Types.PackageId+import Distribution.Types.PackageName+import Distribution.Types.PkgconfigDependency+import Distribution.Types.SetupBuildInfo import Distribution.Types.SourceRepo-import Distribution.Types.Flag-import Distribution.Types.ConfVar+import Distribution.Types.TestSuite+import Distribution.Types.TestSuiteInterface+import Distribution.Types.TestType+import Distribution.Types.UnqualComponentName
Distribution/PackageDescription/Check.hs view
@@ -14,7 +14,7 @@ -- like to encourage. There is a 'PackageCheck' type that distinguishes the -- different kinds of check so we can see which ones are appropriate to report -- in different situations. This code gets uses when configuring a package when--- we consider only basic problems. The higher standard is uses when when+-- we consider only basic problems. The higher standard is uses when -- preparing a source tarball and by Hackage when uploading new packages. The -- reason for this is that we want to hold packages that are expected to be -- distributed to a higher standard than packages that are only ever expected@@ -36,8 +36,8 @@ import Distribution.Compat.Prelude import Prelude () -import Control.Monad                                 (mapM) import Data.List                                     (group)+import Distribution.CabalSpecVersion import Distribution.Compat.Lens import Distribution.Compiler import Distribution.License@@ -52,10 +52,7 @@ import Distribution.Simple.Utils                     hiding (findPackageDesc, notice) import Distribution.System import Distribution.Types.ComponentRequestedSpec-import Distribution.Types.CondTree-import Distribution.Types.ExeDependency-import Distribution.Types.LibraryName-import Distribution.Types.UnqualComponentName+import Distribution.Types.ModuleReexport import Distribution.Utils.Generic                    (isAscii) import Distribution.Verbosity import Distribution.Version@@ -125,11 +122,11 @@ check False _  = Nothing check True  pc = Just pc -checkSpecVersion :: PackageDescription -> [Int] -> Bool -> PackageCheck+checkSpecVersion :: PackageDescription -> CabalSpecVersion -> Bool -> PackageCheck                  -> Maybe PackageCheck checkSpecVersion pkg specver cond pc-  | specVersion pkg >= mkVersion specver  = Nothing-  | otherwise                             = check cond pc+  | specVersion pkg >= specver  = Nothing+  | otherwise                   = check cond pc  -- ------------------------------------------------------------ -- * Standard checks@@ -229,14 +226,6 @@   ++ concatMap (checkTestSuite  pkg) (testSuites pkg)   ++ concatMap (checkBenchmark  pkg) (benchmarks pkg) -  ++ catMaybes [--    check (specVersion pkg > cabalVersion) $-      PackageBuildImpossible $-           "This package description follows version "-        ++ prettyShow (specVersion pkg) ++ " of the Cabal specification. This "-        ++ "tool only supports up to version " ++ prettyShow cabalVersion ++ "."-  ]   where     -- The public 'library' gets special dispensation, because it     -- is common practice to export a library and name the executable@@ -262,7 +251,7 @@            showLibraryName (libName lib) ++ " does not expose any modules"      -- check use of signatures sections-  , checkVersion [1,25] (not (null (signatures lib))) $+  , checkVersion CabalSpecV2_0 (not (null (signatures lib))) $       PackageDistInexcusable $            "To use the 'signatures' field the package needs to specify "         ++ "at least 'cabal-version: 2.0'."@@ -283,10 +272,10 @@   ]    where-    checkVersion :: [Int] -> Bool -> PackageCheck -> Maybe PackageCheck+    checkVersion :: CabalSpecVersion -> Bool -> PackageCheck -> Maybe PackageCheck     checkVersion ver cond pc-      | specVersion pkg >= mkVersion ver       = Nothing-      | otherwise                              = check cond pc+      | specVersion pkg >= ver = Nothing+      | otherwise              = check cond pc      -- TODO: not sure if this check is always right in Backpack     moduleDuplicates = dups (explicitLibModules lib ++@@ -310,7 +299,7 @@         ++ "(even if it is generated by a preprocessor), "         ++ "or it may specify a C/C++/obj-C source file." -  , checkSpecVersion pkg [1,17]+  , checkSpecVersion pkg CabalSpecV1_18           (fileExtensionSupportedLanguage (modulePath exe)         && takeExtension (modulePath exe) `notElem` [".hs", ".lhs"]) $       PackageDistInexcusable $@@ -366,7 +355,7 @@         ++ "(even if it is generated by a preprocessor), "         ++ "or it may specify a C/C++/obj-C source file." -  , checkSpecVersion pkg [1,17] (mainIsNotHsExt && not mainIsWrongExt) $+  , checkSpecVersion pkg CabalSpecV1_18 (mainIsNotHsExt && not mainIsWrongExt) $       PackageDistInexcusable $            "The package uses a C/C++/obj-C source file for the 'main-is' field. "         ++ "To use this feature you must specify 'cabal-version: >= 1.18'."@@ -461,7 +450,7 @@            "Package names with the prefix 'z-' are reserved by Cabal and "         ++ "cannot be used." -  , check (isNothing (buildTypeRaw pkg) && specVersion pkg < mkVersion [2,1]) $+  , check (isNothing (buildTypeRaw pkg) && specVersion pkg < CabalSpecV2_2) $       PackageBuildWarning $            "No 'build-type' specified. If you do not need a custom Setup.hs or "         ++ "./configure script then use 'build-type: Simple'."@@ -604,7 +593,7 @@              , name `elem` map prettyShow knownLanguages ]      testedWithImpossibleRanges =-      [ Dependency (mkPackageName (prettyShow compiler)) vr Set.empty+      [ Dependency (mkPackageName (prettyShow compiler)) vr mainLibSet       | (compiler, vr) <- testedWith pkg       , isNoVersion vr ] @@ -683,7 +672,7 @@       PackageDistSuspicious         "The 'license' is AllRightsReserved. Is that really what you want?" -  , checkVersion [1,4] (lic `notElem` compatLicenses) $+  , checkVersion CabalSpecV1_4 (lic `notElem` compatLicenses) $       PackageDistInexcusable $            "Unfortunately the license " ++ quote (prettyShow (license pkg))         ++ " messes up the parser in earlier Cabal versions so you need to "@@ -736,10 +725,10 @@       where knownVersions = [ v' | Apache  (Just v') <- knownLicenses ]     unknownLicenseVersion _ = Nothing -    checkVersion :: [Int] -> Bool -> PackageCheck -> Maybe PackageCheck+    checkVersion :: CabalSpecVersion -> Bool -> PackageCheck -> Maybe PackageCheck     checkVersion ver cond pc-      | specVersion pkg >= mkVersion ver       = Nothing-      | otherwise                              = check cond pc+      | specVersion pkg >= ver  = Nothing+      | otherwise               = check cond pc      compatLicenses = [ GPL Nothing, LGPL Nothing, AGPL Nothing, BSD3, BSD4                      , PublicDomain, AllRightsReserved@@ -763,7 +752,7 @@       PackageDistInexcusable         "The source-repository 'location' is a required field." -  , check (repoType repo == Just CVS && isNothing (repoModule repo)) $+  , check (repoType repo == Just (KnownRepoType CVS) && isNothing (repoModule repo)) $       PackageDistInexcusable         "For a CVS source-repository, the 'module' is a required field." @@ -820,7 +809,7 @@    , checkFlags ["-fhpc"] $       PackageDistInexcusable $-           "'" ++ fieldName ++ ": -fhpc' is not not necessary. Use the configure flag "+           "'" ++ fieldName ++ ": -fhpc' is not necessary. Use the configure flag "         ++ " --enable-coverage instead."    , checkFlags ["-prof"] $@@ -1141,21 +1130,22 @@     -- paths that must be relative     relPaths :: [(FilePath, String, PathKind)]     relPaths =-         [ (path, "extra-source-files", PathKindGlob) | path <- extraSrcFiles pkg ]-      ++ [ (path, "extra-tmp-files", PathKindFile)    | path <- extraTmpFiles pkg ]-      ++ [ (path, "extra-doc-files", PathKindGlob)    | path <- extraDocFiles pkg ]-      ++ [ (path, "data-files", PathKindGlob)         | path <- dataFiles     pkg ]-      ++ [ (path, "data-dir", PathKindDirectory)           | path <- [dataDir      pkg]]-      ++ [ (path, "license-file", PathKindFile)       | path <- licenseFiles  pkg ]-      ++ concat-         [    [ (path, "asm-sources", PathKindFile)      | path <- asmSources      bi ]-           ++ [ (path, "cmm-sources", PathKindFile)      | path <- cmmSources      bi ]-           ++ [ (path, "c-sources", PathKindFile)        | path <- cSources        bi ]-           ++ [ (path, "cxx-sources", PathKindFile)      | path <- cxxSources      bi ]-           ++ [ (path, "js-sources", PathKindFile)       | path <- jsSources       bi ]-           ++ [ (path, "install-includes", PathKindFile) | path <- installIncludes bi ]-           ++ [ (path, "hs-source-dirs", PathKindDirectory)   | path <- hsSourceDirs    bi ]-         | bi <- allBuildInfo pkg ]+      [ (path, "extra-source-files", PathKindGlob)      | path <- extraSrcFiles pkg ] +++      [ (path, "extra-tmp-files",    PathKindFile)      | path <- extraTmpFiles pkg ] +++      [ (path, "extra-doc-files",    PathKindGlob)      | path <- extraDocFiles pkg ] +++      [ (path, "data-files",         PathKindGlob)      | path <- dataFiles     pkg ] +++      [ (path, "data-dir",           PathKindDirectory) | path <- [dataDir      pkg]] +++      [ (path, "license-file",       PathKindFile)      | path <- licenseFiles  pkg ] +++      concat+        [ [ (path, "asm-sources",      PathKindFile)      | path <- asmSources      bi ] +++          [ (path, "cmm-sources",      PathKindFile)      | path <- cmmSources      bi ] +++          [ (path, "c-sources",        PathKindFile)      | path <- cSources        bi ] +++          [ (path, "cxx-sources",      PathKindFile)      | path <- cxxSources      bi ] +++          [ (path, "js-sources",       PathKindFile)      | path <- jsSources       bi ] +++          [ (path, "install-includes", PathKindFile)      | path <- installIncludes bi ] +++          [ (path, "hs-source-dirs",   PathKindDirectory) | path <- hsSourceDirs bi ]+        | bi <- allBuildInfo pkg+        ]      -- paths that are allowed to be absolute     absPaths :: [(FilePath, String, PathKind)]@@ -1179,41 +1169,8 @@ checkCabalVersion pkg =   catMaybes [ -    -- check syntax of cabal-version field-    check (specVersion pkg >= mkVersion [1,10]-           && not simpleSpecVersionRangeSyntax) $-      PackageBuildWarning $-           "Packages relying on Cabal 1.10 or later must only specify a "-        ++ "version range of the form 'cabal-version: >= x.y'. Use "-        ++ "'cabal-version: >= " ++ prettyShow (specVersion pkg) ++ "'."--    -- check syntax of cabal-version field-  , check (specVersion pkg < mkVersion [1,9]-           && not simpleSpecVersionRangeSyntax) $-      PackageDistSuspicious $-           "It is recommended that the 'cabal-version' field only specify a "-        ++ "version range of the form '>= x.y'. Use "-        ++ "'cabal-version: >= " ++ prettyShow (specVersion pkg) ++ "'. "-        ++ "Tools based on Cabal 1.10 and later will ignore upper bounds."--    -- check syntax of cabal-version field-  , checkVersion [1,12] simpleSpecVersionSyntax $-      PackageBuildWarning $-           "With Cabal 1.10 or earlier, the 'cabal-version' field must use "-        ++ "range syntax rather than a simple version number. Use "-        ++ "'cabal-version: >= " ++ prettyShow (specVersion pkg) ++ "'."--    -- check syntax of cabal-version field-  , check (specVersion pkg >= mkVersion [1,12]-           && not simpleSpecVersionSyntax) $-      (if specVersion pkg >= mkVersion [2,0] then PackageDistSuspicious else PackageDistSuspiciousWarn) $-           "Packages relying on Cabal 1.12 or later should specify a "-        ++ "specific version of the Cabal spec of the form "-        ++ "'cabal-version: x.y'. "-        ++ "Use 'cabal-version: " ++ prettyShow (specVersion pkg) ++ "'."-     -- check use of test suite sections-  , checkVersion [1,8] (not (null $ testSuites pkg)) $+    checkVersion CabalSpecV1_8 (not (null $ testSuites pkg)) $       PackageDistInexcusable $            "The 'test-suite' section is new in Cabal 1.10. "         ++ "Unfortunately it messes up the parser in older Cabal versions "@@ -1223,47 +1180,47 @@     -- check use of default-language field     -- note that we do not need to do an equivalent check for the     -- other-language field since that one does not change behaviour-  , checkVersion [1,10] (any isJust (buildInfoField defaultLanguage)) $+  , checkVersion CabalSpecV1_10 (any isJust (buildInfoField defaultLanguage)) $       PackageBuildWarning $            "To use the 'default-language' field the package needs to specify "         ++ "at least 'cabal-version: >= 1.10'." -  , check (specVersion pkg >= mkVersion [1,10]+  , check (specVersion pkg >= CabalSpecV1_10 && specVersion pkg < CabalSpecV3_4            && (any isNothing (buildInfoField defaultLanguage))) $       PackageBuildWarning $-           "Packages using 'cabal-version: >= 1.10' must specify the "+           "Packages using 'cabal-version: >= 1.10' and before 'cabal-version: 3.4' must specify the "         ++ "'default-language' field for each component (e.g. Haskell98 or "         ++ "Haskell2010). If a component uses different languages in "         ++ "different modules then list the other ones in the "         ++ "'other-languages' field." -  , checkVersion [1,18]+  , checkVersion CabalSpecV1_18     (not . null $ extraDocFiles pkg) $       PackageDistInexcusable $            "To use the 'extra-doc-files' field the package needs to specify "         ++ "at least 'cabal-version: >= 1.18'." -  , checkVersion [2,0]+  , checkVersion CabalSpecV2_0     (not (null (subLibraries pkg))) $       PackageDistInexcusable $            "To use multiple 'library' sections or a named library section "         ++ "the package needs to specify at least 'cabal-version: 2.0'."      -- check use of reexported-modules sections-  , checkVersion [1,21]+  , checkVersion CabalSpecV1_22     (any (not.null.reexportedModules) (allLibraries pkg)) $       PackageDistInexcusable $            "To use the 'reexported-module' field the package needs to specify "         ++ "at least 'cabal-version: >= 1.22'."      -- check use of thinning and renaming-  , checkVersion [1,25] usesBackpackIncludes $+  , checkVersion CabalSpecV2_0 usesBackpackIncludes $       PackageDistInexcusable $            "To use the 'mixins' field the package needs to specify "         ++ "at least 'cabal-version: 2.0'."      -- check use of 'extra-framework-dirs' field-  , checkVersion [1,23] (any (not . null) (buildInfoField extraFrameworkDirs)) $+  , checkVersion CabalSpecV1_24 (any (not . null) (buildInfoField extraFrameworkDirs)) $       -- Just a warning, because this won't break on old Cabal versions.       PackageDistSuspiciousWarn $            "To use the 'extra-framework-dirs' field the package needs to specify"@@ -1271,13 +1228,13 @@      -- check use of default-extensions field     -- don't need to do the equivalent check for other-extensions-  , checkVersion [1,10] (any (not . null) (buildInfoField defaultExtensions)) $+  , checkVersion CabalSpecV1_10 (any (not . null) (buildInfoField defaultExtensions)) $       PackageBuildWarning $            "To use the 'default-extensions' field the package needs to specify "         ++ "at least 'cabal-version: >= 1.10'."      -- check use of extensions field-  , check (specVersion pkg >= mkVersion [1,10]+  , check (specVersion pkg >= CabalSpecV1_10            && (any (not . null) (buildInfoField oldExtensions))) $       PackageBuildWarning $            "For packages using 'cabal-version: >= 1.10' the 'extensions' "@@ -1286,41 +1243,7 @@         ++ "the 'other-extensions' field lists extensions that are used in "         ++ "some modules, e.g. via the {-# LANGUAGE #-} pragma." -    -- check use of "foo (>= 1.0 && < 1.4) || >=1.8 " version-range syntax-  , checkVersion [1,8] (not (null versionRangeExpressions)) $-      PackageDistInexcusable $-           "The package uses full version-range expressions "-        ++ "in a 'build-depends' field: "-        ++ commaSep (map displayRawDependency versionRangeExpressions)-        ++ ". To use this new syntax the package needs to specify at least "-        ++ "'cabal-version: >= 1.8'. Alternatively, if broader compatibility "-        ++ "is important, then convert to conjunctive normal form, and use "-        ++ "multiple 'build-depends:' lines, one conjunct per line."--    -- check use of "build-depends: foo == 1.*" syntax-  , checkVersion [1,6] (not (null depsUsingWildcardSyntax)) $-      PackageDistInexcusable $-           "The package uses wildcard syntax in the 'build-depends' field: "-        ++ commaSep (map prettyShow depsUsingWildcardSyntax)-        ++ ". To use this new syntax the package need to specify at least "-        ++ "'cabal-version: >= 1.6'. Alternatively, if broader compatibility "-        ++ "is important then use: " ++ commaSep-           [ prettyShow (Dependency name (eliminateWildcardSyntax versionRange) Set.empty)-           | Dependency name versionRange _ <- depsUsingWildcardSyntax ]--    -- check use of "build-depends: foo ^>= 1.2.3" syntax-  , checkVersion [2,0] (not (null depsUsingMajorBoundSyntax)) $-      PackageDistInexcusable $-           "The package uses major bounded version syntax in the "-        ++ "'build-depends' field: "-        ++ commaSep (map prettyShow depsUsingMajorBoundSyntax)-        ++ ". To use this new syntax the package need to specify at least "-        ++ "'cabal-version: 2.0'. Alternatively, if broader compatibility "-        ++ "is important then use: " ++ commaSep-           [ prettyShow (Dependency name (eliminateMajorBoundSyntax versionRange) Set.empty)-           | Dependency name versionRange _ <- depsUsingMajorBoundSyntax ]--  , checkVersion [3,0] (any (not . null)+  , checkVersion CabalSpecV3_0 (any (not . null)                         (concatMap buildInfoField                          [ asmSources                          , cmmSources@@ -1331,58 +1254,38 @@         ++ " and 'extra-library-flavours' requires the package "         ++ " to specify at least 'cabal-version: 3.0'." -  , checkVersion [2,5] (any (not . null) $ buildInfoField extraDynLibFlavours) $+  , checkVersion CabalSpecV3_0 (any (not . null) $ buildInfoField extraDynLibFlavours) $       PackageDistInexcusable $            "The use of 'extra-dynamic-library-flavours' requires the package "-        ++ " to specify at least 'cabal-version: >= 2.5'. The flavours are: "+        ++ " to specify at least 'cabal-version: 3.0'. The flavours are: "         ++ commaSep [ flav                     | flavs <- buildInfoField extraDynLibFlavours                     , flav <- flavs ] -  , checkVersion [2,1] (any (not . null)+  , checkVersion CabalSpecV2_2 (any (not . null)                         (buildInfoField virtualModules)) $       PackageDistInexcusable $            "The use of 'virtual-modules' requires the package "-        ++ " to specify at least 'cabal-version: >= 2.1'."--    -- check use of "tested-with: GHC (>= 1.0 && < 1.4) || >=1.8 " syntax-  , checkVersion [1,8] (not (null testedWithVersionRangeExpressions)) $-      PackageDistInexcusable $-           "The package uses full version-range expressions "-        ++ "in a 'tested-with' field: "-        ++ commaSep (map displayRawDependency testedWithVersionRangeExpressions)-        ++ ". To use this new syntax the package needs to specify at least "-        ++ "'cabal-version: >= 1.8'."--    -- check use of "tested-with: GHC == 6.12.*" syntax-  , checkVersion [1,6] (not (null testedWithUsingWildcardSyntax)) $-      PackageDistInexcusable $-           "The package uses wildcard syntax in the 'tested-with' field: "-        ++ commaSep (map prettyShow testedWithUsingWildcardSyntax)-        ++ ". To use this new syntax the package need to specify at least "-        ++ "'cabal-version: >= 1.6'. Alternatively, if broader compatibility "-        ++ "is important then use: " ++ commaSep-           [ prettyShow (Dependency name (eliminateWildcardSyntax versionRange) Set.empty)-           | Dependency name versionRange _ <- testedWithUsingWildcardSyntax ]+        ++ " to specify at least 'cabal-version: 2.2'."      -- check use of "source-repository" section-  , checkVersion [1,6] (not (null (sourceRepos pkg))) $+  , checkVersion CabalSpecV1_6 (not (null (sourceRepos pkg))) $       PackageDistInexcusable $            "The 'source-repository' section is new in Cabal 1.6. "         ++ "Unfortunately it messes up the parser in earlier Cabal versions "         ++ "so you need to specify 'cabal-version: >= 1.6'."      -- check for new language extensions-  , checkVersion [1,2,3] (not (null mentionedExtensionsThatNeedCabal12)) $+  , checkVersion CabalSpecV1_4 (not (null mentionedExtensionsThatNeedCabal12)) $       PackageDistInexcusable $            "Unfortunately the language extensions "         ++ commaSep (map (quote . prettyShow) mentionedExtensionsThatNeedCabal12)         ++ " break the parser in earlier Cabal versions so you need to "-        ++ "specify 'cabal-version: >= 1.2.3'. Alternatively if you require "+        ++ "specify 'cabal-version: >= 1.4'. Alternatively if you require "         ++ "compatibility with earlier Cabal versions then you may be able to "         ++ "use an equivalent compiler-specific flag." -  , checkVersion [1,4] (not (null mentionedExtensionsThatNeedCabal14)) $+  , checkVersion CabalSpecV1_4 (not (null mentionedExtensionsThatNeedCabal14)) $       PackageDistInexcusable $            "Unfortunately the language extensions "         ++ commaSep (map (quote . prettyShow) mentionedExtensionsThatNeedCabal14)@@ -1391,7 +1294,7 @@         ++ "compatibility with earlier Cabal versions then you may be able to "         ++ "use an equivalent compiler-specific flag." -  , check (specVersion pkg >= mkVersion [1,23]+  , check (specVersion pkg >= CabalSpecV1_24            && isNothing (setupBuildInfo pkg)            && buildType pkg == Custom) $       PackageBuildWarning $@@ -1401,7 +1304,7 @@         ++ "The 'setup-depends' field uses the same syntax as 'build-depends', "         ++ "so a simple example would be 'setup-depends: base, Cabal'." -  , check (specVersion pkg < mkVersion [1,23]+  , check (specVersion pkg < CabalSpecV1_24            && isNothing (setupBuildInfo pkg)            && buildType pkg == Custom) $       PackageDistSuspiciousWarn $@@ -1412,7 +1315,7 @@         ++ "The 'setup-depends' field uses the same syntax as 'build-depends', "         ++ "so a simple example would be 'setup-depends: base, Cabal'." -  , check (specVersion pkg >= mkVersion [1,25]+  , check (specVersion pkg >= CabalSpecV2_0            && elem (autogenPathsModuleName pkg) allModuleNames            && not (elem (autogenPathsModuleName pkg) allModuleNamesAutogen) ) $       PackageDistInexcusable $@@ -1429,89 +1332,15 @@     -- the version given. This is for cases where a new Cabal version adds     -- a new feature and we want to check that it is not used prior to that     -- version.-    checkVersion :: [Int] -> Bool -> PackageCheck -> Maybe PackageCheck+    checkVersion :: CabalSpecVersion -> Bool -> PackageCheck -> Maybe PackageCheck     checkVersion ver cond pc-      | specVersion pkg >= mkVersion ver       = Nothing-      | otherwise                              = check cond pc+      | specVersion pkg >= ver = Nothing+      | otherwise              = check cond pc      buildInfoField field         = map field (allBuildInfo pkg) -    versionRangeExpressions =-        [ dep | dep@(Dependency _ vr _) <- allBuildDepends pkg-              , usesNewVersionRangeSyntax vr ]--    testedWithVersionRangeExpressions =-        [ Dependency (mkPackageName (prettyShow compiler)) vr Set.empty-        | (compiler, vr) <- testedWith pkg-        , usesNewVersionRangeSyntax vr ]--    simpleSpecVersionRangeSyntax =-        either (const True) (cataVersionRange alg) (specVersionRaw pkg)-      where-        alg (OrLaterVersionF _) = True-        alg _                   = False--    -- is the cabal-version field a simple version number, rather than a range-    simpleSpecVersionSyntax =-      either (const True) (const False) (specVersionRaw pkg)--    usesNewVersionRangeSyntax :: VersionRange -> Bool-    usesNewVersionRangeSyntax-        = (> 2) -- uses the new syntax if depth is more than 2-        . cataVersionRange alg-      where-        alg (UnionVersionRangesF a b) = a + b-        alg (IntersectVersionRangesF a b) = a + b-        alg (VersionRangeParensF _) = 3-        alg _ = 1 :: Int--    depsUsingWildcardSyntax = [ dep | dep@(Dependency _ vr _) <- allBuildDepends pkg-                                    , usesWildcardSyntax vr ]--    depsUsingMajorBoundSyntax = [ dep | dep@(Dependency _ vr _) <- allBuildDepends pkg-                                      , usesMajorBoundSyntax vr ]-     usesBackpackIncludes = any (not . null . mixins) (allBuildInfo pkg) -    testedWithUsingWildcardSyntax =-      [ Dependency (mkPackageName (prettyShow compiler)) vr Set.empty-      | (compiler, vr) <- testedWith pkg-      , usesWildcardSyntax vr ]--    usesWildcardSyntax :: VersionRange -> Bool-    usesWildcardSyntax = cataVersionRange alg-      where-        alg (WildcardVersionF _)          = True-        alg (UnionVersionRangesF a b)     = a || b-        alg (IntersectVersionRangesF a b) = a || b-        alg (VersionRangeParensF a)       = a-        alg _                             = False--    -- NB: this eliminates both, WildcardVersion and MajorBoundVersion-    -- because when WildcardVersion is not support, neither is MajorBoundVersion-    eliminateWildcardSyntax = hyloVersionRange embed projectVersionRange-      where-        embed (WildcardVersionF v) = intersectVersionRanges-            (orLaterVersion v) (earlierVersion (wildcardUpperBound v))-        embed (MajorBoundVersionF v) = intersectVersionRanges-            (orLaterVersion v) (earlierVersion (majorUpperBound v))-        embed vr = embedVersionRange vr--    usesMajorBoundSyntax :: VersionRange -> Bool-    usesMajorBoundSyntax = cataVersionRange alg-      where-        alg (MajorBoundVersionF _)        = True-        alg (UnionVersionRangesF a b)     = a || b-        alg (IntersectVersionRangesF a b) = a || b-        alg (VersionRangeParensF a)       = a-        alg _                             = False--    eliminateMajorBoundSyntax = hyloVersionRange embed projectVersionRange-      where-        embed (MajorBoundVersionF v) = intersectVersionRanges-            (orLaterVersion v) (earlierVersion (majorUpperBound v))-        embed vr = embedVersionRange vr-     mentionedExtensions = [ ext | bi <- allBuildInfo pkg                                 , ext <- allExtensions bi ]     mentionedExtensionsThatNeedCabal12 =@@ -1562,16 +1391,11 @@      allModuleNamesAutogen = concatMap autogenModules (allBuildInfo pkg) -displayRawDependency :: Dependency -> String-displayRawDependency (Dependency pkg vr _sublibs) =-  prettyShow pkg ++ " " ++ prettyShow vr-- -- ------------------------------------------------------------ -- * Checks on the GenericPackageDescription -- ------------------------------------------------------------ --- | Check the build-depends fields for any weirdness or bad practise.+-- | Check the build-depends fields for any weirdness or bad practice. -- checkPackageVersions :: GenericPackageDescription -> [PackageCheck] checkPackageVersions pkg =@@ -1586,7 +1410,7 @@            "The dependency 'build-depends: base' does not specify an upper "         ++ "bound on the version number. Each major release of the 'base' "         ++ "package changes the API in various ways and most packages will "-        ++ "need some changes to compile with it. The recommended practise "+        ++ "need some changes to compile with it. The recommended practice "         ++ "is to specify an upper bound on the version of the 'base' "         ++ "package. This ensures your package will continue to build when a "         ++ "new major version of the 'base' package is released. If you are "@@ -1706,12 +1530,12 @@      used :: Set.Set FlagName     used = mconcat-        [ toSetOf (L.condLibrary      . traverse      . traverseCondTreeV . L._Flag) gpd-        , toSetOf (L.condSubLibraries . traverse . _2 . traverseCondTreeV . L._Flag) gpd-        , toSetOf (L.condForeignLibs  . traverse . _2 . traverseCondTreeV . L._Flag) gpd-        , toSetOf (L.condExecutables  . traverse . _2 . traverseCondTreeV . L._Flag) gpd-        , toSetOf (L.condTestSuites   . traverse . _2 . traverseCondTreeV . L._Flag) gpd-        , toSetOf (L.condBenchmarks   . traverse . _2 . traverseCondTreeV . L._Flag) gpd+        [ toSetOf (L.condLibrary      . traverse      . traverseCondTreeV . L._PackageFlag) gpd+        , toSetOf (L.condSubLibraries . traverse . _2 . traverseCondTreeV . L._PackageFlag) gpd+        , toSetOf (L.condForeignLibs  . traverse . _2 . traverseCondTreeV . L._PackageFlag) gpd+        , toSetOf (L.condExecutables  . traverse . _2 . traverseCondTreeV . L._PackageFlag) gpd+        , toSetOf (L.condTestSuites   . traverse . _2 . traverseCondTreeV . L._PackageFlag) gpd+        , toSetOf (L.condBenchmarks   . traverse . _2 . traverseCondTreeV . L._PackageFlag) gpd         ]  checkUnicodeXFields :: GenericPackageDescription -> [PackageCheck]@@ -1735,7 +1559,7 @@ -- | cabal-version <2.2 + Paths_module + default-extensions: doesn't build. checkPathsModuleExtensions :: PackageDescription -> [PackageCheck] checkPathsModuleExtensions pd-    | specVersion pd >= mkVersion [2,1] = []+    | specVersion pd >= CabalSpecV2_2 = []     | any checkBI (allBuildInfo pd) || any checkLib (allLibraries pd)         = return $ PackageBuildImpossible $ unwords             [ "The package uses RebindableSyntax with OverloadedStrings or OverloadedLists"@@ -1856,14 +1680,14 @@      -- We've basically got three-values logic here: True, False or unknown     -- hence this pattern to propagate the unknown cases properly.-    definitelyFalse (Var (Flag n)) = maybe False not (Map.lookup n manualFlags)+    definitelyFalse (Var (PackageFlag n)) = maybe False not (Map.lookup n manualFlags)     definitelyFalse (Var _)        = False     definitelyFalse (Lit  b)       = not b     definitelyFalse (CNot c)       = definitelyTrue c     definitelyFalse (COr  c1 c2)   = definitelyFalse c1 && definitelyFalse c2     definitelyFalse (CAnd c1 c2)   = definitelyFalse c1 || definitelyFalse c2 -    definitelyTrue (Var (Flag n)) = fromMaybe False (Map.lookup n manualFlags)+    definitelyTrue (Var (PackageFlag n)) = fromMaybe False (Map.lookup n manualFlags)     definitelyTrue (Var _)        = False     definitelyTrue (Lit  b)       = b     definitelyTrue (CNot c)       = definitelyFalse c@@ -1919,7 +1743,7 @@ -- | Sanity check things that requires IO. It looks at the files in the -- package and expects to find the package unpacked in at the given file path. ---checkPackageFiles :: Verbosity -> PackageDescription -> FilePath -> NoCallStackIO [PackageCheck]+checkPackageFiles :: Verbosity -> PackageDescription -> FilePath -> IO [PackageCheck] checkPackageFiles verbosity pkg root = do   contentChecks <- checkPackageContent checkFilesIO pkg   preDistributionChecks <- checkPackageFilesPreDistribution verbosity pkg root@@ -1953,7 +1777,8 @@ -- The point of this extra generality is to allow doing checks in some virtual -- file system, for example a tarball in memory. ---checkPackageContent :: Monad m => CheckPackageContentOps m+checkPackageContent :: (Monad m, Applicative m)+                    => CheckPackageContentOps m                     -> PackageDescription                     -> m [PackageCheck] checkPackageContent ops pkg = do@@ -2044,11 +1869,12 @@                   ++ "Please use only one of: "                   ++ intercalate ", " l -checkLicensesExist :: Monad m => CheckPackageContentOps m+checkLicensesExist :: (Monad m, Applicative m)+                   => CheckPackageContentOps m                    -> PackageDescription                    -> m [PackageCheck] checkLicensesExist ops pkg = do-    exists <- mapM (doesFileExist ops) (licenseFiles pkg)+    exists <- traverse (doesFileExist ops) (licenseFiles pkg)     return       [ PackageBuildWarning $            "The '" ++ fieldname ++ "' field refers to the file "@@ -2101,17 +1927,18 @@            }          | (dir, kind) <- missing ] -checkMissingVcsInfo :: Monad m => CheckPackageContentOps m+checkMissingVcsInfo :: (Monad m, Applicative m)+                    => CheckPackageContentOps m                     -> PackageDescription                     -> m [PackageCheck] checkMissingVcsInfo ops pkg | null (sourceRepos pkg) = do-    vcsInUse <- liftM or $ mapM (doesDirectoryExist ops) repoDirnames+    vcsInUse <- liftM or $ traverse (doesDirectoryExist ops) repoDirnames     if vcsInUse       then return [ PackageDistSuspicious message ]       else return []   where     repoDirnames = [ dirname | repo    <- knownRepoTypes-                             , dirname <- repoTypeDirname repo ]+                             , dirname <- repoTypeDirname repo]     message  = "When distributing packages it is encouraged to specify source "             ++ "control information in the .cabal file using one or more "             ++ "'source-repository' sections. See the Cabal user guide for "@@ -2119,17 +1946,16 @@  checkMissingVcsInfo _ _ = return [] -repoTypeDirname :: RepoType -> [FilePath]-repoTypeDirname Darcs      = ["_darcs"]-repoTypeDirname Git        = [".git"]-repoTypeDirname SVN        = [".svn"]-repoTypeDirname CVS        = ["CVS"]-repoTypeDirname Mercurial  = [".hg"]-repoTypeDirname GnuArch    = [".arch-params"]-repoTypeDirname Bazaar     = [".bzr"]-repoTypeDirname Monotone   = ["_MTN"]-repoTypeDirname _          = []-+repoTypeDirname :: KnownRepoType -> [FilePath]+repoTypeDirname Darcs     = ["_darcs"]+repoTypeDirname Git       = [".git"]+repoTypeDirname SVN       = [".svn"]+repoTypeDirname CVS       = ["CVS"]+repoTypeDirname Mercurial = [".hg"]+repoTypeDirname GnuArch   = [".arch-params"]+repoTypeDirname Bazaar    = [".bzr"]+repoTypeDirname Monotone  = ["_MTN"]+repoTypeDirname Pijul     = [".pijul"]  -- ------------------------------------------------------------ -- * Checks involving files in the package@@ -2235,7 +2061,7 @@ -- check these on the server; these checks only make sense in the development -- and package-creation environment. Hence we can use IO, rather than needing -- to pass a 'CheckPackageContentOps' dictionary around.-checkPackageFilesPreDistribution :: Verbosity -> PackageDescription -> FilePath -> NoCallStackIO [PackageCheck]+checkPackageFilesPreDistribution :: Verbosity -> PackageDescription -> FilePath -> IO [PackageCheck] -- Note: this really shouldn't return any 'Inexcusable' warnings, -- because that will make us say that Hackage would reject the package. -- But, because Hackage doesn't run these tests, that will be a lie!@@ -2245,7 +2071,7 @@ checkGlobFiles :: Verbosity                -> PackageDescription                -> FilePath-               -> NoCallStackIO [PackageCheck]+               -> IO [PackageCheck] checkGlobFiles verbosity pkg root =   fmap concat $ for allGlobs $ \(field, dir, glob) ->     -- Note: we just skip over parse errors here; they're reported elsewhere.
Distribution/PackageDescription/Configuration.hs view
@@ -31,42 +31,36 @@     mapTreeConstrs,     transformAllBuildInfos,     transformAllBuildDepends,+    transformAllBuildDependsN,   ) where -import Prelude () import Distribution.Compat.Prelude+import Prelude ()  -- lens-import qualified Distribution.Types.BuildInfo.Lens as L+import qualified Distribution.Types.BuildInfo.Lens                 as L import qualified Distribution.Types.GenericPackageDescription.Lens as L-import qualified Distribution.Types.PackageDescription.Lens as L-import qualified Distribution.Types.SetupBuildInfo.Lens as L+import qualified Distribution.Types.PackageDescription.Lens        as L+import qualified Distribution.Types.SetupBuildInfo.Lens            as L -import Distribution.PackageDescription-import Distribution.PackageDescription.Utils-import Distribution.Version-import Distribution.Compiler-import Distribution.System-import Distribution.Parsec-import Distribution.Pretty-import Distribution.Compat.CharParsing hiding (char)-import qualified Distribution.Compat.CharParsing as P-import Distribution.Simple.Utils-import Distribution.Compat.Lens-import Distribution.Types.ComponentRequestedSpec-import Distribution.Types.ForeignLib-import Distribution.Types.Component-import Distribution.Types.Dependency-import Distribution.Types.PackageName-import Distribution.Types.UnqualComponentName-import Distribution.Types.CondTree-import Distribution.Types.Condition-import Distribution.Types.DependencyMap+import           Distribution.Compat.CharParsing             hiding (char)+import qualified Distribution.Compat.CharParsing             as P+import           Distribution.Compat.Lens+import           Distribution.Compiler+import           Distribution.PackageDescription+import           Distribution.PackageDescription.Utils+import           Distribution.Parsec+import           Distribution.Pretty+import           Distribution.Simple.Utils+import           Distribution.System+import           Distribution.Types.Component+import           Distribution.Types.ComponentRequestedSpec+import           Distribution.Types.DependencyMap+import           Distribution.Types.PackageVersionConstraint+import           Distribution.Version -import qualified Data.Map.Strict as Map.Strict-import qualified Data.Map.Lazy   as Map-import qualified Data.Set as Set-import Data.Tree ( Tree(Node) )+import qualified Data.Map.Lazy as Map+import           Data.Tree     (Tree (Node))  ------------------------------------------------------------------------------ @@ -88,7 +82,7 @@           Just compat -> Right (any matchImpl compat)           where             matchImpl (CompilerId c v) = comp == c && v `withinRange` vr-    interp (Flag f) = Left f+    interp (PackageFlag f) = Left f  -- TODO: Add instances and check --@@ -125,10 +119,10 @@     boolLiteral   = fmap Lit  parsec     archIdent     = fmap Arch parsec     osIdent       = fmap OS   parsec-    flagIdent     = fmap (Flag . mkFlagName . lowercase) (munch1 isIdentChar)+    flagIdent     = fmap (PackageFlag . mkFlagName . lowercase) (munch1 isIdentChar)     isIdentChar c = isAlphaNum c || c == '_' || c == '-'     oper s        = sp >> string s >> sp-    sp            = spaces +    sp            = spaces     implIdent     = do i <- parsec                        vr <- sp >> option anyVersion parsec                        return $ Impl i vr@@ -177,7 +171,7 @@   -> OS      -- ^ OS as returned by Distribution.System.buildOS   -> Arch    -- ^ Arch as returned by Distribution.System.buildArch   -> CompilerInfo  -- ^ Compiler information-  -> [Dependency]  -- ^ Additional constraints+  -> [PackageVersionConstraint]  -- ^ Additional constraints   -> [CondTree ConfVar [Dependency] PDTagged]   -> ([Dependency] -> DepTestRslt [Dependency])  -- ^ Dependency test function.   -> Either [Dependency] (TargetSet PDTagged, FlagAssignment)@@ -186,8 +180,6 @@ resolveWithFlags dom enabled os arch impl constrs trees checkDeps =     either (Left . fromDepMapUnion) Right $ explore (build mempty dom)   where-    extraConstrs = toDepMap constrs-     -- simplify trees by (partially) evaluating all conditions and converting     -- dependencies to dependency maps.     simplifiedTrees :: [CondTree FlagName DependencyMap PDTagged]@@ -206,7 +198,7 @@     explore (Node flags ts) =         let targetSet = TargetSet $ flip map simplifiedTrees $                 -- apply additional constraints to all dependencies-                first (`constrainBy` extraConstrs) .+                first (`constrainBy` constrs) .                 simplifyCondTree (env flags)             deps = overallDependencies enabled targetSet         in case checkDeps (fromDepMap deps) of@@ -228,11 +220,7 @@     mp :: Either DepMapUnion a -> Either DepMapUnion a -> Either DepMapUnion a     mp m@(Right _) _           = m     mp _           m@(Right _) = m-    mp (Left xs)   (Left ys)   =-        let union = Map.foldrWithKey (Map.Strict.insertWith combine)-                    (unDepMapUnion xs) (unDepMapUnion ys)-            combine x y = (\(vr, cs) -> (simplifyVersionRange vr,cs)) $ unionVersionRanges' x y-        in union `seq` Left (DepMapUnion union)+    mp (Left xs)   (Left ys)   = Left (xs <> ys)      -- `mzero'     mz :: Either DepMapUnion a@@ -308,26 +296,29 @@     ]  --- | A map of dependencies that combines version ranges using 'unionVersionRanges'.-newtype DepMapUnion = DepMapUnion { unDepMapUnion :: Map PackageName (VersionRange, Set LibraryName) }+-- | A map of package constraints that combines version ranges using 'unionVersionRanges'.+newtype DepMapUnion = DepMapUnion { unDepMapUnion :: Map PackageName (VersionRange, NonEmptySet LibraryName) } --- An union of versions should correspond to an intersection of the components.--- The intersection may not be necessary.-unionVersionRanges' :: (VersionRange, Set LibraryName)-                    -> (VersionRange, Set LibraryName)-                    -> (VersionRange, Set LibraryName)-unionVersionRanges' (vra, csa) (vrb, csb) =-  (unionVersionRanges vra vrb, Set.intersection csa csb)+instance Semigroup DepMapUnion where+    DepMapUnion x <> DepMapUnion y = DepMapUnion $+        Map.unionWith unionVersionRanges' x y +unionVersionRanges'+    :: (VersionRange, NonEmptySet LibraryName)+    -> (VersionRange, NonEmptySet LibraryName)+    -> (VersionRange, NonEmptySet LibraryName)+unionVersionRanges' (vr, cs) (vr', cs') = (unionVersionRanges vr vr', cs <> cs')+ toDepMapUnion :: [Dependency] -> DepMapUnion toDepMapUnion ds =   DepMapUnion $ Map.fromListWith unionVersionRanges' [ (p,(vr,cs)) | Dependency p vr cs <- ds ] + fromDepMapUnion :: DepMapUnion -> [Dependency] fromDepMapUnion m = [ Dependency p vr cs | (p,(vr,cs)) <- Map.toList (unDepMapUnion m) ]  freeVars :: CondTree ConfVar c a  -> [FlagName]-freeVars t = [ f | Flag f <- freeVars' t ]+freeVars t = [ f | PackageFlag f <- freeVars' t ]   where     freeVars' (CondNode _ _ ifs) = concatMap compfv ifs     compfv (CondBranch c ct mct) = condfv c ++ freeVars' ct ++ maybe [] freeVars' mct@@ -438,7 +429,7 @@                           -- True.   -> Platform      -- ^ The 'Arch' and 'OS'   -> CompilerInfo  -- ^ Compiler information-  -> [Dependency]  -- ^ Additional constraints+  -> [PackageVersionConstraint]  -- ^ Additional constraints   -> GenericPackageDescription   -> Either [Dependency]             (PackageDescription, FlagAssignment)@@ -446,7 +437,7 @@              -- description along with the flag assignments chosen. finalizePD userflags enabled satisfyDep         (Platform arch os) impl constraints-        (GenericPackageDescription pkg flags mb_lib0 sub_libs0 flibs0 exes0 tests0 bms0) = do+        (GenericPackageDescription pkg _ver flags mb_lib0 sub_libs0 flibs0 exes0 tests0 bms0) = do   (targetSet, flagVals) <-     resolveWithFlags flagChoices enabled os arch impl constraints condTrees check   let@@ -478,7 +469,7 @@                 ++ map (\(name,tree) -> mapTreeData (SubComp name . CTest) tree) tests0                 ++ map (\(name,tree) -> mapTreeData (SubComp name . CBench) tree) bms0 -    flagChoices    = map (\(MkFlag n _ d manual) -> (n, d2c manual n d)) flags+    flagChoices    = map (\(MkPackageFlag n _ d manual) -> (n, d2c manual n d)) flags     d2c manual n b = case lookupFlagAssignment n userflags of                      Just val -> [val]                      Nothing@@ -515,7 +506,7 @@ -- function. flattenPackageDescription :: GenericPackageDescription -> PackageDescription flattenPackageDescription-  (GenericPackageDescription pkg _ mlib0 sub_libs0 flibs0 exes0 tests0 bms0) =+  (GenericPackageDescription pkg _ _ mlib0 sub_libs0 flibs0 exes0 tests0 bms0) =     pkg { library      = mlib         , subLibraries = reverse sub_libs         , foreignLibs  = reverse flibs@@ -595,3 +586,14 @@   . over (L.packageDescription . L.setupBuildInfo . traverse . L.setupDepends . traverse) f   -- cannot be point-free as normal because of higher rank   . over (\f' -> L.allCondTrees $ traverseCondTreeC f') (map f)++-- | Walk a 'GenericPackageDescription' and apply @f@ to all nested+-- @build-depends@ fields.+transformAllBuildDependsN :: ([Dependency] -> [Dependency])+                          -> GenericPackageDescription+                          -> GenericPackageDescription+transformAllBuildDependsN f =+  over (L.traverseBuildInfos . L.targetBuildDepends) f+  . over (L.packageDescription . L.setupBuildInfo . traverse . L.setupDepends) f+  -- cannot be point-free as normal because of higher rank+  . over (\f' -> L.allCondTrees $ traverseCondTreeC f') f
Distribution/PackageDescription/FieldGrammar.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE ConstraintKinds   #-} {-# LANGUAGE OverloadedStrings #-} -- | 'GenericPackageDescription' Field descriptions module Distribution.PackageDescription.FieldGrammar (@@ -24,6 +25,14 @@     benchmarkFieldGrammar,     validateBenchmark,     unvalidateBenchmark,+    -- * Field grammars+    formatDependencyList,+    formatExposedModules,+    formatExtraSourceFiles,+    formatHsSourceDirs,+    formatMixinList,+    formatOtherExtensions,+    formatOtherModules,     -- ** Lenses     benchmarkStanzaBenchmarkType,     benchmarkStanzaMainIs,@@ -39,26 +48,24 @@     buildInfoFieldGrammar,     ) where + import Distribution.Compat.Lens import Distribution.Compat.Prelude+import Language.Haskell.Extension import Prelude ()  import Distribution.CabalSpecVersion import Distribution.Compiler                  (CompilerFlavor (..), PerCompilerFlavor (..)) import Distribution.FieldGrammar+import Distribution.Fields import Distribution.ModuleName                (ModuleName) import Distribution.Package import Distribution.PackageDescription import Distribution.Parsec-import Distribution.Parsec.Newtypes-import Distribution.Fields import Distribution.Pretty                    (prettyShow)-import Distribution.Types.ExecutableScope-import Distribution.Types.ForeignLib-import Distribution.Types.ForeignLibType-import Distribution.Types.LibraryVisibility-import Distribution.Types.UnqualComponentName-import Distribution.Version                   (anyVersion)+import Distribution.Types.ModuleReexport+import Distribution.Types.Mixin               (Mixin)+import Distribution.Version                   (Version, VersionRange)  import qualified Distribution.SPDX as SPDX @@ -69,10 +76,20 @@ -------------------------------------------------------------------------------  packageDescriptionFieldGrammar-    :: (FieldGrammar g, Applicative (g PackageDescription), Applicative (g PackageIdentifier))+    :: ( FieldGrammar c g, Applicative (g PackageDescription), Applicative (g PackageIdentifier)+       , c (Identity BuildType)+       , c (Identity PackageName)+       , c (Identity Version)+       , c (List FSep FilePathNT String)+       , c (List FSep TestedWith (CompilerFlavor, VersionRange))+       , c (List VCat FilePathNT String)+       , c FilePathNT+       , c SpecLicense+       , c SpecVersion+       )     => g PackageDescription PackageDescription packageDescriptionFieldGrammar = PackageDescription-    <$> optionalFieldDefAla "cabal-version" SpecVersion                L.specVersionRaw (Right anyVersion)+    <$> optionalFieldDefAla "cabal-version" SpecVersion                L.specVersion CabalSpecV1_0     <*> blurFieldGrammar L.package packageIdentifierGrammar     <*> optionalFieldDefAla "license"       SpecLicense                L.licenseRaw (Left SPDX.NONE)     <*> licenseFilesGrammar@@ -101,7 +118,7 @@     --  * Files     <*> monoidalFieldAla    "data-files"         (alaList' VCat FilePathNT) L.dataFiles     <*> optionalFieldDefAla "data-dir"           FilePathNT                 L.dataDir "."-    <*> monoidalFieldAla    "extra-source-files" (alaList' VCat FilePathNT) L.extraSrcFiles+    <*> monoidalFieldAla    "extra-source-files" formatExtraSourceFiles     L.extraSrcFiles     <*> monoidalFieldAla    "extra-tmp-files"    (alaList' VCat FilePathNT) L.extraTmpFiles     <*> monoidalFieldAla    "extra-doc-files"    (alaList' VCat FilePathNT) L.extraDocFiles   where@@ -122,11 +139,28 @@ -------------------------------------------------------------------------------  libraryFieldGrammar-    :: (FieldGrammar g, Applicative (g Library), Applicative (g BuildInfo))+    :: ( FieldGrammar c g, Applicative (g Library), Applicative (g BuildInfo)+       , c (Identity LibraryVisibility)+       , c (List CommaFSep (Identity ExeDependency) ExeDependency)+       , c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency)+       , c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency)+       , c (List CommaVCat (Identity Dependency) Dependency)+       , c (List CommaVCat (Identity Mixin) Mixin)+       , c (List CommaVCat (Identity ModuleReexport) ModuleReexport)+       , c (List FSep (MQuoted Extension) Extension)+       , c (List FSep (MQuoted Language) Language)+       , c (List FSep FilePathNT String)+       , c (List FSep Token String)+       , c (List NoCommaFSep Token' String)+       , c (List VCat (MQuoted ModuleName) ModuleName)+       , c (List VCat FilePathNT String)+       , c (List VCat Token String)+       , c (MQuoted Language)+       )      => LibraryName     -> g Library Library libraryFieldGrammar n = Library n-    <$> monoidalFieldAla  "exposed-modules"    (alaList' VCat MQuoted) L.exposedModules+    <$> monoidalFieldAla  "exposed-modules"    formatExposedModules    L.exposedModules     <*> monoidalFieldAla  "reexported-modules" (alaList  CommaVCat)    L.reexportedModules     <*> monoidalFieldAla  "signatures"         (alaList' VCat MQuoted) L.signatures         ^^^ availableSince CabalSpecV2_0 []@@ -150,7 +184,25 @@ -------------------------------------------------------------------------------  foreignLibFieldGrammar-    :: (FieldGrammar g, Applicative (g ForeignLib), Applicative (g BuildInfo))+    :: ( FieldGrammar c g, Applicative (g ForeignLib), Applicative (g BuildInfo)+       , c (Identity ForeignLibType)+       , c (Identity LibVersionInfo)+       , c (Identity Version)+       , c (List CommaFSep (Identity ExeDependency) ExeDependency)+       , c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency)+       , c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency)+       , c (List CommaVCat (Identity Dependency) Dependency)+       , c (List CommaVCat (Identity Mixin) Mixin)+       , c (List FSep (Identity ForeignLibOption) ForeignLibOption)+       , c (List FSep (MQuoted Extension) Extension)+       , c (List FSep (MQuoted Language) Language)+       , c (List FSep FilePathNT String)+       , c (List FSep Token String)+       , c (List NoCommaFSep Token' String)+       , c (List VCat (MQuoted ModuleName) ModuleName)+       , c (List VCat FilePathNT String), c (List VCat Token String)+       , c (MQuoted Language)+       )     => UnqualComponentName -> g ForeignLib ForeignLib foreignLibFieldGrammar n = ForeignLib n     <$> optionalFieldDef "type"                                         L.foreignLibType ForeignLibTypeUnknown@@ -167,7 +219,23 @@ -------------------------------------------------------------------------------  executableFieldGrammar-    :: (FieldGrammar g, Applicative (g Executable), Applicative (g BuildInfo))+    :: ( FieldGrammar c g, Applicative (g Executable), Applicative (g BuildInfo)+       , c (Identity ExecutableScope),+                       c (List CommaFSep (Identity ExeDependency) ExeDependency),+                       c (List+                            CommaFSep (Identity LegacyExeDependency) LegacyExeDependency),+                       c (List+                            CommaFSep (Identity PkgconfigDependency) PkgconfigDependency),+                       c (List CommaVCat (Identity Dependency) Dependency),+                       c (List CommaVCat (Identity Mixin) Mixin),+                       c (List FSep (MQuoted Extension) Extension),+                       c (List FSep (MQuoted Language) Language),+                       c (List FSep FilePathNT String), c (List FSep Token String),+                       c (List NoCommaFSep Token' String),+                       c (List VCat (MQuoted ModuleName) ModuleName),+                       c (List VCat FilePathNT String), c (List VCat Token String),+                       c (MQuoted Language)+       )     => UnqualComponentName -> g Executable Executable executableFieldGrammar n = Executable n     -- main-is is optional as conditional blocks don't have it@@ -211,7 +279,24 @@ {-# INLINE testStanzaBuildInfo #-}  testSuiteFieldGrammar-    :: (FieldGrammar g, Applicative (g TestSuiteStanza), Applicative (g BuildInfo))+    :: ( FieldGrammar c g, Applicative (g TestSuiteStanza), Applicative (g BuildInfo)+       , c (Identity ModuleName)+       , c (Identity TestType)+       , c (List CommaFSep (Identity ExeDependency) ExeDependency)+       , c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency)+       , c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency)+       , c (List CommaVCat (Identity Dependency) Dependency)+       , c (List CommaVCat (Identity Mixin) Mixin)+       , c (List FSep (MQuoted Extension) Extension)+       , c (List FSep (MQuoted Language) Language)+       , c (List FSep FilePathNT String)+       , c (List FSep Token String)+       , c (List NoCommaFSep Token' String)+       , c (List VCat (MQuoted ModuleName) ModuleName)+       , c (List VCat FilePathNT String)+       , c (List VCat Token String)+       , c (MQuoted Language)+       )     => g TestSuiteStanza TestSuiteStanza testSuiteFieldGrammar = TestSuiteStanza     <$> optionalField    "type"                   testStanzaTestType@@ -313,7 +398,24 @@ {-# INLINE benchmarkStanzaBuildInfo #-}  benchmarkFieldGrammar-    :: (FieldGrammar g, Applicative (g BenchmarkStanza), Applicative (g BuildInfo))+    :: ( FieldGrammar c g, Applicative (g BenchmarkStanza), Applicative (g BuildInfo)+       , c (Identity BenchmarkType)+       , c (Identity ModuleName)+       , c (List CommaFSep (Identity ExeDependency) ExeDependency)+       , c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency)+       , c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency)+       , c (List CommaVCat (Identity Dependency) Dependency)+       , c (List CommaVCat (Identity Mixin) Mixin)+       , c (List FSep (MQuoted Extension) Extension)+       , c (List FSep (MQuoted Language) Language)+       , c (List FSep FilePathNT String)+       , c (List FSep Token String)+       , c (List NoCommaFSep Token' String)+       , c (List VCat (MQuoted ModuleName) ModuleName)+       , c (List VCat FilePathNT String)+       , c (List VCat Token String)+       , c (MQuoted Language)+       )     => g BenchmarkStanza BenchmarkStanza benchmarkFieldGrammar = BenchmarkStanza     <$> optionalField    "type"                        benchmarkStanzaBenchmarkType@@ -373,7 +475,22 @@ -------------------------------------------------------------------------------  buildInfoFieldGrammar-    :: (FieldGrammar g, Applicative (g BuildInfo))+    :: ( FieldGrammar c g, Applicative (g BuildInfo)+       , c (List CommaFSep (Identity ExeDependency) ExeDependency)+       , c (List CommaFSep (Identity LegacyExeDependency) LegacyExeDependency)+       , c (List CommaFSep (Identity PkgconfigDependency) PkgconfigDependency)+       , c (List CommaVCat (Identity Dependency) Dependency)+       , c (List CommaVCat (Identity Mixin) Mixin)+       , c (List FSep (MQuoted Extension) Extension)+       , c (List FSep (MQuoted Language) Language)+       , c (List FSep FilePathNT String)+       , c (List FSep Token String)+       , c (List NoCommaFSep Token' String)+       , c (List VCat (MQuoted ModuleName) ModuleName)+       , c (List VCat FilePathNT String)+       , c (List VCat Token String)+       , c (MQuoted Language)+       )     => g BuildInfo BuildInfo buildInfoFieldGrammar = BuildInfo     <$> booleanFieldDef  "buildable"                                          L.buildable True@@ -409,14 +526,19 @@         ^^^ availableSince CabalSpecV2_2 []     <*> monoidalFieldAla "js-sources"           (alaList' VCat FilePathNT)    L.jsSources     <*> hsSourceDirsGrammar-    <*> monoidalFieldAla "other-modules"        (alaList' VCat MQuoted)       L.otherModules+    <*> monoidalFieldAla "other-modules"        formatOtherModules            L.otherModules     <*> monoidalFieldAla "virtual-modules"      (alaList' VCat MQuoted)       L.virtualModules         ^^^ availableSince CabalSpecV2_2 []     <*> monoidalFieldAla "autogen-modules"      (alaList' VCat MQuoted)       L.autogenModules+        ^^^ availableSince CabalSpecV2_0 []     <*> optionalFieldAla "default-language"     MQuoted                       L.defaultLanguage+        ^^^ availableSince CabalSpecV1_10 Nothing     <*> monoidalFieldAla "other-languages"      (alaList' FSep MQuoted)       L.otherLanguages+        ^^^ availableSince CabalSpecV1_10 []     <*> monoidalFieldAla "default-extensions"   (alaList' FSep MQuoted)       L.defaultExtensions-    <*> monoidalFieldAla "other-extensions"     (alaList' FSep MQuoted)       L.otherExtensions+        ^^^ availableSince CabalSpecV1_10 []+    <*> monoidalFieldAla "other-extensions"     formatOtherExtensions         L.otherExtensions+        ^^^ availableSinceWarn CabalSpecV1_10     <*> monoidalFieldAla "extensions"           (alaList' FSep MQuoted)       L.oldExtensions         ^^^ deprecatedSince CabalSpecV1_12             "Please use 'default-extensions' or 'other-extensions' fields."@@ -439,17 +561,17 @@     <*> sharedOptionsFieldGrammar     <*> pure mempty -- static-options ???     <*> prefixedFields   "x-"                                                 L.customFieldsBI-    <*> monoidalFieldAla "build-depends"        (alaList  CommaVCat)          L.targetBuildDepends-    <*> monoidalFieldAla "mixins"               (alaList  CommaVCat)          L.mixins+    <*> monoidalFieldAla "build-depends"        formatDependencyList          L.targetBuildDepends+    <*> monoidalFieldAla "mixins"               formatMixinList               L.mixins         ^^^ availableSince CabalSpecV2_0 [] {-# SPECIALIZE buildInfoFieldGrammar :: ParsecFieldGrammar' BuildInfo #-} {-# SPECIALIZE buildInfoFieldGrammar :: PrettyFieldGrammar' BuildInfo #-}  hsSourceDirsGrammar-    :: (FieldGrammar g, Applicative (g BuildInfo))+    :: (FieldGrammar c g, Applicative (g BuildInfo), c (List FSep FilePathNT FilePath))     => g BuildInfo [FilePath] hsSourceDirsGrammar = (++)-    <$> monoidalFieldAla "hs-source-dirs" (alaList' FSep FilePathNT) L.hsSourceDirs+    <$> monoidalFieldAla "hs-source-dirs" formatHsSourceDirs L.hsSourceDirs     <*> monoidalFieldAla "hs-source-dir"  (alaList' FSep FilePathNT) wrongLens         --- https://github.com/haskell/cabal/commit/49e3cdae3bdf21b017ccd42e66670ca402e22b44         ^^^ deprecatedSince CabalSpecV1_2 "Please use 'hs-source-dirs'"@@ -460,7 +582,7 @@     wrongLens f bi = (\fps -> set L.hsSourceDirs fps bi) <$> f []  optionsFieldGrammar-    :: (FieldGrammar g, Applicative (g BuildInfo))+    :: (FieldGrammar c g, Applicative (g BuildInfo), c (List NoCommaFSep Token' String))     => g BuildInfo (PerCompilerFlavor [String]) optionsFieldGrammar = PerCompilerFlavor     <$> monoidalFieldAla "ghc-options"   (alaList' NoCommaFSep Token') (extract GHC)@@ -476,7 +598,7 @@     extract flavor = L.options . lookupLens flavor  profOptionsFieldGrammar-    :: (FieldGrammar g, Applicative (g BuildInfo))+    :: (FieldGrammar c g, Applicative (g BuildInfo), c (List NoCommaFSep Token' String))     => g BuildInfo (PerCompilerFlavor [String]) profOptionsFieldGrammar = PerCompilerFlavor     <$> monoidalFieldAla "ghc-prof-options"   (alaList' NoCommaFSep Token') (extract GHC)@@ -486,7 +608,7 @@     extract flavor = L.profOptions . lookupLens flavor  sharedOptionsFieldGrammar-    :: (FieldGrammar g, Applicative (g BuildInfo))+    :: (FieldGrammar c g, Applicative (g BuildInfo), c (List NoCommaFSep Token' String))     => g BuildInfo (PerCompilerFlavor [String]) sharedOptionsFieldGrammar = PerCompilerFlavor     <$> monoidalFieldAla "ghc-shared-options"   (alaList' NoCommaFSep Token') (extract GHC)@@ -506,21 +628,21 @@ -------------------------------------------------------------------------------  flagFieldGrammar-    :: (FieldGrammar g, Applicative (g Flag))-    =>  FlagName -> g Flag Flag-flagFieldGrammar name = MkFlag name+    :: (FieldGrammar c g, Applicative (g PackageFlag))+    =>  FlagName -> g PackageFlag PackageFlag+flagFieldGrammar name = MkPackageFlag name     <$> freeTextFieldDef    "description"          L.flagDescription     <*> booleanFieldDef     "default"              L.flagDefault     True     <*> booleanFieldDef     "manual"               L.flagManual      False-{-# SPECIALIZE flagFieldGrammar :: FlagName -> ParsecFieldGrammar' Flag #-}-{-# SPECIALIZE flagFieldGrammar :: FlagName -> PrettyFieldGrammar' Flag #-}+{-# SPECIALIZE flagFieldGrammar :: FlagName -> ParsecFieldGrammar' PackageFlag #-}+{-# SPECIALIZE flagFieldGrammar :: FlagName -> PrettyFieldGrammar' PackageFlag #-}  ------------------------------------------------------------------------------- -- SourceRepo -------------------------------------------------------------------------------  sourceRepoFieldGrammar-    :: (FieldGrammar g, Applicative (g SourceRepo))+    :: (FieldGrammar c g, Applicative (g SourceRepo), c (Identity RepoType), c Token, c FilePathNT)     => RepoKind -> g SourceRepo SourceRepo sourceRepoFieldGrammar kind = SourceRepo kind     <$> optionalField    "type"                L.repoType@@ -530,16 +652,41 @@     <*> optionalFieldAla "tag"      Token      L.repoTag     <*> optionalFieldAla "subdir"   FilePathNT L.repoSubdir {-# SPECIALIZE sourceRepoFieldGrammar :: RepoKind -> ParsecFieldGrammar' SourceRepo #-}-{-# SPECIALIZE sourceRepoFieldGrammar :: RepoKind ->PrettyFieldGrammar' SourceRepo #-}+{-# SPECIALIZE sourceRepoFieldGrammar :: RepoKind -> PrettyFieldGrammar' SourceRepo #-}  ------------------------------------------------------------------------------- -- SetupBuildInfo -------------------------------------------------------------------------------  setupBInfoFieldGrammar-    :: (FieldGrammar g, Functor (g SetupBuildInfo))+    :: (FieldGrammar c g, Functor (g SetupBuildInfo), c (List CommaVCat (Identity Dependency) Dependency))     => Bool -> g SetupBuildInfo SetupBuildInfo setupBInfoFieldGrammar def = flip SetupBuildInfo def     <$> monoidalFieldAla "setup-depends" (alaList CommaVCat) L.setupDepends {-# SPECIALIZE setupBInfoFieldGrammar :: Bool -> ParsecFieldGrammar' SetupBuildInfo #-}-{-# SPECIALIZE setupBInfoFieldGrammar :: Bool ->PrettyFieldGrammar' SetupBuildInfo #-}+{-# SPECIALIZE setupBInfoFieldGrammar :: Bool -> PrettyFieldGrammar' SetupBuildInfo #-}++-------------------------------------------------------------------------------+-- Define how field values should be formatted for 'pretty'.+-------------------------------------------------------------------------------++formatDependencyList :: [Dependency] -> List CommaVCat (Identity Dependency) Dependency+formatDependencyList = alaList CommaVCat++formatMixinList :: [Mixin] -> List CommaVCat (Identity Mixin) Mixin+formatMixinList = alaList CommaVCat++formatExtraSourceFiles :: [FilePath] -> List VCat FilePathNT FilePath+formatExtraSourceFiles = alaList' VCat FilePathNT++formatExposedModules :: [ModuleName] -> List VCat (MQuoted ModuleName) ModuleName+formatExposedModules = alaList' VCat MQuoted++formatHsSourceDirs :: [FilePath] -> List FSep FilePathNT FilePath+formatHsSourceDirs = alaList' FSep FilePathNT++formatOtherExtensions :: [Extension] -> List FSep (MQuoted Extension) Extension+formatOtherExtensions = alaList' FSep MQuoted++formatOtherModules :: [ModuleName] -> List VCat (MQuoted ModuleName) ModuleName+formatOtherModules = alaList' VCat MQuoted
Distribution/PackageDescription/Parsec.hs view
@@ -35,12 +35,8 @@ import Distribution.Compat.Prelude import Prelude () -import Control.Applicative                           (Const (..))-import Control.DeepSeq                               (deepseq)-import Control.Monad                                 (guard) import Control.Monad.State.Strict                    (StateT, execStateT) import Control.Monad.Trans.Class                     (lift)-import Data.List                                     (partition) import Distribution.CabalSpecVersion import Distribution.Compat.Lens import Distribution.FieldGrammar@@ -51,38 +47,32 @@ import Distribution.Fields.Parser import Distribution.Fields.ParseResult import Distribution.PackageDescription-import Distribution.PackageDescription.Configuration (freeVars)+import Distribution.PackageDescription.Configuration (freeVars, transformAllBuildInfos) import Distribution.PackageDescription.FieldGrammar import Distribution.PackageDescription.Quirks        (patchQuirks)-import Distribution.Parsec                           (parsec, simpleParsec)+import Distribution.Parsec                           (parsec, simpleParsecBS) import Distribution.Parsec.FieldLineStream           (fieldLineStreamFromBS)-import Distribution.Parsec.Newtypes                  (CommaFSep, List, SpecVersion (..), Token) import Distribution.Parsec.Position                  (Position (..), zeroPos) import Distribution.Parsec.Warning                   (PWarnType (..)) import Distribution.Pretty                           (prettyShow)-import Distribution.Simple.Utils                     (fromUTF8BS)-import Distribution.Types.CondTree-import Distribution.Types.Dependency                 (Dependency)-import Distribution.Types.ForeignLib-import Distribution.Types.ForeignLibType             (knownForeignLibTypes)-import Distribution.Types.GenericPackageDescription  (emptyGenericPackageDescription)-import Distribution.Types.LibraryVisibility          (LibraryVisibility (..))-import Distribution.Types.PackageDescription         (specVersion')-import Distribution.Types.UnqualComponentName        (UnqualComponentName, mkUnqualComponentName)+import Distribution.Simple.Utils                     (fromUTF8BS, toUTF8BS)+import Distribution.Types.Mixin                      (Mixin (..), mkMixin) import Distribution.Utils.Generic                    (breakMaybe, unfoldrM, validateUTF8) import Distribution.Verbosity                        (Verbosity)-import Distribution.Version                          (LowerBound (..), Version, asVersionIntervals, mkVersion, orLaterVersion, version0, versionNumbers)+import Distribution.Version                          (Version, mkVersion, versionNumbers)  import qualified Data.ByteString                                   as BS import qualified Data.ByteString.Char8                             as BS8 import qualified Data.Map.Strict                                   as Map import qualified Data.Set                                          as Set import qualified Distribution.Compat.Newtype                       as Newtype+import qualified Distribution.Compat.NonEmptySet                   as NES import qualified Distribution.Types.BuildInfo.Lens                 as L import qualified Distribution.Types.Executable.Lens                as L import qualified Distribution.Types.ForeignLib.Lens                as L import qualified Distribution.Types.GenericPackageDescription.Lens as L import qualified Distribution.Types.PackageDescription.Lens        as L+import qualified Distribution.Types.SetupBuildInfo.Lens            as L import qualified Text.Parsec                                       as P  -- ---------------------------------------------------------------@@ -103,18 +93,21 @@ parseGenericPackageDescription bs = do     -- set scanned version     setCabalSpecVersion ver-    -- if we get too new version, fail right away-    case ver of-        Just v | v > mkVersion [3,0] -> parseFailure zeroPos-            "Unsupported cabal-version. See https://github.com/haskell/cabal/issues/4899."-        _ -> pure () -    case readFields' bs' of+    csv <- case ver of+        -- if we get too new version, fail right away+        Just v -> case cabalSpecFromVersionDigits (versionNumbers v) of+            Just csv -> return (Just csv)+            Nothing  -> parseFatalFailure zeroPos $+                "Unsupported cabal-version " ++ prettyShow v ++ ". See https://github.com/haskell/cabal/issues/4899."+        _ -> pure Nothing++    case readFields' bs'' of         Right (fs, lexWarnings) -> do             when patched $                 parseWarning zeroPos PWTQuirkyCabalFile "Legacy cabal file"             -- UTF8 is validated in a prepass step, afterwards parsing is lenient.-            parseGenericPackageDescription' ver lexWarnings (validateUTF8 bs') fs+            parseGenericPackageDescription' csv lexWarnings invalidUtf8 fs         -- TODO: better marshalling of errors         Left perr -> parseFatalFailure pos (show perr) where             ppos = P.errorPos perr@@ -123,6 +116,14 @@     (patched, bs') = patchQuirks bs     ver = scanSpecVersion bs' +    invalidUtf8 = validateUTF8 bs'++    -- if there are invalid utf8 characters, we make the bytestring valid.+    bs'' = case invalidUtf8 of+        Nothing -> bs'+        Just _  -> toUTF8BS (fromUTF8BS bs')++ -- | 'Maybe' variant of 'parseGenericPackageDescription' parseGenericPackageDescriptionMaybe :: BS.ByteString -> Maybe GenericPackageDescription parseGenericPackageDescriptionMaybe =@@ -154,12 +155,12 @@ -- * first we parse fields of PackageDescription -- * then we parse sections (libraries, executables, etc) parseGenericPackageDescription'-    :: Maybe Version+    :: Maybe CabalSpecVersion     -> [LexWarning]     -> Maybe Int     -> [Field Position]     -> ParseResult GenericPackageDescription-parseGenericPackageDescription' cabalVerM lexWarnings utf8WarnPos fs = do+parseGenericPackageDescription' scannedVer lexWarnings utf8WarnPos fs = do     parseWarnings (toPWarnings lexWarnings)     for_ utf8WarnPos $ \pos ->         parseWarning zeroPos PWTUTF $ "UTF8 encoding problem at byte offset " ++ show pos@@ -167,49 +168,53 @@     let (fields, sectionFields) = takeFields fs'      -- cabal-version-    cabalVer <- case cabalVerM of+    specVer <- case scannedVer of         Just v  -> return v         Nothing -> case Map.lookup "cabal-version" fields >>= safeLast of-            Nothing                        -> return version0+            Nothing                        -> return CabalSpecV1_0             Just (MkNamelessField pos fls) -> do-                v <- specVersion' . Newtype.unpack' SpecVersion <$> runFieldParser pos parsec cabalSpecLatest fls-                when (v >= mkVersion [2,1]) $ parseFailure pos $+                -- version will be parsed twice, therefore we parse without warnings.+                v <- withoutWarnings $+                    Newtype.unpack' SpecVersion <$>+                    -- Use version with || and && but before addition of ^>= and removal of -any+                    runFieldParser pos parsec CabalSpecV1_24 fls++                -- if it were at the beginning, scanner would found it+                when (v >= CabalSpecV2_2) $ parseFailure pos $                     "cabal-version should be at the beginning of the file starting with spec version 2.2. " ++                     "See https://github.com/haskell/cabal/issues/4899"                  return v -    specVer <- case cabalSpecFromVersionDigitsMaybe (versionNumbers cabalVer) of-        Just csv -> return csv-        Nothing  -> parseFatalFailure zeroPos $-            "Unsupported cabal-version " ++ prettyShow cabalVer ++ ". See https://github.com/haskell/cabal/issues/4899."--    -- reset cabal version-    setCabalSpecVersion (Just cabalVer)+    -- reset cabal version, it might not be set+    let specVer' = mkVersion (cabalSpecToVersionDigits specVer)+    setCabalSpecVersion (Just specVer')      -- Package description     pd <- parseFieldGrammar specVer fields packageDescriptionFieldGrammar      -- Check that scanned and parsed versions match.-    unless (cabalVer == specVersion pd) $ parseFailure zeroPos $+    unless (specVer == specVersion pd) $ parseFailure zeroPos $         "Scanned and parsed cabal-versions don't match " ++-        prettyShow cabalVer ++ " /= " ++ prettyShow (specVersion pd)+        prettyShow (SpecVersion specVer) ++ " /= " ++ prettyShow (SpecVersion (specVersion pd))      maybeWarnCabalVersion syntax pd      -- Sections-    let gpd = emptyGenericPackageDescription & L.packageDescription .~ pd+    let gpd = emptyGenericPackageDescription+            & L.packageDescription .~ pd     gpd1 <- view stateGpd <$> execStateT (goSections specVer sectionFields) (SectionS gpd Map.empty) -    checkForUndefinedFlags gpd1-    checkForUndefinedCustomSetup gpd1-    gpd1 `deepseq` return gpd1+    let gpd2 = postProcessInternalDeps specVer gpd1+    checkForUndefinedFlags gpd2+    checkForUndefinedCustomSetup gpd2+    gpd2 `deepseq` return gpd2   where     safeLast :: [a] -> Maybe a     safeLast = listToMaybe . reverse -    newSyntaxVersion :: Version-    newSyntaxVersion = mkVersion [1, 2]+    newSyntaxVersion :: CabalSpecVersion+    newSyntaxVersion = CabalSpecV1_2      maybeWarnCabalVersion :: Syntax -> PackageDescription -> ParseResult ()     maybeWarnCabalVersion syntax pkg@@ -222,14 +227,8 @@       | syntax == OldSyntax && specVersion pkg >= newSyntaxVersion       = parseWarning zeroPos PWTOldSyntax $              "A package using 'cabal-version: "-          ++ displaySpecVersion (specVersionRaw pkg)+          ++ prettyShow (SpecVersion (specVersion pkg))           ++ "' must use section syntax. See the Cabal user guide for details."-      where-        displaySpecVersion (Left version)       = prettyShow version-        displaySpecVersion (Right versionRange) =-          case asVersionIntervals versionRange of-            [] {- impossible -}           -> prettyShow versionRange-            ((LowerBound version _, _):_) -> prettyShow (orLaterVersion version)      maybeWarnCabalVersion _ _ = return () @@ -707,10 +706,96 @@     let csv = specVersion pd      when (buildType pd == Custom && isNothing (setupBuildInfo pd)) $-        when (csv >= mkVersion [1,24]) $ parseFailure zeroPos $+        when (csv >= CabalSpecV1_24) $ parseFailure zeroPos $             "Since cabal-version: 1.24 specifying custom-setup section is mandatory"  -------------------------------------------------------------------------------+-- Post processing of internal dependencies+-------------------------------------------------------------------------------++-- Note [Dependencies on sublibraries]+-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+--+-- This is solution to https://github.com/haskell/cabal/issues/6083+--+-- Before 'cabal-version: 3.0' we didn't have a syntax specially+-- for referring to internal libraries. Internal library names+-- shadowed the outside ones.+--+-- Since 'cabal-version: 3.0' we have ability to write+--+--     build-depends: some-package:its-sub-lib >=1.2.3+--+-- This allows us to refer also to local packages by `this-package:sublib`.+-- So since 'cabal-version: 3.4' to refer to *any*+-- sublibrary we must use the two part syntax. Here's small table:+--+--                   | pre-3.4             |      3.4 and after            |+-- ------------------|---------------------|-------------------------------|+-- pkg-name          | may refer to sublib | always refers to external pkg |+-- pkg-name:sublib   | refers to sublib    | refers to sublib              |+-- pkg-name:pkg-name | may refer to sublib | always refers to external pkg |+--+-- In pre-3.4 case, if a package 'this-pkg' has a sublibrary 'pkg-name',+-- all dependency definitions will refer to that sublirary.+--+-- In 3.4 and after case, 'pkg-name' will always refer to external package,+-- and to use internal library you have to say 'this-pkg:pkg-name'.+--+-- In summary, In 3.4 and after, the internal names don't shadow,+-- as there is an explicit syntax to refer to them,+-- i.e. what you write is what you get;+-- For pre-3.4 we post-process the file.+--+-- Similarly, we process mixins.+-- See https://github.com/haskell/cabal/issues/6281+--++postProcessInternalDeps :: CabalSpecVersion -> GenericPackageDescription -> GenericPackageDescription+postProcessInternalDeps specVer gpd+    | specVer >= CabalSpecV3_4 = gpd+    | otherwise                = transformAllBuildInfos transformBI transformSBI gpd+  where+    transformBI :: BuildInfo -> BuildInfo+    transformBI+        = over L.targetBuildDepends (concatMap transformD)+        . over L.mixins (map transformM)++    transformSBI :: SetupBuildInfo -> SetupBuildInfo+    transformSBI = over L.setupDepends (concatMap transformD)++    transformD :: Dependency -> [Dependency]+    transformD (Dependency pn vr ln)+        | uqn `Set.member` internalLibs+        , LMainLibName `NES.member` ln+        = case NES.delete LMainLibName ln of+            Nothing  -> [dep]+            Just ln' -> [dep, Dependency pn vr ln']+      where+        uqn = packageNameToUnqualComponentName pn+        dep = Dependency thisPn vr (NES.singleton (LSubLibName uqn))++    transformD d = [d]++    transformM :: Mixin -> Mixin+    transformM (Mixin pn LMainLibName incl)+        | uqn `Set.member` internalLibs+        = mkMixin thisPn (LSubLibName uqn) incl+      where+        uqn = packageNameToUnqualComponentName pn++    transformM m = m++    thisPn :: PackageName+    thisPn = pkgName (package (packageDescription gpd))++    internalLibs :: Set UnqualComponentName+    internalLibs = Set.fromList+        [ n+        | (n, _) <- condSubLibraries gpd+        ]++------------------------------------------------------------------------------- -- Old syntax ------------------------------------------------------------------------------- @@ -842,6 +927,10 @@         | otherwise            = Nothing     isExecutableField _ = Nothing +-------------------------------------------------------------------------------+-- Scan of spec version+-------------------------------------------------------------------------------+ -- | Quickly scan new-style spec-version -- -- A new-style spec-version declaration begins the .cabal file and@@ -872,7 +961,7 @@     --     -- This is currently more tolerant regarding leading 0 digits.     ---    ver <- simpleParsec (BS8.unpack vers)+    ver <- simpleParsecBS vers     guard $ case versionNumbers ver of               [_,_]   -> True               [_,_,_] -> True
Distribution/PackageDescription/PrettyPrint.hs view
@@ -31,48 +31,41 @@ import Distribution.Compat.Prelude import Prelude () -import Distribution.Types.CondTree-import Distribution.Types.Dependency-import Distribution.Types.ForeignLib          (ForeignLib (foreignLibName))-import Distribution.Types.LibraryName-import Distribution.Types.UnqualComponentName- import Distribution.CabalSpecVersion import Distribution.Fields.Pretty+import Distribution.Compat.Lens import Distribution.PackageDescription import Distribution.Pretty-import Distribution.Simple.Utils-import Distribution.Types.Version (versionNumbers)--import Distribution.FieldGrammar                    (PrettyFieldGrammar', prettyFieldGrammar)+import Distribution.Simple.Utils (writeFileAtomic, writeUTF8File)+import Distribution.Types.Mixin                      (Mixin (..), mkMixin)+import Distribution.FieldGrammar                     (PrettyFieldGrammar', prettyFieldGrammar)+import Distribution.PackageDescription.Configuration (transformAllBuildInfos) import Distribution.PackageDescription.FieldGrammar-       (benchmarkFieldGrammar, buildInfoFieldGrammar, executableFieldGrammar, flagFieldGrammar,-       foreignLibFieldGrammar, libraryFieldGrammar, packageDescriptionFieldGrammar,-       setupBInfoFieldGrammar, sourceRepoFieldGrammar, testSuiteFieldGrammar)+       (benchmarkFieldGrammar, buildInfoFieldGrammar, executableFieldGrammar, flagFieldGrammar, foreignLibFieldGrammar, libraryFieldGrammar,+       packageDescriptionFieldGrammar, setupBInfoFieldGrammar, sourceRepoFieldGrammar, testSuiteFieldGrammar)  import qualified Distribution.PackageDescription.FieldGrammar as FG+import qualified Distribution.Types.BuildInfo.Lens                 as L+import qualified Distribution.Types.SetupBuildInfo.Lens            as L -import Text.PrettyPrint (Doc, char, hsep, parens, text, (<+>))+import Text.PrettyPrint (Doc, char, hsep, parens, text) -import qualified Data.ByteString.Lazy.Char8 as BS.Char8+import qualified Data.ByteString.Lazy.Char8      as BS.Char8+import qualified Distribution.Compat.NonEmptySet as NES  -- | Writes a .cabal file from a generic package description-writeGenericPackageDescription :: FilePath -> GenericPackageDescription -> NoCallStackIO ()+writeGenericPackageDescription :: FilePath -> GenericPackageDescription -> IO () writeGenericPackageDescription fpath pkg = writeUTF8File fpath (showGenericPackageDescription pkg)  -- | Writes a generic package description to a string showGenericPackageDescription :: GenericPackageDescription -> String showGenericPackageDescription gpd = showFields (const []) $ ppGenericPackageDescription v gpd   where-    v :: CabalSpecVersion-    v = cabalSpecFromVersionDigits-      $ versionNumbers-      $ specVersion-      $ packageDescription gpd+    v = specVersion $ packageDescription gpd  -- | Convert a generic package description to 'PrettyField's. ppGenericPackageDescription :: CabalSpecVersion -> GenericPackageDescription -> [PrettyField ()]-ppGenericPackageDescription v gpd = concat+ppGenericPackageDescription v gpd0 = concat     [ ppPackageDescription v (packageDescription gpd)     , ppSetupBInfo v (setupBuildInfo (packageDescription gpd))     , ppGenPackageFlags v (genPackageFlags gpd)@@ -83,7 +76,10 @@     , ppCondTestSuites v (condTestSuites gpd)     , ppCondBenchmarks v (condBenchmarks gpd)     ]+  where+    gpd = preProcessInternalDeps (specVersion (packageDescription gpd0)) gpd0 + ppPackageDescription :: CabalSpecVersion -> PackageDescription -> [PrettyField ()] ppPackageDescription v pd =     prettyFieldGrammar v packageDescriptionFieldGrammar pd@@ -105,11 +101,11 @@     | otherwise = pure $ PrettySection () "custom-setup" [] $         prettyFieldGrammar v (setupBInfoFieldGrammar False) sbi -ppGenPackageFlags :: CabalSpecVersion -> [Flag] -> [PrettyField ()]+ppGenPackageFlags :: CabalSpecVersion -> [PackageFlag] -> [PrettyField ()] ppGenPackageFlags = map . ppFlag -ppFlag :: CabalSpecVersion -> Flag -> PrettyField ()-ppFlag v flag@(MkFlag name _ _ _)  = PrettySection () "flag" [ppFlagName name] $+ppFlag :: CabalSpecVersion -> PackageFlag -> PrettyField ()+ppFlag v flag@(MkPackageFlag name _ _ _)  = PrettySection () "flag" [ppFlagName name] $     prettyFieldGrammar v (flagFieldGrammar name) flag  ppCondTree2 :: CabalSpecVersion -> PrettyFieldGrammar' s -> CondTree ConfVar [Dependency] s -> [PrettyField ()]@@ -181,10 +177,10 @@ ppCondition (CAnd c1 c2)                 = parens (hsep [ppCondition c1, text "&&"                                                          <+> ppCondition c2]) ppConfVar :: ConfVar -> Doc-ppConfVar (OS os)                        = text "os"   <<>> parens (pretty os)-ppConfVar (Arch arch)                    = text "arch" <<>> parens (pretty arch)-ppConfVar (Flag name)                    = text "flag" <<>> parens (ppFlagName name)-ppConfVar (Impl c v)                     = text "impl" <<>> parens (pretty c <+> pretty v)+ppConfVar (OS os)            = text "os"   <<>> parens (pretty os)+ppConfVar (Arch arch)        = text "arch" <<>> parens (pretty arch)+ppConfVar (PackageFlag name) = text "flag" <<>> parens (ppFlagName name)+ppConfVar (Impl c v)         = text "impl" <<>> parens (pretty c <+> pretty v)  ppFlagName :: FlagName -> Doc ppFlagName                               = text . unFlagName@@ -193,7 +189,7 @@ ppIfCondition c = PrettySection () "if" [ppCondition c]  -- | @since 2.0.0.2-writePackageDescription :: FilePath -> PackageDescription -> NoCallStackIO ()+writePackageDescription :: FilePath -> PackageDescription -> IO () writePackageDescription fpath pkg = writeUTF8File fpath (showPackageDescription pkg)  --TODO: make this use section syntax@@ -206,6 +202,7 @@ pdToGpd :: PackageDescription -> GenericPackageDescription pdToGpd pd = GenericPackageDescription     { packageDescription = pd+    , gpdScannedVersion  = Nothing     , genPackageFlags    = []     , condLibrary        = mkCondTree <$> library pd     , condSubLibraries   = mkCondTreeL <$> subLibraries pd@@ -225,8 +222,54 @@         -> a -> (UnqualComponentName, CondTree ConfVar [Dependency] a)     mkCondTree' f x = (f x, CondNode x [] []) +-------------------------------------------------------------------------------+-- Internal libs+-------------------------------------------------------------------------------++-- See Note [Dependencies on sublibraries] in Distribution.PackageDescription.Parsec+--+preProcessInternalDeps :: CabalSpecVersion -> GenericPackageDescription -> GenericPackageDescription+preProcessInternalDeps specVer gpd+    | specVer >= CabalSpecV3_4 = gpd+    | otherwise                = transformAllBuildInfos transformBI transformSBI gpd+  where+    transformBI :: BuildInfo -> BuildInfo+    transformBI+        = over L.targetBuildDepends (concatMap transformD)+        . over L.mixins (map transformM)++    transformSBI :: SetupBuildInfo -> SetupBuildInfo+    transformSBI = over L.setupDepends (concatMap transformD)++    transformD :: Dependency -> [Dependency]+    transformD (Dependency pn vr ln)+        | pn == thisPn+        = if LMainLibName `NES.member` ln+          then Dependency thisPn vr mainLibSet : sublibs+          else sublibs+      where+        sublibs =+            [ Dependency (unqualComponentNameToPackageName uqn) vr mainLibSet+            | LSubLibName uqn <- NES.toList ln+            ]++    transformD d = [d]++    transformM :: Mixin -> Mixin+    transformM (Mixin pn (LSubLibName uqn) inc)+        | pn == thisPn+        = mkMixin (unqualComponentNameToPackageName uqn) LMainLibName inc+    transformM m = m++    thisPn :: PackageName+    thisPn = pkgName (package (packageDescription gpd))++-------------------------------------------------------------------------------+-- HookedBuildInfo+-------------------------------------------------------------------------------+ -- | @since 2.0.0.2-writeHookedBuildInfo :: FilePath -> HookedBuildInfo -> NoCallStackIO ()+writeHookedBuildInfo :: FilePath -> HookedBuildInfo -> IO () writeHookedBuildInfo fpath = writeFileAtomic fpath . BS.Char8.pack                              . showHookedBuildInfo 
Distribution/PackageDescription/Quirks.hs view
@@ -273,7 +273,7 @@     mk a b c d = ((a, b), (c, d))  -- | Helper to create entries in patches-_makePatchKey :: FilePath -> (BS.ByteString -> BS.ByteString) -> NoCallStackIO ()+_makePatchKey :: FilePath -> (BS.ByteString -> BS.ByteString) -> IO () _makePatchKey fp transform = do     contents <- BS.readFile fp     let output = transform contents
Distribution/Parsec.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE BangPatterns        #-} {-# LANGUAGE CPP                 #-} {-# LANGUAGE FlexibleContexts    #-} {-# LANGUAGE GADTs               #-}@@ -9,10 +10,14 @@     runParsecParser,     runParsecParser',     simpleParsec,+    simpleParsecBS,+    simpleParsec',+    simpleParsecW',     lexemeParsec,     eitherParsec,     explicitEitherParsec,-    -- * CabalParsing and and diagnostics+    explicitEitherParsec',+    -- * CabalParsing and diagnostics     CabalParsing (..),     -- ** Warnings     PWarnType (..),@@ -34,25 +39,29 @@     parsecQuoted,     parsecMaybeQuoted,     parsecCommaList,+    parsecCommaNonEmpty,     parsecLeadingCommaList,+    parsecLeadingCommaNonEmpty,     parsecOptCommaList,     parsecLeadingOptCommaList,     parsecStandard,     parsecUnqualComponentName,     ) where +import Data.ByteString                     (ByteString) import Data.Char                           (digitToInt, intToDigit) import Data.List                           (transpose) import Distribution.CabalSpecVersion import Distribution.Compat.Prelude import Distribution.Parsec.Error           (PError (..), showPError)-import Distribution.Parsec.FieldLineStream (FieldLineStream, fieldLineStreamFromString)+import Distribution.Parsec.FieldLineStream (FieldLineStream, fieldLineStreamFromBS, fieldLineStreamFromString) import Distribution.Parsec.Position        (Position (..), incPos, retPos, showPos, zeroPos) import Distribution.Parsec.Warning         (PWarnType (..), PWarning (..), showPWarning) import Numeric                             (showIntAtBase) import Prelude ()  import qualified Distribution.Compat.CharParsing as P+import qualified Distribution.Compat.DList       as DList import qualified Distribution.Compat.MonadFail   as Fail import qualified Text.Parsec                     as Parsec @@ -171,6 +180,32 @@     . runParsecParser lexemeParsec "<simpleParsec>"     . fieldLineStreamFromString +-- | Like 'simpleParsec' but for 'ByteString'+simpleParsecBS :: Parsec a => ByteString -> Maybe a+simpleParsecBS+    = either (const Nothing) Just+    . runParsecParser lexemeParsec "<simpleParsec>"+    . fieldLineStreamFromBS++-- | Parse a 'String' with 'lexemeParsec' using specific 'CabalSpecVersion'.+--+-- @since 3.4.0.0+simpleParsec' :: Parsec a => CabalSpecVersion -> String -> Maybe a+simpleParsec' spec+    = either (const Nothing) Just+    . runParsecParser' spec lexemeParsec "<simpleParsec>"+    . fieldLineStreamFromString++-- | Parse a 'String' with 'lexemeParsec' using specific 'CabalSpecVersion'.+-- Fail if there are any warnings.+--+-- @since 3.4.0.0+simpleParsecW' :: Parsec a => CabalSpecVersion -> String -> Maybe a+simpleParsecW' spec+    = either (const Nothing) (\(x, ws) -> if null ws then Just x else Nothing)+    . runParsecParser' spec ((,) <$> lexemeParsec <*> liftParsec Parsec.getState) "<simpleParsec>"+    . fieldLineStreamFromString+ -- | Parse a 'String' with 'lexemeParsec'. eitherParsec :: Parsec a => String -> Either String a eitherParsec = explicitEitherParsec parsec@@ -182,6 +217,17 @@     . runParsecParser (parser <* P.spaces) "<eitherParsec>"     . fieldLineStreamFromString +-- | Parse a 'String' with given 'ParsecParser' and 'CabalSpecVersion'. Trailing whitespace is accepted.+-- See 'explicitEitherParsec'.+--+-- @since 3.4.0.0+--+explicitEitherParsec' :: CabalSpecVersion -> ParsecParser a -> String -> Either String a+explicitEitherParsec' spec parser+    = either (Left . show) Right+    . runParsecParser' spec (parser <* P.spaces) "<eitherParsec>"+    . fieldLineStreamFromString+ -- | Run 'ParsecParser' with 'cabalSpecLatest'. runParsecParser :: ParsecParser a -> FilePath -> FieldLineStream -> Either Parsec.ParseError a runParsecParser = runParsecParser' cabalSpecLatest@@ -248,6 +294,9 @@ parsecCommaList :: CabalParsing m => m a -> m [a] parsecCommaList p = P.sepBy (p <* P.spaces) (P.char ',' *> P.spaces P.<?> "comma") +parsecCommaNonEmpty :: CabalParsing m => m a -> m (NonEmpty a)+parsecCommaNonEmpty p = P.sepByNonEmpty (p <* P.spaces) (P.char ',' *> P.spaces P.<?> "comma")+ -- | Like 'parsecCommaList' but accept leading or trailing comma. -- -- @@@ -265,6 +314,19 @@     lp = p <* P.spaces     comma = P.char ',' *> P.spaces P.<?> "comma" +-- |+--+-- @since 3.4.0.0+parsecLeadingCommaNonEmpty :: CabalParsing m => m a -> m (NonEmpty a)+parsecLeadingCommaNonEmpty p = do+    c <- P.optional comma+    case c of+        Nothing -> P.sepEndByNonEmpty lp comma+        Just _  -> P.sepByNonEmpty lp comma+  where+    lp = p <* P.spaces+    comma = P.char ',' *> P.spaces P.<?> "comma"+ parsecOptCommaList :: CabalParsing m => m a -> m [a] parsecOptCommaList p = P.sepBy (p <* P.spaces) (P.optional comma)   where@@ -309,15 +371,65 @@ parsecMaybeQuoted :: CabalParsing m => m a -> m a parsecMaybeQuoted p = parsecQuoted p <|> p -parsecUnqualComponentName :: CabalParsing m => m String-parsecUnqualComponentName = intercalate "-" <$> toList <$> P.sepByNonEmpty component (P.char '-')-  where-    component :: CabalParsing m => m String-    component = do-      cs <- P.munch1 isAlphaNum-      if all isDigit cs-        then fail "all digits in portion of unqualified component name"-        else return cs+parsecUnqualComponentName :: forall m. CabalParsing m => m String+parsecUnqualComponentName = state0 DList.empty where+    --+    -- using @kleene@ package we can easily see that+    -- we need only two states to recognize+    -- unqual-component-name+    --+    -- Compare with declarative+    -- 'Distribution.FieldGrammar.Described.reUnqualComponent'.+    --+    -- @+    -- import Kleene+    -- import Kleene.Internal.Pretty+    -- import Algebra.Lattice+    -- import Data.Char+    --+    -- import qualified Data.RangeSet.Map as RSet+    --+    -- main = do+    --     -- this is an approximation, to get an idea.+    --     let component :: RE Char+    --         component = star alphaNum <> alpha <> star alphaNum+    --+    --         alphaNum = alpha \/ num+    --         alpha    = unions $ map char ['a'..'z']+    --         num      = unions $ map char ['0'..'9']+    --+    --         re :: RE Char+    --         re = component <> star (char '-' <> component)+    --+    --     putPretty re+    --     putPretty $ fromTM re+    -- @++    state0 :: DList.DList Char -> m String+    state0 acc = do+        c <- ch -- <|> fail ("Invalid component, after " ++ DList.toList acc)+        case () of+            _ | isDigit c    -> state0 (DList.snoc acc c)+              | isAlphaNum c -> state1 (DList.snoc acc c)+              | c == '-'     -> fail ("Empty component, after " ++ DList.toList acc)+              | otherwise    -> fail ("Internal error, after " ++ DList.toList acc)++    state1 :: DList.DList Char -> m String+    state1 acc = state1' acc `alt` return (DList.toList acc)++    state1' :: DList.DList Char -> m String+    state1' acc = do+        c <- ch+        case () of+            _ | isAlphaNum c -> state1 (DList.snoc acc c)+              | c == '-'     -> state0 (DList.snoc acc c)+              | otherwise    -> fail ("Internal error, after " ++ DList.toList acc)++    ch :: m Char+    !ch = P.satisfy (\c -> isAlphaNum c || c == '-')++    alt :: m String -> m String -> m String+    !alt = (<|>)  stringLiteral :: forall m. P.CharParsing m => m String stringLiteral = lit where
− Distribution/Parsec/Newtypes.hs
@@ -1,269 +0,0 @@-{-# LANGUAGE FlexibleContexts       #-}-{-# LANGUAGE FlexibleInstances      #-}-{-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE RankNTypes             #-}-{-# LANGUAGE ScopedTypeVariables    #-}-{-# LANGUAGE TypeSynonymInstances   #-}--- | This module provides @newtype@ wrappers to be used with "Distribution.FieldGrammar".-module Distribution.Parsec.Newtypes (-    -- * List-    alaList,-    alaList',-    -- ** Modifiers-    CommaVCat (..),-    CommaFSep (..),-    VCat (..),-    FSep (..),-    NoCommaFSep (..),-    Sep (..),-    -- ** Type-    List,-    -- * Set-    alaSet,-    alaSet',-    Set',-    -- * Version & License-    SpecVersion (..),-    TestedWith (..),-    SpecLicense (..),-    -- * Identifiers-    Token (..),-    Token' (..),-    MQuoted (..),-    FilePathNT (..),-    ) where--import Distribution.Compat.Newtype-import Distribution.Compat.Prelude-import Prelude ()--import Distribution.CabalSpecVersion-import Distribution.Compiler         (CompilerFlavor)-import Distribution.License          (License)-import Distribution.Parsec-import Distribution.Pretty-import Distribution.Version          (LowerBound (..), Version, VersionRange, anyVersion, asVersionIntervals, mkVersion)-import Text.PrettyPrint              (Doc, comma, fsep, punctuate, vcat, (<+>))--import qualified Data.Set                        as Set-import qualified Distribution.Compat.CharParsing as P-import qualified Distribution.SPDX               as SPDX---- | Vertical list with commas. Displayed with 'vcat'-data CommaVCat = CommaVCat---- | Paragraph fill list with commas. Displayed with 'fsep'-data CommaFSep = CommaFSep---- | Vertical list with optional commas. Displayed with 'vcat'.-data VCat = VCat---- | Paragraph fill list with optional commas. Displayed with 'fsep'.-data FSep = FSep---- | Paragraph fill list without commas. Displayed with 'fsep'.-data NoCommaFSep = NoCommaFSep--class    Sep sep  where-    prettySep :: Proxy sep -> [Doc] -> Doc--    parseSep :: CabalParsing m => Proxy sep -> m a -> m [a]--instance Sep CommaVCat where-    prettySep  _ = vcat . punctuate comma-    parseSep   _ p = do-        v <- askCabalSpecVersion-        if v >= CabalSpecV2_2 then parsecLeadingCommaList p else parsecCommaList p-instance Sep CommaFSep where-    prettySep _ = fsep . punctuate comma-    parseSep   _ p = do-        v <- askCabalSpecVersion-        if v >= CabalSpecV2_2 then parsecLeadingCommaList p else parsecCommaList p-instance Sep VCat where-    prettySep _  = vcat-    parseSep   _ p = do-        v <- askCabalSpecVersion-        if v >= CabalSpecV3_0 then parsecLeadingOptCommaList p else parsecOptCommaList p-instance Sep FSep where-    prettySep _  = fsep-    parseSep   _ p = do-        v <- askCabalSpecVersion-        if v >= CabalSpecV3_0 then parsecLeadingOptCommaList p else parsecOptCommaList p-instance Sep NoCommaFSep where-    prettySep _   = fsep-    parseSep  _ p = many (p <* P.spaces)---- | List separated with optional commas. Displayed with @sep@, arguments of--- type @a@ are parsed and pretty-printed as @b@.-newtype List sep b a = List { _getList :: [a] }---- | 'alaList' and 'alaList'' are simply 'List', with additional phantom--- arguments to constraint the resulting type------ >>> :t alaList VCat--- alaList VCat :: [a] -> List VCat (Identity a) a------ >>> :t alaList' FSep Token--- alaList' FSep Token :: [String] -> List FSep Token String----alaList :: sep -> [a] -> List sep (Identity a) a-alaList _ = List---- | More general version of 'alaList'.-alaList' :: sep -> (a -> b) -> [a] -> List sep b a-alaList' _ _ = List--instance Newtype [a] (List sep wrapper a)--instance (Newtype a b, Sep sep, Parsec b) => Parsec (List sep b a) where-    parsec   = pack . map (unpack :: b -> a) <$> parseSep (Proxy :: Proxy sep) parsec--instance (Newtype a b, Sep sep, Pretty b) => Pretty (List sep b a) where-    pretty = prettySep (Proxy :: Proxy sep) . map (pretty . (pack :: a -> b)) . unpack---- | Like 'List', but for 'Set'.------ @since 3.2.0.0-newtype Set' sep b a = Set' { _getSet :: Set a }---- | 'alaSet' and 'alaSet'' are simply 'Set'' constructor, with additional phantom--- arguments to constraint the resulting type------ >>> :t alaSet VCat--- alaSet VCat :: Set a -> Set' VCat (Identity a) a------ >>> :t alaSet' FSep Token--- alaSet' FSep Token :: Set String -> Set' FSep Token String------ >>> unpack' (alaSet' FSep Token) <$> eitherParsec "foo bar foo"--- Right (fromList ["bar","foo"])------ @since 3.2.0.0-alaSet :: sep -> Set a -> Set' sep (Identity a) a-alaSet _ = Set'---- | More general version of 'alaSet'.------ @since 3.2.0.0-alaSet' :: sep -> (a -> b) -> Set a -> Set' sep b a-alaSet' _ _ = Set'--instance Newtype (Set a) (Set' sep wrapper a)--instance (Newtype a b, Ord a, Sep sep, Parsec b) => Parsec (Set' sep b a) where-    parsec   = pack . Set.fromList . map (unpack :: b -> a) <$> parseSep (Proxy :: Proxy sep) parsec--instance (Newtype a b, Sep sep, Pretty b) => Pretty (Set' sep b a) where-    pretty = prettySep (Proxy :: Proxy sep) . map (pretty . (pack :: a -> b)) . Set.toList . unpack---- | Haskell string or @[^ ,]+@-newtype Token = Token { getToken :: String }--instance Newtype String Token--instance Parsec Token where-    parsec = pack <$> parsecToken--instance Pretty Token where-    pretty = showToken . unpack---- | Haskell string or @[^ ]+@-newtype Token' = Token' { getToken' :: String }--instance Newtype String Token'--instance Parsec Token' where-    parsec = pack <$> parsecToken'--instance Pretty Token' where-    pretty = showToken . unpack---- | Either @"quoted"@ or @un-quoted@.-newtype MQuoted a = MQuoted { getMQuoted :: a }--instance Newtype a (MQuoted a)--instance Parsec a => Parsec (MQuoted a) where-    parsec = pack <$> parsecMaybeQuoted parsec--instance Pretty a => Pretty (MQuoted a)  where-    pretty = pretty . unpack---- | Version range or just version, i.e. @cabal-version@ field.------ There are few things to consider:------ * Starting with 2.2 the cabal-version field should be the first field in the---   file and only exact version is accepted. Therefore if we get e.g.---   @>= 2.2@, we fail.---   See <https://github.com/haskell/cabal/issues/4899>----newtype SpecVersion = SpecVersion { getSpecVersion :: Either Version VersionRange }--instance Newtype (Either Version VersionRange) SpecVersion--instance Parsec SpecVersion where-    parsec = pack <$> parsecSpecVersion-      where-        parsecSpecVersion = Left <$> parsec <|> Right <$> range-        range = do-            vr <- parsec-            if specVersionFromRange vr >= mkVersion [2,1]-            then fail "cabal-version higher than 2.2 cannot be specified as a range. See https://github.com/haskell/cabal/issues/4899"-            else return vr--instance Pretty SpecVersion where-    pretty = either pretty pretty . unpack--specVersionFromRange :: VersionRange -> Version-specVersionFromRange versionRange = case asVersionIntervals versionRange of-    []                            -> mkVersion [0]-    ((LowerBound version _, _):_) -> version---- | SPDX License expression or legacy license-newtype SpecLicense = SpecLicense { getSpecLicense :: Either SPDX.License License }--instance Newtype (Either SPDX.License License) SpecLicense--instance Parsec SpecLicense where-    parsec = do-        v <- askCabalSpecVersion-        if v >= CabalSpecV2_2-        then SpecLicense . Left <$> parsec-        else SpecLicense . Right <$> parsec--instance Pretty SpecLicense where-    pretty = either pretty pretty . unpack---- | Version range or just version-newtype TestedWith = TestedWith { getTestedWith :: (CompilerFlavor, VersionRange) }--instance Newtype (CompilerFlavor, VersionRange) TestedWith--instance Parsec TestedWith where-    parsec = pack <$> parsecTestedWith--instance Pretty TestedWith where-    pretty x = case unpack x of-        (compiler, vr) -> pretty compiler <+> pretty vr---- | Filepath are parsed as 'Token'.-newtype FilePathNT = FilePathNT { getFilePathNT :: String }--instance Newtype String FilePathNT--instance Parsec FilePathNT where-    parsec = pack <$> parsecToken--instance Pretty FilePathNT where-    pretty = showFilePath . unpack------------------------------------------------------------------------------------ Internal----------------------------------------------------------------------------------parsecTestedWith :: CabalParsing m => m (CompilerFlavor, VersionRange)-parsecTestedWith = do-    name <- lexemeParsec-    ver  <- parsec <|> pure anyVersion-    return (name, ver)
Distribution/Parsec/Warning.hs view
@@ -35,6 +35,13 @@     | PWTDoubleDash            -- ^ Double dash token, most likely it's a mistake - it's not a comment     | PWTMultipleSingularField -- ^ e.g. name or version should be specified only once.     | PWTBuildTypeDefault      -- ^ Workaround for derive-package having build-type: Default. See <https://github.com/haskell/cabal/issues/5020>.++    | PWTVersionOperator       -- ^ Version operators used (without cabal-version: 1.8)+    | PWTVersionWildcard       -- ^ Version wildcard used (without cabal-version: 1.6)++    | PWTSpecVersion           -- ^ Warnings about cabal-version format.++    | PWTExperimental          -- ^ Experimental feature     deriving (Eq, Ord, Show, Enum, Bounded, Generic)  instance Binary PWarnType
Distribution/Pretty.hs view
@@ -24,6 +24,10 @@     prettyVersioned :: CabalSpecVersion -> a -> PP.Doc     prettyVersioned _ = pretty +-- | @since 3.4.0.0+instance Pretty PP.Doc where+    pretty = id+ instance Pretty Bool where     pretty = PP.text . show 
Distribution/SPDX/LicenseExceptionId.hs view
@@ -47,25 +47,30 @@     | GCC_exception_2_0 -- ^ @GCC-exception-2.0@, GCC Runtime Library exception 2.0     | GCC_exception_3_1 -- ^ @GCC-exception-3.1@, GCC Runtime Library exception 3.1     | Gnu_javamail_exception -- ^ @gnu-javamail-exception@, GNU JavaMail exception-    | GPL_CC_1_0 -- ^ @GPL-CC-1.0@, GPL Cooperation Commitment 1.0, SPDX License List 3.6+    | GPL_3_0_linking_exception -- ^ @GPL-3.0-linking-exception@, GPL-3.0 Linking Exception, SPDX License List 3.9+    | GPL_3_0_linking_source_exception -- ^ @GPL-3.0-linking-source-exception@, GPL-3.0 Linking Exception (with Corresponding Source), SPDX License List 3.9+    | GPL_CC_1_0 -- ^ @GPL-CC-1.0@, GPL Cooperation Commitment 1.0, SPDX License List 3.6, SPDX License List 3.9     | I2p_gpl_java_exception -- ^ @i2p-gpl-java-exception@, i2p GPL+Java Exception+    | LGPL_3_0_linking_exception -- ^ @LGPL-3.0-linking-exception@, LGPL-3.0 Linking Exception, SPDX License List 3.9     | Libtool_exception -- ^ @Libtool-exception@, Libtool Exception     | Linux_syscall_note -- ^ @Linux-syscall-note@, Linux Syscall Note-    | LLVM_exception -- ^ @LLVM-exception@, LLVM Exception, SPDX License List 3.2, SPDX License List 3.6+    | LLVM_exception -- ^ @LLVM-exception@, LLVM Exception, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9     | LZMA_exception -- ^ @LZMA-exception@, LZMA exception     | Mif_exception -- ^ @mif-exception@, Macros and Inline Functions Exception     | Nokia_Qt_exception_1_1 -- ^ @Nokia-Qt-exception-1.1@, Nokia Qt LGPL exception 1.1, SPDX License List 3.0, SPDX License List 3.2-    | OCaml_LGPL_linking_exception -- ^ @OCaml-LGPL-linking-exception@, OCaml LGPL Linking Exception, SPDX License List 3.6+    | OCaml_LGPL_linking_exception -- ^ @OCaml-LGPL-linking-exception@, OCaml LGPL Linking Exception, SPDX License List 3.6, SPDX License List 3.9     | OCCT_exception_1_0 -- ^ @OCCT-exception-1.0@, Open CASCADE Exception 1.0-    | OpenJDK_assembly_exception_1_0 -- ^ @OpenJDK-assembly-exception-1.0@, OpenJDK Assembly exception 1.0, SPDX License List 3.2, SPDX License List 3.6+    | OpenJDK_assembly_exception_1_0 -- ^ @OpenJDK-assembly-exception-1.0@, OpenJDK Assembly exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9     | Openvpn_openssl_exception -- ^ @openvpn-openssl-exception@, OpenVPN OpenSSL Exception-    | PS_or_PDF_font_exception_20170817 -- ^ @PS-or-PDF-font-exception-20170817@, PS/PDF font exception (2017-08-17), SPDX License List 3.2, SPDX License List 3.6-    | Qt_GPL_exception_1_0 -- ^ @Qt-GPL-exception-1.0@, Qt GPL exception 1.0, SPDX License List 3.2, SPDX License List 3.6-    | Qt_LGPL_exception_1_1 -- ^ @Qt-LGPL-exception-1.1@, Qt LGPL exception 1.1, SPDX License List 3.2, SPDX License List 3.6+    | PS_or_PDF_font_exception_20170817 -- ^ @PS-or-PDF-font-exception-20170817@, PS/PDF font exception (2017-08-17), SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9+    | Qt_GPL_exception_1_0 -- ^ @Qt-GPL-exception-1.0@, Qt GPL exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9+    | Qt_LGPL_exception_1_1 -- ^ @Qt-LGPL-exception-1.1@, Qt LGPL exception 1.1, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9     | Qwt_exception_1_0 -- ^ @Qwt-exception-1.0@, Qwt exception 1.0-    | Swift_exception -- ^ @Swift-exception@, Swift Exception, SPDX License List 3.6+    | SHL_2_0 -- ^ @SHL-2.0@, Solderpad Hardware License v2.0, SPDX License List 3.9+    | SHL_2_1 -- ^ @SHL-2.1@, Solderpad Hardware License v2.1, SPDX License List 3.9+    | Swift_exception -- ^ @Swift-exception@, Swift Exception, SPDX License List 3.6, SPDX License List 3.9     | U_boot_exception_2_0 -- ^ @u-boot-exception-2.0@, U-Boot exception 2.0-    | Universal_FOSS_exception_1_0 -- ^ @Universal-FOSS-exception-1.0@, Universal FOSS Exception, Version 1.0, SPDX License List 3.6+    | Universal_FOSS_exception_1_0 -- ^ @Universal-FOSS-exception-1.0@, Universal FOSS Exception, Version 1.0, SPDX License List 3.6, SPDX License List 3.9     | WxWindows_exception_3_1 -- ^ @WxWindows-exception-3.1@, WxWindows Library Exception 3.1   deriving (Eq, Ord, Enum, Bounded, Show, Read, Typeable, Data, Generic) @@ -116,8 +121,11 @@ licenseExceptionId GCC_exception_2_0 = "GCC-exception-2.0" licenseExceptionId GCC_exception_3_1 = "GCC-exception-3.1" licenseExceptionId Gnu_javamail_exception = "gnu-javamail-exception"+licenseExceptionId GPL_3_0_linking_exception = "GPL-3.0-linking-exception"+licenseExceptionId GPL_3_0_linking_source_exception = "GPL-3.0-linking-source-exception" licenseExceptionId GPL_CC_1_0 = "GPL-CC-1.0" licenseExceptionId I2p_gpl_java_exception = "i2p-gpl-java-exception"+licenseExceptionId LGPL_3_0_linking_exception = "LGPL-3.0-linking-exception" licenseExceptionId Libtool_exception = "Libtool-exception" licenseExceptionId Linux_syscall_note = "Linux-syscall-note" licenseExceptionId LLVM_exception = "LLVM-exception"@@ -132,6 +140,8 @@ licenseExceptionId Qt_GPL_exception_1_0 = "Qt-GPL-exception-1.0" licenseExceptionId Qt_LGPL_exception_1_1 = "Qt-LGPL-exception-1.1" licenseExceptionId Qwt_exception_1_0 = "Qwt-exception-1.0"+licenseExceptionId SHL_2_0 = "SHL-2.0"+licenseExceptionId SHL_2_1 = "SHL-2.1" licenseExceptionId Swift_exception = "Swift-exception" licenseExceptionId U_boot_exception_2_0 = "u-boot-exception-2.0" licenseExceptionId Universal_FOSS_exception_1_0 = "Universal-FOSS-exception-1.0"@@ -155,8 +165,11 @@ licenseExceptionName GCC_exception_2_0 = "GCC Runtime Library exception 2.0" licenseExceptionName GCC_exception_3_1 = "GCC Runtime Library exception 3.1" licenseExceptionName Gnu_javamail_exception = "GNU JavaMail exception"+licenseExceptionName GPL_3_0_linking_exception = "GPL-3.0 Linking Exception"+licenseExceptionName GPL_3_0_linking_source_exception = "GPL-3.0 Linking Exception (with Corresponding Source)" licenseExceptionName GPL_CC_1_0 = "GPL Cooperation Commitment 1.0" licenseExceptionName I2p_gpl_java_exception = "i2p GPL+Java Exception"+licenseExceptionName LGPL_3_0_linking_exception = "LGPL-3.0 Linking Exception" licenseExceptionName Libtool_exception = "Libtool Exception" licenseExceptionName Linux_syscall_note = "Linux Syscall Note" licenseExceptionName LLVM_exception = "LLVM Exception"@@ -171,6 +184,8 @@ licenseExceptionName Qt_GPL_exception_1_0 = "Qt GPL exception 1.0" licenseExceptionName Qt_LGPL_exception_1_1 = "Qt LGPL exception 1.1" licenseExceptionName Qwt_exception_1_0 = "Qwt exception 1.0"+licenseExceptionName SHL_2_0 = "Solderpad Hardware License v2.0"+licenseExceptionName SHL_2_1 = "Solderpad Hardware License v2.1" licenseExceptionName Swift_exception = "Swift Exception" licenseExceptionName U_boot_exception_2_0 = "U-Boot exception 2.0" licenseExceptionName Universal_FOSS_exception_1_0 = "Universal FOSS Exception, Version 1.0"@@ -206,12 +221,30 @@     , Universal_FOSS_exception_1_0     ]     ++ bulkOfLicenses+licenseExceptionIdList LicenseListVersion_3_9 =+    [ GPL_3_0_linking_exception+    , GPL_3_0_linking_source_exception+    , GPL_CC_1_0+    , LGPL_3_0_linking_exception+    , LLVM_exception+    , OCaml_LGPL_linking_exception+    , OpenJDK_assembly_exception_1_0+    , PS_or_PDF_font_exception_20170817+    , Qt_GPL_exception_1_0+    , Qt_LGPL_exception_1_1+    , SHL_2_0+    , SHL_2_1+    , Swift_exception+    , Universal_FOSS_exception_1_0+    ]+    ++ bulkOfLicenses  -- | Create a 'LicenseExceptionId' from a 'String'. mkLicenseExceptionId :: LicenseListVersion -> String -> Maybe LicenseExceptionId mkLicenseExceptionId LicenseListVersion_3_0 s = Map.lookup s stringLookup_3_0 mkLicenseExceptionId LicenseListVersion_3_2 s = Map.lookup s stringLookup_3_2 mkLicenseExceptionId LicenseListVersion_3_6 s = Map.lookup s stringLookup_3_6+mkLicenseExceptionId LicenseListVersion_3_9 s = Map.lookup s stringLookup_3_9  stringLookup_3_0 :: Map String LicenseExceptionId stringLookup_3_0 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $@@ -224,6 +257,10 @@ stringLookup_3_6 :: Map String LicenseExceptionId stringLookup_3_6 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $     licenseExceptionIdList LicenseListVersion_3_6++stringLookup_3_9 :: Map String LicenseExceptionId+stringLookup_3_9 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $+    licenseExceptionIdList LicenseListVersion_3_9  --  | License exceptions in all SPDX License lists bulkOfLicenses :: [LicenseExceptionId]
Distribution/SPDX/LicenseExpression.hs view
@@ -16,7 +16,6 @@ import Distribution.SPDX.LicenseListVersion import Distribution.SPDX.LicenseReference import Distribution.Utils.Generic           (isAsciiAlphaNum)-import Text.PrettyPrint                     ((<+>))  import qualified Distribution.Compat.CharParsing as P import qualified Text.PrettyPrint                as Disp
Distribution/SPDX/LicenseId.hs view
@@ -6,6 +6,7 @@     licenseId,     licenseName,     licenseIsOsiApproved,+    licenseIsFsfLibre,     mkLicenseId,     licenseIdList,     -- * Helpers@@ -47,8 +48,8 @@     | AFL_3_0 -- ^ @AFL-3.0@, Academic Free License v3.0     | Afmparse -- ^ @Afmparse@, Afmparse License     | AGPL_1_0 -- ^ @AGPL-1.0@, Affero General Public License v1.0, SPDX License List 3.0-    | AGPL_1_0_only -- ^ @AGPL-1.0-only@, Affero General Public License v1.0 only, SPDX License List 3.2, SPDX License List 3.6-    | AGPL_1_0_or_later -- ^ @AGPL-1.0-or-later@, Affero General Public License v1.0 or later, SPDX License List 3.2, SPDX License List 3.6+    | AGPL_1_0_only -- ^ @AGPL-1.0-only@, Affero General Public License v1.0 only, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9+    | AGPL_1_0_or_later -- ^ @AGPL-1.0-or-later@, Affero General Public License v1.0 or later, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9     | AGPL_3_0_only -- ^ @AGPL-3.0-only@, GNU Affero General Public License v3.0 only     | AGPL_3_0_or_later -- ^ @AGPL-3.0-or-later@, GNU Affero General Public License v3.0 or later     | Aladdin -- ^ @Aladdin@, Aladdin Free Public License@@ -74,12 +75,12 @@     | Beerware -- ^ @Beerware@, Beerware License     | BitTorrent_1_0 -- ^ @BitTorrent-1.0@, BitTorrent Open Source License v1.0     | BitTorrent_1_1 -- ^ @BitTorrent-1.1@, BitTorrent Open Source License v1.1-    | Blessing -- ^ @blessing@, SQLite Blessing, SPDX License List 3.6-    | BlueOak_1_0_0 -- ^ @BlueOak-1.0.0@, Blue Oak Model License 1.0.0, SPDX License List 3.6+    | Blessing -- ^ @blessing@, SQLite Blessing, SPDX License List 3.6, SPDX License List 3.9+    | BlueOak_1_0_0 -- ^ @BlueOak-1.0.0@, Blue Oak Model License 1.0.0, SPDX License List 3.6, SPDX License List 3.9     | Borceux -- ^ @Borceux@, Borceux license     | BSD_1_Clause -- ^ @BSD-1-Clause@, BSD 1-Clause License     | BSD_2_Clause_FreeBSD -- ^ @BSD-2-Clause-FreeBSD@, BSD 2-Clause FreeBSD License-    | BSD_2_Clause_NetBSD -- ^ @BSD-2-Clause-NetBSD@, BSD 2-Clause NetBSD License+    | BSD_2_Clause_NetBSD -- ^ @BSD-2-Clause-NetBSD@, BSD 2-Clause NetBSD License, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6     | BSD_2_Clause_Patent -- ^ @BSD-2-Clause-Patent@, BSD-2-Clause Plus Patent License     | BSD_2_Clause -- ^ @BSD-2-Clause@, BSD 2-Clause "Simplified" License     | BSD_3_Clause_Attribution -- ^ @BSD-3-Clause-Attribution@, BSD with attribution@@ -88,7 +89,7 @@     | BSD_3_Clause_No_Nuclear_License_2014 -- ^ @BSD-3-Clause-No-Nuclear-License-2014@, BSD 3-Clause No Nuclear License 2014     | BSD_3_Clause_No_Nuclear_License -- ^ @BSD-3-Clause-No-Nuclear-License@, BSD 3-Clause No Nuclear License     | BSD_3_Clause_No_Nuclear_Warranty -- ^ @BSD-3-Clause-No-Nuclear-Warranty@, BSD 3-Clause No Nuclear Warranty-    | BSD_3_Clause_Open_MPI -- ^ @BSD-3-Clause-Open-MPI@, BSD 3-Clause Open MPI variant, SPDX License List 3.6+    | BSD_3_Clause_Open_MPI -- ^ @BSD-3-Clause-Open-MPI@, BSD 3-Clause Open MPI variant, SPDX License List 3.6, SPDX License List 3.9     | BSD_3_Clause -- ^ @BSD-3-Clause@, BSD 3-Clause "New" or "Revised" License     | BSD_4_Clause_UC -- ^ @BSD-4-Clause-UC@, BSD-4-Clause (University of California-Specific)     | BSD_4_Clause -- ^ @BSD-4-Clause@, BSD 4-Clause "Original" or "Old" License@@ -97,6 +98,8 @@     | BSL_1_0 -- ^ @BSL-1.0@, Boost Software License 1.0     | Bzip2_1_0_5 -- ^ @bzip2-1.0.5@, bzip2 and libbzip2 License v1.0.5     | Bzip2_1_0_6 -- ^ @bzip2-1.0.6@, bzip2 and libbzip2 License v1.0.6+    | CAL_1_0_Combined_Work_Exception -- ^ @CAL-1.0-Combined-Work-Exception@, Cryptographic Autonomy License 1.0 (Combined Work Exception), SPDX License List 3.9+    | CAL_1_0 -- ^ @CAL-1.0@, Cryptographic Autonomy License 1.0, SPDX License List 3.9     | Caldera -- ^ @Caldera@, Caldera License     | CATOSL_1_1 -- ^ @CATOSL-1.1@, Computer Associates Trusted Open Source License 1.1     | CC_BY_1_0 -- ^ @CC-BY-1.0@, Creative Commons Attribution 1.0 Generic@@ -129,7 +132,7 @@     | CC_BY_SA_2_5 -- ^ @CC-BY-SA-2.5@, Creative Commons Attribution Share Alike 2.5 Generic     | CC_BY_SA_3_0 -- ^ @CC-BY-SA-3.0@, Creative Commons Attribution Share Alike 3.0 Unported     | CC_BY_SA_4_0 -- ^ @CC-BY-SA-4.0@, Creative Commons Attribution Share Alike 4.0 International-    | CC_PDDC -- ^ @CC-PDDC@, Creative Commons Public Domain Dedication and Certification, SPDX License List 3.6+    | CC_PDDC -- ^ @CC-PDDC@, Creative Commons Public Domain Dedication and Certification, SPDX License List 3.6, SPDX License List 3.9     | CC0_1_0 -- ^ @CC0-1.0@, Creative Commons Zero v1.0 Universal     | CDDL_1_0 -- ^ @CDDL-1.0@, Common Development and Distribution License 1.0     | CDDL_1_1 -- ^ @CDDL-1.1@, Common Development and Distribution License 1.1@@ -141,15 +144,18 @@     | CECILL_2_1 -- ^ @CECILL-2.1@, CeCILL Free Software License Agreement v2.1     | CECILL_B -- ^ @CECILL-B@, CeCILL-B Free Software License Agreement     | CECILL_C -- ^ @CECILL-C@, CeCILL-C Free Software License Agreement-    | CERN_OHL_1_1 -- ^ @CERN-OHL-1.1@, CERN Open Hardware License v1.1, SPDX License List 3.6-    | CERN_OHL_1_2 -- ^ @CERN-OHL-1.2@, CERN Open Hardware Licence v1.2, SPDX License List 3.6+    | CERN_OHL_1_1 -- ^ @CERN-OHL-1.1@, CERN Open Hardware Licence v1.1, SPDX License List 3.6, SPDX License List 3.9+    | CERN_OHL_1_2 -- ^ @CERN-OHL-1.2@, CERN Open Hardware Licence v1.2, SPDX License List 3.6, SPDX License List 3.9+    | CERN_OHL_P_2_0 -- ^ @CERN-OHL-P-2.0@, CERN Open Hardware Licence Version 2 - Permissive, SPDX License List 3.9+    | CERN_OHL_S_2_0 -- ^ @CERN-OHL-S-2.0@, CERN Open Hardware Licence Version 2 - Strongly Reciprocal, SPDX License List 3.9+    | CERN_OHL_W_2_0 -- ^ @CERN-OHL-W-2.0@, CERN Open Hardware Licence Version 2 - Weakly Reciprocal, SPDX License List 3.9     | ClArtistic -- ^ @ClArtistic@, Clarified Artistic License     | CNRI_Jython -- ^ @CNRI-Jython@, CNRI Jython License     | CNRI_Python_GPL_Compatible -- ^ @CNRI-Python-GPL-Compatible@, CNRI Python Open Source GPL Compatible License Agreement     | CNRI_Python -- ^ @CNRI-Python@, CNRI Python License     | Condor_1_1 -- ^ @Condor-1.1@, Condor Public License v1.1-    | Copyleft_next_0_3_0 -- ^ @copyleft-next-0.3.0@, copyleft-next 0.3.0, SPDX License List 3.6-    | Copyleft_next_0_3_1 -- ^ @copyleft-next-0.3.1@, copyleft-next 0.3.1, SPDX License List 3.6+    | Copyleft_next_0_3_0 -- ^ @copyleft-next-0.3.0@, copyleft-next 0.3.0, SPDX License List 3.6, SPDX License List 3.9+    | Copyleft_next_0_3_1 -- ^ @copyleft-next-0.3.1@, copyleft-next 0.3.1, SPDX License List 3.6, SPDX License List 3.9     | CPAL_1_0 -- ^ @CPAL-1.0@, Common Public Attribution License 1.0     | CPL_1_0 -- ^ @CPL-1.0@, Common Public License 1.0     | CPOL_1_02 -- ^ @CPOL-1.02@, Code Project Open License 1.02@@ -173,6 +179,7 @@     | EPL_1_0 -- ^ @EPL-1.0@, Eclipse Public License 1.0     | EPL_2_0 -- ^ @EPL-2.0@, Eclipse Public License 2.0     | ErlPL_1_1 -- ^ @ErlPL-1.1@, Erlang Public License v1.1+    | Etalab_2_0 -- ^ @etalab-2.0@, Etalab Open License 2.0, SPDX License List 3.9     | EUDatagrid -- ^ @EUDatagrid@, EU DataGrid Software License     | EUPL_1_0 -- ^ @EUPL-1.0@, European Union Public License 1.0     | EUPL_1_1 -- ^ @EUPL-1.1@, European Union Public License 1.1@@ -204,7 +211,8 @@     | GPL_3_0_or_later -- ^ @GPL-3.0-or-later@, GNU General Public License v3.0 or later     | GSOAP_1_3b -- ^ @gSOAP-1.3b@, gSOAP Public License v1.3b     | HaskellReport -- ^ @HaskellReport@, Haskell Language Report License-    | HPND_sell_variant -- ^ @HPND-sell-variant@, Historical Permission Notice and Disclaimer - sell variant, SPDX License List 3.6+    | Hippocratic_2_1 -- ^ @Hippocratic-2.1@, Hippocratic License 2.1, SPDX License List 3.9+    | HPND_sell_variant -- ^ @HPND-sell-variant@, Historical Permission Notice and Disclaimer - sell variant, SPDX License List 3.6, SPDX License List 3.9     | HPND -- ^ @HPND@, Historical Permission Notice and Disclaimer     | IBM_pibs -- ^ @IBM-pibs@, IBM PowerPC Initialization and Boot Software     | ICU -- ^ @ICU@, ICU License@@ -220,7 +228,7 @@     | IPL_1_0 -- ^ @IPL-1.0@, IBM Public License v1.0     | ISC -- ^ @ISC@, ISC License     | JasPer_2_0 -- ^ @JasPer-2.0@, JasPer License-    | JPNIC -- ^ @JPNIC@, Japan Network Information Center License, SPDX License List 3.6+    | JPNIC -- ^ @JPNIC@, Japan Network Information Center License, SPDX License List 3.6, SPDX License List 3.9     | JSON -- ^ @JSON@, JSON License     | LAL_1_2 -- ^ @LAL-1.2@, Licence Art Libre 1.2     | LAL_1_3 -- ^ @LAL-1.3@, Licence Art Libre 1.3@@ -233,13 +241,14 @@     | LGPL_3_0_only -- ^ @LGPL-3.0-only@, GNU Lesser General Public License v3.0 only     | LGPL_3_0_or_later -- ^ @LGPL-3.0-or-later@, GNU Lesser General Public License v3.0 or later     | LGPLLR -- ^ @LGPLLR@, Lesser General Public License For Linguistic Resources-    | Libpng_2_0 -- ^ @libpng-2.0@, PNG Reference Library version 2, SPDX License List 3.6+    | Libpng_2_0 -- ^ @libpng-2.0@, PNG Reference Library version 2, SPDX License List 3.6, SPDX License List 3.9     | Libpng -- ^ @Libpng@, libpng License+    | Libselinux_1_0 -- ^ @libselinux-1.0@, libselinux public domain notice, SPDX License List 3.9     | Libtiff -- ^ @libtiff@, libtiff License     | LiLiQ_P_1_1 -- ^ @LiLiQ-P-1.1@, Licence Libre du Québec – Permissive version 1.1     | LiLiQ_R_1_1 -- ^ @LiLiQ-R-1.1@, Licence Libre du Québec – Réciprocité version 1.1     | LiLiQ_Rplus_1_1 -- ^ @LiLiQ-Rplus-1.1@, Licence Libre du Québec – Réciprocité forte version 1.1-    | Linux_OpenIB -- ^ @Linux-OpenIB@, Linux Kernel Variant of OpenIB.org license, SPDX License List 3.2, SPDX License List 3.6+    | Linux_OpenIB -- ^ @Linux-OpenIB@, Linux Kernel Variant of OpenIB.org license, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9     | LPL_1_02 -- ^ @LPL-1.02@, Lucent Public License v1.02     | LPL_1_0 -- ^ @LPL-1.0@, Lucent Public License Version 1.0     | LPPL_1_0 -- ^ @LPPL-1.0@, LaTeX Project Public License v1.0@@ -248,8 +257,8 @@     | LPPL_1_3a -- ^ @LPPL-1.3a@, LaTeX Project Public License v1.3a     | LPPL_1_3c -- ^ @LPPL-1.3c@, LaTeX Project Public License v1.3c     | MakeIndex -- ^ @MakeIndex@, MakeIndex License-    | MirOS -- ^ @MirOS@, MirOS License-    | MIT_0 -- ^ @MIT-0@, MIT No Attribution, SPDX License List 3.2, SPDX License List 3.6+    | MirOS -- ^ @MirOS@, The MirOS Licence+    | MIT_0 -- ^ @MIT-0@, MIT No Attribution, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9     | MIT_advertising -- ^ @MIT-advertising@, Enlightenment License (e16)     | MIT_CMU -- ^ @MIT-CMU@, CMU License     | MIT_enna -- ^ @MIT-enna@, enna License@@ -265,11 +274,14 @@     | MS_PL -- ^ @MS-PL@, Microsoft Public License     | MS_RL -- ^ @MS-RL@, Microsoft Reciprocal License     | MTLL -- ^ @MTLL@, Matrix Template Library License+    | MulanPSL_1_0 -- ^ @MulanPSL-1.0@, Mulan Permissive Software License, Version 1, SPDX License List 3.9+    | MulanPSL_2_0 -- ^ @MulanPSL-2.0@, Mulan Permissive Software License, Version 2, SPDX License List 3.9     | Multics -- ^ @Multics@, Multics License     | Mup -- ^ @Mup@, Mup License     | NASA_1_3 -- ^ @NASA-1.3@, NASA Open Source Agreement 1.3     | Naumen -- ^ @Naumen@, Naumen Public License     | NBPL_1_0 -- ^ @NBPL-1.0@, Net Boolean Public License v1+    | NCGL_UK_2_0 -- ^ @NCGL-UK-2.0@, Non-Commercial Government Licence, SPDX License List 3.9     | NCSA -- ^ @NCSA@, University of Illinois/NCSA Open Source License     | Net_SNMP -- ^ @Net-SNMP@, Net-SNMP License     | NetCDF -- ^ @NetCDF@, NetCDF license@@ -284,16 +296,24 @@     | NPL_1_1 -- ^ @NPL-1.1@, Netscape Public License v1.1     | NPOSL_3_0 -- ^ @NPOSL-3.0@, Non-Profit Open Software License 3.0     | NRL -- ^ @NRL@, NRL License+    | NTP_0 -- ^ @NTP-0@, NTP No Attribution, SPDX License List 3.9     | NTP -- ^ @NTP@, NTP License+    | O_UDA_1_0 -- ^ @O-UDA-1.0@, Open Use of Data Agreement v1.0, SPDX License List 3.9     | OCCT_PL -- ^ @OCCT-PL@, Open CASCADE Technology Public License     | OCLC_2_0 -- ^ @OCLC-2.0@, OCLC Research Public License 2.0     | ODbL_1_0 -- ^ @ODbL-1.0@, ODC Open Database License v1.0-    | ODC_By_1_0 -- ^ @ODC-By-1.0@, Open Data Commons Attribution License v1.0, SPDX License List 3.2, SPDX License List 3.6+    | ODC_By_1_0 -- ^ @ODC-By-1.0@, Open Data Commons Attribution License v1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9+    | OFL_1_0_no_RFN -- ^ @OFL-1.0-no-RFN@, SIL Open Font License 1.0 with no Reserved Font Name, SPDX License List 3.9+    | OFL_1_0_RFN -- ^ @OFL-1.0-RFN@, SIL Open Font License 1.0 with Reserved Font Name, SPDX License List 3.9     | OFL_1_0 -- ^ @OFL-1.0@, SIL Open Font License 1.0+    | OFL_1_1_no_RFN -- ^ @OFL-1.1-no-RFN@, SIL Open Font License 1.1 with no Reserved Font Name, SPDX License List 3.9+    | OFL_1_1_RFN -- ^ @OFL-1.1-RFN@, SIL Open Font License 1.1 with Reserved Font Name, SPDX License List 3.9     | OFL_1_1 -- ^ @OFL-1.1@, SIL Open Font License 1.1-    | OGL_UK_1_0 -- ^ @OGL-UK-1.0@, Open Government Licence v1.0, SPDX License List 3.6-    | OGL_UK_2_0 -- ^ @OGL-UK-2.0@, Open Government Licence v2.0, SPDX License List 3.6-    | OGL_UK_3_0 -- ^ @OGL-UK-3.0@, Open Government Licence v3.0, SPDX License List 3.6+    | OGC_1_0 -- ^ @OGC-1.0@, OGC Software License, Version 1.0, SPDX License List 3.9+    | OGL_Canada_2_0 -- ^ @OGL-Canada-2.0@, Open Government Licence - Canada, SPDX License List 3.9+    | OGL_UK_1_0 -- ^ @OGL-UK-1.0@, Open Government Licence v1.0, SPDX License List 3.6, SPDX License List 3.9+    | OGL_UK_2_0 -- ^ @OGL-UK-2.0@, Open Government Licence v2.0, SPDX License List 3.6, SPDX License List 3.9+    | OGL_UK_3_0 -- ^ @OGL-UK-3.0@, Open Government Licence v3.0, SPDX License List 3.6, SPDX License List 3.9     | OGTSL -- ^ @OGTSL@, Open Group Test Suite License     | OLDAP_1_1 -- ^ @OLDAP-1.1@, Open LDAP Public License v1.1     | OLDAP_1_2 -- ^ @OLDAP-1.2@, Open LDAP Public License v1.2@@ -320,12 +340,16 @@     | OSL_2_0 -- ^ @OSL-2.0@, Open Software License 2.0     | OSL_2_1 -- ^ @OSL-2.1@, Open Software License 2.1     | OSL_3_0 -- ^ @OSL-3.0@, Open Software License 3.0-    | Parity_6_0_0 -- ^ @Parity-6.0.0@, The Parity Public License 6.0.0, SPDX License List 3.6+    | Parity_6_0_0 -- ^ @Parity-6.0.0@, The Parity Public License 6.0.0, SPDX License List 3.6, SPDX License List 3.9+    | Parity_7_0_0 -- ^ @Parity-7.0.0@, The Parity Public License 7.0.0, SPDX License List 3.9     | PDDL_1_0 -- ^ @PDDL-1.0@, ODC Public Domain Dedication & License 1.0     | PHP_3_01 -- ^ @PHP-3.01@, PHP License v3.01     | PHP_3_0 -- ^ @PHP-3.0@, PHP License v3.0     | Plexus -- ^ @Plexus@, Plexus Classworlds License+    | PolyForm_Noncommercial_1_0_0 -- ^ @PolyForm-Noncommercial-1.0.0@, PolyForm Noncommercial License 1.0.0, SPDX License List 3.9+    | PolyForm_Small_Business_1_0_0 -- ^ @PolyForm-Small-Business-1.0.0@, PolyForm Small Business License 1.0.0, SPDX License List 3.9     | PostgreSQL -- ^ @PostgreSQL@, PostgreSQL License+    | PSF_2_0 -- ^ @PSF-2.0@, Python Software Foundation License 2.0, SPDX License List 3.9     | Psfrag -- ^ @psfrag@, psfrag License     | Psutils -- ^ @psutils@, psutils License     | Python_2_0 -- ^ @Python-2.0@, Python License 2.0@@ -342,13 +366,13 @@     | SAX_PD -- ^ @SAX-PD@, Sax Public Domain Notice     | Saxpath -- ^ @Saxpath@, Saxpath License     | SCEA -- ^ @SCEA@, SCEA Shared Source License-    | Sendmail_8_23 -- ^ @Sendmail-8.23@, Sendmail License 8.23, SPDX License List 3.6+    | Sendmail_8_23 -- ^ @Sendmail-8.23@, Sendmail License 8.23, SPDX License List 3.6, SPDX License List 3.9     | Sendmail -- ^ @Sendmail@, Sendmail License     | SGI_B_1_0 -- ^ @SGI-B-1.0@, SGI Free Software License B v1.0     | SGI_B_1_1 -- ^ @SGI-B-1.1@, SGI Free Software License B v1.1     | SGI_B_2_0 -- ^ @SGI-B-2.0@, SGI Free Software License B v2.0-    | SHL_0_51 -- ^ @SHL-0.51@, Solderpad Hardware License, Version 0.51, SPDX License List 3.6-    | SHL_0_5 -- ^ @SHL-0.5@, Solderpad Hardware License v0.5, SPDX License List 3.6+    | SHL_0_51 -- ^ @SHL-0.51@, Solderpad Hardware License, Version 0.51, SPDX License List 3.6, SPDX License List 3.9+    | SHL_0_5 -- ^ @SHL-0.5@, Solderpad Hardware License v0.5, SPDX License List 3.6, SPDX License List 3.9     | SimPL_2_0 -- ^ @SimPL-2.0@, Simple Public License 2.0     | SISSL_1_2 -- ^ @SISSL-1.2@, Sun Industry Standards Source License v1.2     | SISSL -- ^ @SISSL@, Sun Industry Standards Source License v1.1@@ -360,17 +384,20 @@     | Spencer_94 -- ^ @Spencer-94@, Spencer License 94     | Spencer_99 -- ^ @Spencer-99@, Spencer License 99     | SPL_1_0 -- ^ @SPL-1.0@, Sun Public License v1.0-    | SSPL_1_0 -- ^ @SSPL-1.0@, Server Side Public License, v 1, SPDX License List 3.6+    | SSH_OpenSSH -- ^ @SSH-OpenSSH@, SSH OpenSSH license, SPDX License List 3.9+    | SSH_short -- ^ @SSH-short@, SSH short notice, SPDX License List 3.9+    | SSPL_1_0 -- ^ @SSPL-1.0@, Server Side Public License, v 1, SPDX License List 3.6, SPDX License List 3.9     | SugarCRM_1_1_3 -- ^ @SugarCRM-1.1.3@, SugarCRM Public License v1.1.3     | SWL -- ^ @SWL@, Scheme Widget Library (SWL) Software License Agreement-    | TAPR_OHL_1_0 -- ^ @TAPR-OHL-1.0@, TAPR Open Hardware License v1.0, SPDX License List 3.6+    | TAPR_OHL_1_0 -- ^ @TAPR-OHL-1.0@, TAPR Open Hardware License v1.0, SPDX License List 3.6, SPDX License List 3.9     | TCL -- ^ @TCL@, TCL/TK License     | TCP_wrappers -- ^ @TCP-wrappers@, TCP Wrappers License     | TMate -- ^ @TMate@, TMate Open Source License     | TORQUE_1_1 -- ^ @TORQUE-1.1@, TORQUE v2.5+ Software License v1.1     | TOSL -- ^ @TOSL@, Trusster Open Source License-    | TU_Berlin_1_0 -- ^ @TU-Berlin-1.0@, Technische Universitaet Berlin License 1.0, SPDX License List 3.2, SPDX License List 3.6-    | TU_Berlin_2_0 -- ^ @TU-Berlin-2.0@, Technische Universitaet Berlin License 2.0, SPDX License List 3.2, SPDX License List 3.6+    | TU_Berlin_1_0 -- ^ @TU-Berlin-1.0@, Technische Universitaet Berlin License 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9+    | TU_Berlin_2_0 -- ^ @TU-Berlin-2.0@, Technische Universitaet Berlin License 2.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9+    | UCL_1_0 -- ^ @UCL-1.0@, Upstream Compatibility License v1.0, SPDX License List 3.9     | Unicode_DFS_2015 -- ^ @Unicode-DFS-2015@, Unicode License Agreement - Data Files and Software (2015)     | Unicode_DFS_2016 -- ^ @Unicode-DFS-2016@, Unicode License Agreement - Data Files and Software (2016)     | Unicode_TOU -- ^ @Unicode-TOU@, Unicode Terms of Use@@ -548,6 +575,8 @@ licenseId BSL_1_0 = "BSL-1.0" licenseId Bzip2_1_0_5 = "bzip2-1.0.5" licenseId Bzip2_1_0_6 = "bzip2-1.0.6"+licenseId CAL_1_0_Combined_Work_Exception = "CAL-1.0-Combined-Work-Exception"+licenseId CAL_1_0 = "CAL-1.0" licenseId Caldera = "Caldera" licenseId CATOSL_1_1 = "CATOSL-1.1" licenseId CC_BY_1_0 = "CC-BY-1.0"@@ -594,6 +623,9 @@ licenseId CECILL_C = "CECILL-C" licenseId CERN_OHL_1_1 = "CERN-OHL-1.1" licenseId CERN_OHL_1_2 = "CERN-OHL-1.2"+licenseId CERN_OHL_P_2_0 = "CERN-OHL-P-2.0"+licenseId CERN_OHL_S_2_0 = "CERN-OHL-S-2.0"+licenseId CERN_OHL_W_2_0 = "CERN-OHL-W-2.0" licenseId ClArtistic = "ClArtistic" licenseId CNRI_Jython = "CNRI-Jython" licenseId CNRI_Python_GPL_Compatible = "CNRI-Python-GPL-Compatible"@@ -624,6 +656,7 @@ licenseId EPL_1_0 = "EPL-1.0" licenseId EPL_2_0 = "EPL-2.0" licenseId ErlPL_1_1 = "ErlPL-1.1"+licenseId Etalab_2_0 = "etalab-2.0" licenseId EUDatagrid = "EUDatagrid" licenseId EUPL_1_0 = "EUPL-1.0" licenseId EUPL_1_1 = "EUPL-1.1"@@ -655,6 +688,7 @@ licenseId GPL_3_0_or_later = "GPL-3.0-or-later" licenseId GSOAP_1_3b = "gSOAP-1.3b" licenseId HaskellReport = "HaskellReport"+licenseId Hippocratic_2_1 = "Hippocratic-2.1" licenseId HPND_sell_variant = "HPND-sell-variant" licenseId HPND = "HPND" licenseId IBM_pibs = "IBM-pibs"@@ -686,6 +720,7 @@ licenseId LGPLLR = "LGPLLR" licenseId Libpng_2_0 = "libpng-2.0" licenseId Libpng = "Libpng"+licenseId Libselinux_1_0 = "libselinux-1.0" licenseId Libtiff = "libtiff" licenseId LiLiQ_P_1_1 = "LiLiQ-P-1.1" licenseId LiLiQ_R_1_1 = "LiLiQ-R-1.1"@@ -716,11 +751,14 @@ licenseId MS_PL = "MS-PL" licenseId MS_RL = "MS-RL" licenseId MTLL = "MTLL"+licenseId MulanPSL_1_0 = "MulanPSL-1.0"+licenseId MulanPSL_2_0 = "MulanPSL-2.0" licenseId Multics = "Multics" licenseId Mup = "Mup" licenseId NASA_1_3 = "NASA-1.3" licenseId Naumen = "Naumen" licenseId NBPL_1_0 = "NBPL-1.0"+licenseId NCGL_UK_2_0 = "NCGL-UK-2.0" licenseId NCSA = "NCSA" licenseId Net_SNMP = "Net-SNMP" licenseId NetCDF = "NetCDF"@@ -735,13 +773,21 @@ licenseId NPL_1_1 = "NPL-1.1" licenseId NPOSL_3_0 = "NPOSL-3.0" licenseId NRL = "NRL"+licenseId NTP_0 = "NTP-0" licenseId NTP = "NTP"+licenseId O_UDA_1_0 = "O-UDA-1.0" licenseId OCCT_PL = "OCCT-PL" licenseId OCLC_2_0 = "OCLC-2.0" licenseId ODbL_1_0 = "ODbL-1.0" licenseId ODC_By_1_0 = "ODC-By-1.0"+licenseId OFL_1_0_no_RFN = "OFL-1.0-no-RFN"+licenseId OFL_1_0_RFN = "OFL-1.0-RFN" licenseId OFL_1_0 = "OFL-1.0"+licenseId OFL_1_1_no_RFN = "OFL-1.1-no-RFN"+licenseId OFL_1_1_RFN = "OFL-1.1-RFN" licenseId OFL_1_1 = "OFL-1.1"+licenseId OGC_1_0 = "OGC-1.0"+licenseId OGL_Canada_2_0 = "OGL-Canada-2.0" licenseId OGL_UK_1_0 = "OGL-UK-1.0" licenseId OGL_UK_2_0 = "OGL-UK-2.0" licenseId OGL_UK_3_0 = "OGL-UK-3.0"@@ -772,11 +818,15 @@ licenseId OSL_2_1 = "OSL-2.1" licenseId OSL_3_0 = "OSL-3.0" licenseId Parity_6_0_0 = "Parity-6.0.0"+licenseId Parity_7_0_0 = "Parity-7.0.0" licenseId PDDL_1_0 = "PDDL-1.0" licenseId PHP_3_01 = "PHP-3.01" licenseId PHP_3_0 = "PHP-3.0" licenseId Plexus = "Plexus"+licenseId PolyForm_Noncommercial_1_0_0 = "PolyForm-Noncommercial-1.0.0"+licenseId PolyForm_Small_Business_1_0_0 = "PolyForm-Small-Business-1.0.0" licenseId PostgreSQL = "PostgreSQL"+licenseId PSF_2_0 = "PSF-2.0" licenseId Psfrag = "psfrag" licenseId Psutils = "psutils" licenseId Python_2_0 = "Python-2.0"@@ -811,6 +861,8 @@ licenseId Spencer_94 = "Spencer-94" licenseId Spencer_99 = "Spencer-99" licenseId SPL_1_0 = "SPL-1.0"+licenseId SSH_OpenSSH = "SSH-OpenSSH"+licenseId SSH_short = "SSH-short" licenseId SSPL_1_0 = "SSPL-1.0" licenseId SugarCRM_1_1_3 = "SugarCRM-1.1.3" licenseId SWL = "SWL"@@ -822,6 +874,7 @@ licenseId TOSL = "TOSL" licenseId TU_Berlin_1_0 = "TU-Berlin-1.0" licenseId TU_Berlin_2_0 = "TU-Berlin-2.0"+licenseId UCL_1_0 = "UCL-1.0" licenseId Unicode_DFS_2015 = "Unicode-DFS-2015" licenseId Unicode_DFS_2016 = "Unicode-DFS-2016" licenseId Unicode_TOU = "Unicode-TOU"@@ -920,6 +973,8 @@ licenseName BSL_1_0 = "Boost Software License 1.0" licenseName Bzip2_1_0_5 = "bzip2 and libbzip2 License v1.0.5" licenseName Bzip2_1_0_6 = "bzip2 and libbzip2 License v1.0.6"+licenseName CAL_1_0_Combined_Work_Exception = "Cryptographic Autonomy License 1.0 (Combined Work Exception)"+licenseName CAL_1_0 = "Cryptographic Autonomy License 1.0" licenseName Caldera = "Caldera License" licenseName CATOSL_1_1 = "Computer Associates Trusted Open Source License 1.1" licenseName CC_BY_1_0 = "Creative Commons Attribution 1.0 Generic"@@ -964,8 +1019,11 @@ licenseName CECILL_2_1 = "CeCILL Free Software License Agreement v2.1" licenseName CECILL_B = "CeCILL-B Free Software License Agreement" licenseName CECILL_C = "CeCILL-C Free Software License Agreement"-licenseName CERN_OHL_1_1 = "CERN Open Hardware License v1.1"+licenseName CERN_OHL_1_1 = "CERN Open Hardware Licence v1.1" licenseName CERN_OHL_1_2 = "CERN Open Hardware Licence v1.2"+licenseName CERN_OHL_P_2_0 = "CERN Open Hardware Licence Version 2 - Permissive"+licenseName CERN_OHL_S_2_0 = "CERN Open Hardware Licence Version 2 - Strongly Reciprocal"+licenseName CERN_OHL_W_2_0 = "CERN Open Hardware Licence Version 2 - Weakly Reciprocal" licenseName ClArtistic = "Clarified Artistic License" licenseName CNRI_Jython = "CNRI Jython License" licenseName CNRI_Python_GPL_Compatible = "CNRI Python Open Source GPL Compatible License Agreement"@@ -996,6 +1054,7 @@ licenseName EPL_1_0 = "Eclipse Public License 1.0" licenseName EPL_2_0 = "Eclipse Public License 2.0" licenseName ErlPL_1_1 = "Erlang Public License v1.1"+licenseName Etalab_2_0 = "Etalab Open License 2.0" licenseName EUDatagrid = "EU DataGrid Software License" licenseName EUPL_1_0 = "European Union Public License 1.0" licenseName EUPL_1_1 = "European Union Public License 1.1"@@ -1027,6 +1086,7 @@ licenseName GPL_3_0_or_later = "GNU General Public License v3.0 or later" licenseName GSOAP_1_3b = "gSOAP Public License v1.3b" licenseName HaskellReport = "Haskell Language Report License"+licenseName Hippocratic_2_1 = "Hippocratic License 2.1" licenseName HPND_sell_variant = "Historical Permission Notice and Disclaimer - sell variant" licenseName HPND = "Historical Permission Notice and Disclaimer" licenseName IBM_pibs = "IBM PowerPC Initialization and Boot Software"@@ -1058,6 +1118,7 @@ licenseName LGPLLR = "Lesser General Public License For Linguistic Resources" licenseName Libpng_2_0 = "PNG Reference Library version 2" licenseName Libpng = "libpng License"+licenseName Libselinux_1_0 = "libselinux public domain notice" licenseName Libtiff = "libtiff License" licenseName LiLiQ_P_1_1 = "Licence Libre du Qu\233bec \8211 Permissive version 1.1" licenseName LiLiQ_R_1_1 = "Licence Libre du Qu\233bec \8211 R\233ciprocit\233 version 1.1"@@ -1071,7 +1132,7 @@ licenseName LPPL_1_3a = "LaTeX Project Public License v1.3a" licenseName LPPL_1_3c = "LaTeX Project Public License v1.3c" licenseName MakeIndex = "MakeIndex License"-licenseName MirOS = "MirOS License"+licenseName MirOS = "The MirOS Licence" licenseName MIT_0 = "MIT No Attribution" licenseName MIT_advertising = "Enlightenment License (e16)" licenseName MIT_CMU = "CMU License"@@ -1088,11 +1149,14 @@ licenseName MS_PL = "Microsoft Public License" licenseName MS_RL = "Microsoft Reciprocal License" licenseName MTLL = "Matrix Template Library License"+licenseName MulanPSL_1_0 = "Mulan Permissive Software License, Version 1"+licenseName MulanPSL_2_0 = "Mulan Permissive Software License, Version 2" licenseName Multics = "Multics License" licenseName Mup = "Mup License" licenseName NASA_1_3 = "NASA Open Source Agreement 1.3" licenseName Naumen = "Naumen Public License" licenseName NBPL_1_0 = "Net Boolean Public License v1"+licenseName NCGL_UK_2_0 = "Non-Commercial Government Licence" licenseName NCSA = "University of Illinois/NCSA Open Source License" licenseName Net_SNMP = "Net-SNMP License" licenseName NetCDF = "NetCDF license"@@ -1107,13 +1171,21 @@ licenseName NPL_1_1 = "Netscape Public License v1.1" licenseName NPOSL_3_0 = "Non-Profit Open Software License 3.0" licenseName NRL = "NRL License"+licenseName NTP_0 = "NTP No Attribution" licenseName NTP = "NTP License"+licenseName O_UDA_1_0 = "Open Use of Data Agreement v1.0" licenseName OCCT_PL = "Open CASCADE Technology Public License" licenseName OCLC_2_0 = "OCLC Research Public License 2.0" licenseName ODbL_1_0 = "ODC Open Database License v1.0" licenseName ODC_By_1_0 = "Open Data Commons Attribution License v1.0"+licenseName OFL_1_0_no_RFN = "SIL Open Font License 1.0 with no Reserved Font Name"+licenseName OFL_1_0_RFN = "SIL Open Font License 1.0 with Reserved Font Name" licenseName OFL_1_0 = "SIL Open Font License 1.0"+licenseName OFL_1_1_no_RFN = "SIL Open Font License 1.1 with no Reserved Font Name"+licenseName OFL_1_1_RFN = "SIL Open Font License 1.1 with Reserved Font Name" licenseName OFL_1_1 = "SIL Open Font License 1.1"+licenseName OGC_1_0 = "OGC Software License, Version 1.0"+licenseName OGL_Canada_2_0 = "Open Government Licence - Canada" licenseName OGL_UK_1_0 = "Open Government Licence v1.0" licenseName OGL_UK_2_0 = "Open Government Licence v2.0" licenseName OGL_UK_3_0 = "Open Government Licence v3.0"@@ -1144,11 +1216,15 @@ licenseName OSL_2_1 = "Open Software License 2.1" licenseName OSL_3_0 = "Open Software License 3.0" licenseName Parity_6_0_0 = "The Parity Public License 6.0.0"+licenseName Parity_7_0_0 = "The Parity Public License 7.0.0" licenseName PDDL_1_0 = "ODC Public Domain Dedication & License 1.0" licenseName PHP_3_01 = "PHP License v3.01" licenseName PHP_3_0 = "PHP License v3.0" licenseName Plexus = "Plexus Classworlds License"+licenseName PolyForm_Noncommercial_1_0_0 = "PolyForm Noncommercial License 1.0.0"+licenseName PolyForm_Small_Business_1_0_0 = "PolyForm Small Business License 1.0.0" licenseName PostgreSQL = "PostgreSQL License"+licenseName PSF_2_0 = "Python Software Foundation License 2.0" licenseName Psfrag = "psfrag License" licenseName Psutils = "psutils License" licenseName Python_2_0 = "Python License 2.0"@@ -1183,6 +1259,8 @@ licenseName Spencer_94 = "Spencer License 94" licenseName Spencer_99 = "Spencer License 99" licenseName SPL_1_0 = "Sun Public License v1.0"+licenseName SSH_OpenSSH = "SSH OpenSSH license"+licenseName SSH_short = "SSH short notice" licenseName SSPL_1_0 = "Server Side Public License, v 1" licenseName SugarCRM_1_1_3 = "SugarCRM Public License v1.1.3" licenseName SWL = "Scheme Widget Library (SWL) Software License Agreement"@@ -1194,6 +1272,7 @@ licenseName TOSL = "Trusster Open Source License" licenseName TU_Berlin_1_0 = "Technische Universitaet Berlin License 1.0" licenseName TU_Berlin_2_0 = "Technische Universitaet Berlin License 2.0"+licenseName UCL_1_0 = "Upstream Compatibility License v1.0" licenseName Unicode_DFS_2015 = "Unicode License Agreement - Data Files and Software (2015)" licenseName Unicode_DFS_2016 = "Unicode License Agreement - Data Files and Software (2016)" licenseName Unicode_TOU = "Unicode Terms of Use"@@ -1233,30 +1312,15 @@ licenseIsOsiApproved :: LicenseId -> Bool licenseIsOsiApproved NullBSD = True licenseIsOsiApproved AAL = True-licenseIsOsiApproved Abstyles = False-licenseIsOsiApproved Adobe_2006 = False-licenseIsOsiApproved Adobe_Glyph = False-licenseIsOsiApproved ADSL = False licenseIsOsiApproved AFL_1_1 = True licenseIsOsiApproved AFL_1_2 = True licenseIsOsiApproved AFL_2_0 = True licenseIsOsiApproved AFL_2_1 = True licenseIsOsiApproved AFL_3_0 = True-licenseIsOsiApproved Afmparse = False-licenseIsOsiApproved AGPL_1_0 = False-licenseIsOsiApproved AGPL_1_0_only = False-licenseIsOsiApproved AGPL_1_0_or_later = False licenseIsOsiApproved AGPL_3_0_only = True licenseIsOsiApproved AGPL_3_0_or_later = True-licenseIsOsiApproved Aladdin = False-licenseIsOsiApproved AMDPLPA = False-licenseIsOsiApproved AML = False-licenseIsOsiApproved AMPAS = False-licenseIsOsiApproved ANTLR_PD = False-licenseIsOsiApproved Apache_1_0 = False licenseIsOsiApproved Apache_1_1 = True licenseIsOsiApproved Apache_2_0 = True-licenseIsOsiApproved APAFML = False licenseIsOsiApproved APL_1_0 = True licenseIsOsiApproved APSL_1_0 = True licenseIsOsiApproved APSL_1_1 = True@@ -1266,341 +1330,223 @@ licenseIsOsiApproved Artistic_1_0_Perl = True licenseIsOsiApproved Artistic_1_0 = True licenseIsOsiApproved Artistic_2_0 = True-licenseIsOsiApproved Bahyph = False-licenseIsOsiApproved Barr = False-licenseIsOsiApproved Beerware = False-licenseIsOsiApproved BitTorrent_1_0 = False-licenseIsOsiApproved BitTorrent_1_1 = False-licenseIsOsiApproved Blessing = False-licenseIsOsiApproved BlueOak_1_0_0 = False-licenseIsOsiApproved Borceux = False-licenseIsOsiApproved BSD_1_Clause = False-licenseIsOsiApproved BSD_2_Clause_FreeBSD = False-licenseIsOsiApproved BSD_2_Clause_NetBSD = False+licenseIsOsiApproved BSD_1_Clause = True licenseIsOsiApproved BSD_2_Clause_Patent = True licenseIsOsiApproved BSD_2_Clause = True-licenseIsOsiApproved BSD_3_Clause_Attribution = False-licenseIsOsiApproved BSD_3_Clause_Clear = False licenseIsOsiApproved BSD_3_Clause_LBNL = True-licenseIsOsiApproved BSD_3_Clause_No_Nuclear_License_2014 = False-licenseIsOsiApproved BSD_3_Clause_No_Nuclear_License = False-licenseIsOsiApproved BSD_3_Clause_No_Nuclear_Warranty = False-licenseIsOsiApproved BSD_3_Clause_Open_MPI = False licenseIsOsiApproved BSD_3_Clause = True-licenseIsOsiApproved BSD_4_Clause_UC = False-licenseIsOsiApproved BSD_4_Clause = False-licenseIsOsiApproved BSD_Protection = False-licenseIsOsiApproved BSD_Source_Code = False licenseIsOsiApproved BSL_1_0 = True-licenseIsOsiApproved Bzip2_1_0_5 = False-licenseIsOsiApproved Bzip2_1_0_6 = False-licenseIsOsiApproved Caldera = False+licenseIsOsiApproved CAL_1_0_Combined_Work_Exception = True+licenseIsOsiApproved CAL_1_0 = True licenseIsOsiApproved CATOSL_1_1 = True-licenseIsOsiApproved CC_BY_1_0 = False-licenseIsOsiApproved CC_BY_2_0 = False-licenseIsOsiApproved CC_BY_2_5 = False-licenseIsOsiApproved CC_BY_3_0 = False-licenseIsOsiApproved CC_BY_4_0 = False-licenseIsOsiApproved CC_BY_NC_1_0 = False-licenseIsOsiApproved CC_BY_NC_2_0 = False-licenseIsOsiApproved CC_BY_NC_2_5 = False-licenseIsOsiApproved CC_BY_NC_3_0 = False-licenseIsOsiApproved CC_BY_NC_4_0 = False-licenseIsOsiApproved CC_BY_NC_ND_1_0 = False-licenseIsOsiApproved CC_BY_NC_ND_2_0 = False-licenseIsOsiApproved CC_BY_NC_ND_2_5 = False-licenseIsOsiApproved CC_BY_NC_ND_3_0 = False-licenseIsOsiApproved CC_BY_NC_ND_4_0 = False-licenseIsOsiApproved CC_BY_NC_SA_1_0 = False-licenseIsOsiApproved CC_BY_NC_SA_2_0 = False-licenseIsOsiApproved CC_BY_NC_SA_2_5 = False-licenseIsOsiApproved CC_BY_NC_SA_3_0 = False-licenseIsOsiApproved CC_BY_NC_SA_4_0 = False-licenseIsOsiApproved CC_BY_ND_1_0 = False-licenseIsOsiApproved CC_BY_ND_2_0 = False-licenseIsOsiApproved CC_BY_ND_2_5 = False-licenseIsOsiApproved CC_BY_ND_3_0 = False-licenseIsOsiApproved CC_BY_ND_4_0 = False-licenseIsOsiApproved CC_BY_SA_1_0 = False-licenseIsOsiApproved CC_BY_SA_2_0 = False-licenseIsOsiApproved CC_BY_SA_2_5 = False-licenseIsOsiApproved CC_BY_SA_3_0 = False-licenseIsOsiApproved CC_BY_SA_4_0 = False-licenseIsOsiApproved CC_PDDC = False-licenseIsOsiApproved CC0_1_0 = False licenseIsOsiApproved CDDL_1_0 = True-licenseIsOsiApproved CDDL_1_1 = False-licenseIsOsiApproved CDLA_Permissive_1_0 = False-licenseIsOsiApproved CDLA_Sharing_1_0 = False-licenseIsOsiApproved CECILL_1_0 = False-licenseIsOsiApproved CECILL_1_1 = False-licenseIsOsiApproved CECILL_2_0 = False licenseIsOsiApproved CECILL_2_1 = True-licenseIsOsiApproved CECILL_B = False-licenseIsOsiApproved CECILL_C = False-licenseIsOsiApproved CERN_OHL_1_1 = False-licenseIsOsiApproved CERN_OHL_1_2 = False-licenseIsOsiApproved ClArtistic = False-licenseIsOsiApproved CNRI_Jython = False-licenseIsOsiApproved CNRI_Python_GPL_Compatible = False licenseIsOsiApproved CNRI_Python = True-licenseIsOsiApproved Condor_1_1 = False-licenseIsOsiApproved Copyleft_next_0_3_0 = False-licenseIsOsiApproved Copyleft_next_0_3_1 = False licenseIsOsiApproved CPAL_1_0 = True licenseIsOsiApproved CPL_1_0 = True-licenseIsOsiApproved CPOL_1_02 = False-licenseIsOsiApproved Crossword = False-licenseIsOsiApproved CrystalStacker = False licenseIsOsiApproved CUA_OPL_1_0 = True-licenseIsOsiApproved Cube = False-licenseIsOsiApproved Curl = False-licenseIsOsiApproved D_FSL_1_0 = False-licenseIsOsiApproved Diffmark = False-licenseIsOsiApproved DOC = False-licenseIsOsiApproved Dotseqn = False-licenseIsOsiApproved DSDP = False-licenseIsOsiApproved Dvipdfm = False licenseIsOsiApproved ECL_1_0 = True licenseIsOsiApproved ECL_2_0 = True licenseIsOsiApproved EFL_1_0 = True licenseIsOsiApproved EFL_2_0 = True-licenseIsOsiApproved EGenix = False licenseIsOsiApproved Entessa = True licenseIsOsiApproved EPL_1_0 = True licenseIsOsiApproved EPL_2_0 = True-licenseIsOsiApproved ErlPL_1_1 = False licenseIsOsiApproved EUDatagrid = True-licenseIsOsiApproved EUPL_1_0 = False licenseIsOsiApproved EUPL_1_1 = True licenseIsOsiApproved EUPL_1_2 = True-licenseIsOsiApproved Eurosym = False licenseIsOsiApproved Fair = True licenseIsOsiApproved Frameworx_1_0 = True-licenseIsOsiApproved FreeImage = False-licenseIsOsiApproved FSFAP = False-licenseIsOsiApproved FSFULLR = False-licenseIsOsiApproved FSFUL = False-licenseIsOsiApproved FTL = False-licenseIsOsiApproved GFDL_1_1_only = False-licenseIsOsiApproved GFDL_1_1_or_later = False-licenseIsOsiApproved GFDL_1_2_only = False-licenseIsOsiApproved GFDL_1_2_or_later = False-licenseIsOsiApproved GFDL_1_3_only = False-licenseIsOsiApproved GFDL_1_3_or_later = False-licenseIsOsiApproved Giftware = False-licenseIsOsiApproved GL2PS = False-licenseIsOsiApproved Glide = False-licenseIsOsiApproved Glulxe = False-licenseIsOsiApproved Gnuplot = False-licenseIsOsiApproved GPL_1_0_only = False-licenseIsOsiApproved GPL_1_0_or_later = False licenseIsOsiApproved GPL_2_0_only = True licenseIsOsiApproved GPL_2_0_or_later = True licenseIsOsiApproved GPL_3_0_only = True licenseIsOsiApproved GPL_3_0_or_later = True-licenseIsOsiApproved GSOAP_1_3b = False-licenseIsOsiApproved HaskellReport = False-licenseIsOsiApproved HPND_sell_variant = False licenseIsOsiApproved HPND = True-licenseIsOsiApproved IBM_pibs = False-licenseIsOsiApproved ICU = False-licenseIsOsiApproved IJG = False-licenseIsOsiApproved ImageMagick = False-licenseIsOsiApproved IMatix = False-licenseIsOsiApproved Imlib2 = False-licenseIsOsiApproved Info_ZIP = False-licenseIsOsiApproved Intel_ACPI = False licenseIsOsiApproved Intel = True-licenseIsOsiApproved Interbase_1_0 = False licenseIsOsiApproved IPA = True licenseIsOsiApproved IPL_1_0 = True licenseIsOsiApproved ISC = True-licenseIsOsiApproved JasPer_2_0 = False-licenseIsOsiApproved JPNIC = False-licenseIsOsiApproved JSON = False-licenseIsOsiApproved LAL_1_2 = False-licenseIsOsiApproved LAL_1_3 = False-licenseIsOsiApproved Latex2e = False-licenseIsOsiApproved Leptonica = False licenseIsOsiApproved LGPL_2_0_only = True licenseIsOsiApproved LGPL_2_0_or_later = True licenseIsOsiApproved LGPL_2_1_only = True licenseIsOsiApproved LGPL_2_1_or_later = True licenseIsOsiApproved LGPL_3_0_only = True licenseIsOsiApproved LGPL_3_0_or_later = True-licenseIsOsiApproved LGPLLR = False-licenseIsOsiApproved Libpng_2_0 = False-licenseIsOsiApproved Libpng = False-licenseIsOsiApproved Libtiff = False licenseIsOsiApproved LiLiQ_P_1_1 = True licenseIsOsiApproved LiLiQ_R_1_1 = True licenseIsOsiApproved LiLiQ_Rplus_1_1 = True-licenseIsOsiApproved Linux_OpenIB = False licenseIsOsiApproved LPL_1_02 = True licenseIsOsiApproved LPL_1_0 = True-licenseIsOsiApproved LPPL_1_0 = False-licenseIsOsiApproved LPPL_1_1 = False-licenseIsOsiApproved LPPL_1_2 = False-licenseIsOsiApproved LPPL_1_3a = False licenseIsOsiApproved LPPL_1_3c = True-licenseIsOsiApproved MakeIndex = False licenseIsOsiApproved MirOS = True-licenseIsOsiApproved MIT_0 = True-licenseIsOsiApproved MIT_advertising = False-licenseIsOsiApproved MIT_CMU = False-licenseIsOsiApproved MIT_enna = False-licenseIsOsiApproved MIT_feh = False-licenseIsOsiApproved MITNFA = False licenseIsOsiApproved MIT = True licenseIsOsiApproved Motosoto = True-licenseIsOsiApproved Mpich2 = False licenseIsOsiApproved MPL_1_0 = True licenseIsOsiApproved MPL_1_1 = True licenseIsOsiApproved MPL_2_0_no_copyleft_exception = True licenseIsOsiApproved MPL_2_0 = True licenseIsOsiApproved MS_PL = True licenseIsOsiApproved MS_RL = True-licenseIsOsiApproved MTLL = False+licenseIsOsiApproved MulanPSL_2_0 = True licenseIsOsiApproved Multics = True-licenseIsOsiApproved Mup = False licenseIsOsiApproved NASA_1_3 = True licenseIsOsiApproved Naumen = True-licenseIsOsiApproved NBPL_1_0 = False licenseIsOsiApproved NCSA = True-licenseIsOsiApproved Net_SNMP = False-licenseIsOsiApproved NetCDF = False-licenseIsOsiApproved Newsletr = False licenseIsOsiApproved NGPL = True-licenseIsOsiApproved NLOD_1_0 = False-licenseIsOsiApproved NLPL = False licenseIsOsiApproved Nokia = True-licenseIsOsiApproved NOSL = False-licenseIsOsiApproved Noweb = False-licenseIsOsiApproved NPL_1_0 = False-licenseIsOsiApproved NPL_1_1 = False licenseIsOsiApproved NPOSL_3_0 = True-licenseIsOsiApproved NRL = False licenseIsOsiApproved NTP = True-licenseIsOsiApproved OCCT_PL = False licenseIsOsiApproved OCLC_2_0 = True-licenseIsOsiApproved ODbL_1_0 = False-licenseIsOsiApproved ODC_By_1_0 = False-licenseIsOsiApproved OFL_1_0 = False+licenseIsOsiApproved OFL_1_1_no_RFN = True+licenseIsOsiApproved OFL_1_1_RFN = True licenseIsOsiApproved OFL_1_1 = True-licenseIsOsiApproved OGL_UK_1_0 = False-licenseIsOsiApproved OGL_UK_2_0 = False-licenseIsOsiApproved OGL_UK_3_0 = False licenseIsOsiApproved OGTSL = True-licenseIsOsiApproved OLDAP_1_1 = False-licenseIsOsiApproved OLDAP_1_2 = False-licenseIsOsiApproved OLDAP_1_3 = False-licenseIsOsiApproved OLDAP_1_4 = False-licenseIsOsiApproved OLDAP_2_0_1 = False-licenseIsOsiApproved OLDAP_2_0 = False-licenseIsOsiApproved OLDAP_2_1 = False-licenseIsOsiApproved OLDAP_2_2_1 = False-licenseIsOsiApproved OLDAP_2_2_2 = False-licenseIsOsiApproved OLDAP_2_2 = False-licenseIsOsiApproved OLDAP_2_3 = False-licenseIsOsiApproved OLDAP_2_4 = False-licenseIsOsiApproved OLDAP_2_5 = False-licenseIsOsiApproved OLDAP_2_6 = False-licenseIsOsiApproved OLDAP_2_7 = False-licenseIsOsiApproved OLDAP_2_8 = False-licenseIsOsiApproved OML = False-licenseIsOsiApproved OpenSSL = False-licenseIsOsiApproved OPL_1_0 = False licenseIsOsiApproved OSET_PL_2_1 = True licenseIsOsiApproved OSL_1_0 = True-licenseIsOsiApproved OSL_1_1 = False licenseIsOsiApproved OSL_2_0 = True licenseIsOsiApproved OSL_2_1 = True licenseIsOsiApproved OSL_3_0 = True-licenseIsOsiApproved Parity_6_0_0 = False-licenseIsOsiApproved PDDL_1_0 = False-licenseIsOsiApproved PHP_3_01 = False licenseIsOsiApproved PHP_3_0 = True-licenseIsOsiApproved Plexus = False licenseIsOsiApproved PostgreSQL = True-licenseIsOsiApproved Psfrag = False-licenseIsOsiApproved Psutils = False licenseIsOsiApproved Python_2_0 = True-licenseIsOsiApproved Qhull = False licenseIsOsiApproved QPL_1_0 = True-licenseIsOsiApproved Rdisc = False-licenseIsOsiApproved RHeCos_1_1 = False licenseIsOsiApproved RPL_1_1 = True licenseIsOsiApproved RPL_1_5 = True licenseIsOsiApproved RPSL_1_0 = True-licenseIsOsiApproved RSA_MD = False licenseIsOsiApproved RSCPL = True-licenseIsOsiApproved Ruby = False-licenseIsOsiApproved SAX_PD = False-licenseIsOsiApproved Saxpath = False-licenseIsOsiApproved SCEA = False-licenseIsOsiApproved Sendmail_8_23 = False-licenseIsOsiApproved Sendmail = False-licenseIsOsiApproved SGI_B_1_0 = False-licenseIsOsiApproved SGI_B_1_1 = False-licenseIsOsiApproved SGI_B_2_0 = False-licenseIsOsiApproved SHL_0_51 = False-licenseIsOsiApproved SHL_0_5 = False licenseIsOsiApproved SimPL_2_0 = True-licenseIsOsiApproved SISSL_1_2 = False licenseIsOsiApproved SISSL = True licenseIsOsiApproved Sleepycat = True-licenseIsOsiApproved SMLNJ = False-licenseIsOsiApproved SMPPL = False-licenseIsOsiApproved SNIA = False-licenseIsOsiApproved Spencer_86 = False-licenseIsOsiApproved Spencer_94 = False-licenseIsOsiApproved Spencer_99 = False licenseIsOsiApproved SPL_1_0 = True-licenseIsOsiApproved SSPL_1_0 = False-licenseIsOsiApproved SugarCRM_1_1_3 = False-licenseIsOsiApproved SWL = False-licenseIsOsiApproved TAPR_OHL_1_0 = False-licenseIsOsiApproved TCL = False-licenseIsOsiApproved TCP_wrappers = False-licenseIsOsiApproved TMate = False-licenseIsOsiApproved TORQUE_1_1 = False-licenseIsOsiApproved TOSL = False-licenseIsOsiApproved TU_Berlin_1_0 = False-licenseIsOsiApproved TU_Berlin_2_0 = False-licenseIsOsiApproved Unicode_DFS_2015 = False-licenseIsOsiApproved Unicode_DFS_2016 = False-licenseIsOsiApproved Unicode_TOU = False-licenseIsOsiApproved Unlicense = False+licenseIsOsiApproved UCL_1_0 = True licenseIsOsiApproved UPL_1_0 = True-licenseIsOsiApproved Vim = False-licenseIsOsiApproved VOSTROM = False licenseIsOsiApproved VSL_1_0 = True-licenseIsOsiApproved W3C_19980720 = False-licenseIsOsiApproved W3C_20150513 = False licenseIsOsiApproved W3C = True licenseIsOsiApproved Watcom_1_0 = True-licenseIsOsiApproved Wsuipa = False-licenseIsOsiApproved WTFPL = False-licenseIsOsiApproved X11 = False-licenseIsOsiApproved Xerox = False-licenseIsOsiApproved XFree86_1_1 = False-licenseIsOsiApproved Xinetd = False licenseIsOsiApproved Xnet = True-licenseIsOsiApproved Xpp = False-licenseIsOsiApproved XSkat = False-licenseIsOsiApproved YPL_1_0 = False-licenseIsOsiApproved YPL_1_1 = False-licenseIsOsiApproved Zed = False-licenseIsOsiApproved Zend_2_0 = False-licenseIsOsiApproved Zimbra_1_3 = False-licenseIsOsiApproved Zimbra_1_4 = False-licenseIsOsiApproved Zlib_acknowledgement = False licenseIsOsiApproved Zlib = True-licenseIsOsiApproved ZPL_1_1 = False licenseIsOsiApproved ZPL_2_0 = True-licenseIsOsiApproved ZPL_2_1 = False+licenseIsOsiApproved _ = False +-- | Whether the license is considered libre by Free Software Foundation (FSF).+--+-- See <https://www.gnu.org/licenses/license-list.en.html>+--+-- @since 3.4.0.0+--+licenseIsFsfLibre :: LicenseId -> Bool+licenseIsFsfLibre AFL_1_1 = True+licenseIsFsfLibre AFL_1_2 = True+licenseIsFsfLibre AFL_2_0 = True+licenseIsFsfLibre AFL_2_1 = True+licenseIsFsfLibre AFL_3_0 = True+licenseIsFsfLibre AGPL_1_0 = True+licenseIsFsfLibre AGPL_3_0_only = True+licenseIsFsfLibre AGPL_3_0_or_later = True+licenseIsFsfLibre Apache_1_0 = True+licenseIsFsfLibre Apache_1_1 = True+licenseIsFsfLibre Apache_2_0 = True+licenseIsFsfLibre APSL_2_0 = True+licenseIsFsfLibre Artistic_2_0 = True+licenseIsFsfLibre BitTorrent_1_1 = True+licenseIsFsfLibre BSD_2_Clause_FreeBSD = True+licenseIsFsfLibre BSD_3_Clause_Clear = True+licenseIsFsfLibre BSD_3_Clause = True+licenseIsFsfLibre BSD_4_Clause = True+licenseIsFsfLibre BSL_1_0 = True+licenseIsFsfLibre CC_BY_4_0 = True+licenseIsFsfLibre CC_BY_SA_4_0 = True+licenseIsFsfLibre CC0_1_0 = True+licenseIsFsfLibre CDDL_1_0 = True+licenseIsFsfLibre CECILL_2_0 = True+licenseIsFsfLibre CECILL_B = True+licenseIsFsfLibre CECILL_C = True+licenseIsFsfLibre ClArtistic = True+licenseIsFsfLibre Condor_1_1 = True+licenseIsFsfLibre CPAL_1_0 = True+licenseIsFsfLibre CPL_1_0 = True+licenseIsFsfLibre ECL_2_0 = True+licenseIsFsfLibre EFL_2_0 = True+licenseIsFsfLibre EPL_1_0 = True+licenseIsFsfLibre EPL_2_0 = True+licenseIsFsfLibre EUDatagrid = True+licenseIsFsfLibre EUPL_1_1 = True+licenseIsFsfLibre EUPL_1_2 = True+licenseIsFsfLibre FSFAP = True+licenseIsFsfLibre FTL = True+licenseIsFsfLibre GFDL_1_1_only = True+licenseIsFsfLibre GFDL_1_1_or_later = True+licenseIsFsfLibre GFDL_1_2_only = True+licenseIsFsfLibre GFDL_1_2_or_later = True+licenseIsFsfLibre GFDL_1_3_only = True+licenseIsFsfLibre GFDL_1_3_or_later = True+licenseIsFsfLibre Gnuplot = True+licenseIsFsfLibre GPL_2_0_only = True+licenseIsFsfLibre GPL_2_0_or_later = True+licenseIsFsfLibre GPL_3_0_only = True+licenseIsFsfLibre GPL_3_0_or_later = True+licenseIsFsfLibre HPND = True+licenseIsFsfLibre IJG = True+licenseIsFsfLibre IMatix = True+licenseIsFsfLibre Imlib2 = True+licenseIsFsfLibre Intel = True+licenseIsFsfLibre IPA = True+licenseIsFsfLibre IPL_1_0 = True+licenseIsFsfLibre ISC = True+licenseIsFsfLibre LGPL_2_1_only = True+licenseIsFsfLibre LGPL_2_1_or_later = True+licenseIsFsfLibre LGPL_3_0_only = True+licenseIsFsfLibre LGPL_3_0_or_later = True+licenseIsFsfLibre LPL_1_02 = True+licenseIsFsfLibre LPPL_1_2 = True+licenseIsFsfLibre LPPL_1_3a = True+licenseIsFsfLibre MIT = True+licenseIsFsfLibre MPL_1_1 = True+licenseIsFsfLibre MPL_2_0 = True+licenseIsFsfLibre MS_PL = True+licenseIsFsfLibre MS_RL = True+licenseIsFsfLibre NCSA = True+licenseIsFsfLibre Nokia = True+licenseIsFsfLibre NOSL = True+licenseIsFsfLibre NPL_1_0 = True+licenseIsFsfLibre NPL_1_1 = True+licenseIsFsfLibre ODbL_1_0 = True+licenseIsFsfLibre OFL_1_0 = True+licenseIsFsfLibre OFL_1_1 = True+licenseIsFsfLibre OLDAP_2_3 = True+licenseIsFsfLibre OLDAP_2_7 = True+licenseIsFsfLibre OpenSSL = True+licenseIsFsfLibre OSL_1_0 = True+licenseIsFsfLibre OSL_1_1 = True+licenseIsFsfLibre OSL_2_0 = True+licenseIsFsfLibre OSL_2_1 = True+licenseIsFsfLibre OSL_3_0 = True+licenseIsFsfLibre PHP_3_01 = True+licenseIsFsfLibre Python_2_0 = True+licenseIsFsfLibre QPL_1_0 = True+licenseIsFsfLibre RPSL_1_0 = True+licenseIsFsfLibre Ruby = True+licenseIsFsfLibre SGI_B_2_0 = True+licenseIsFsfLibre SISSL = True+licenseIsFsfLibre Sleepycat = True+licenseIsFsfLibre SMLNJ = True+licenseIsFsfLibre SPL_1_0 = True+licenseIsFsfLibre Unlicense = True+licenseIsFsfLibre UPL_1_0 = True+licenseIsFsfLibre Vim = True+licenseIsFsfLibre W3C = True+licenseIsFsfLibre WTFPL = True+licenseIsFsfLibre X11 = True+licenseIsFsfLibre XFree86_1_1 = True+licenseIsFsfLibre Xinetd = True+licenseIsFsfLibre YPL_1_1 = True+licenseIsFsfLibre Zend_2_0 = True+licenseIsFsfLibre Zimbra_1_3 = True+licenseIsFsfLibre Zlib = True+licenseIsFsfLibre ZPL_2_0 = True+licenseIsFsfLibre ZPL_2_1 = True+licenseIsFsfLibre _ = False+ ------------------------------------------------------------------------------- -- Creation -------------------------------------------------------------------------------@@ -1608,11 +1554,13 @@ licenseIdList :: LicenseListVersion -> [LicenseId] licenseIdList LicenseListVersion_3_0 =     [ AGPL_1_0+    , BSD_2_Clause_NetBSD     ]     ++ bulkOfLicenses licenseIdList LicenseListVersion_3_2 =     [ AGPL_1_0_only     , AGPL_1_0_or_later+    , BSD_2_Clause_NetBSD     , Linux_OpenIB     , MIT_0     , ODC_By_1_0@@ -1625,6 +1573,7 @@     , AGPL_1_0_or_later     , Blessing     , BlueOak_1_0_0+    , BSD_2_Clause_NetBSD     , BSD_3_Clause_Open_MPI     , CC_PDDC     , CERN_OHL_1_1@@ -1650,12 +1599,69 @@     , TU_Berlin_2_0     ]     ++ bulkOfLicenses+licenseIdList LicenseListVersion_3_9 =+    [ AGPL_1_0_only+    , AGPL_1_0_or_later+    , Blessing+    , BlueOak_1_0_0+    , BSD_3_Clause_Open_MPI+    , CAL_1_0_Combined_Work_Exception+    , CAL_1_0+    , CC_PDDC+    , CERN_OHL_1_1+    , CERN_OHL_1_2+    , CERN_OHL_P_2_0+    , CERN_OHL_S_2_0+    , CERN_OHL_W_2_0+    , Copyleft_next_0_3_0+    , Copyleft_next_0_3_1+    , Etalab_2_0+    , Hippocratic_2_1+    , HPND_sell_variant+    , JPNIC+    , Libpng_2_0+    , Libselinux_1_0+    , Linux_OpenIB+    , MIT_0+    , MulanPSL_1_0+    , MulanPSL_2_0+    , NCGL_UK_2_0+    , NTP_0+    , O_UDA_1_0+    , ODC_By_1_0+    , OFL_1_0_no_RFN+    , OFL_1_0_RFN+    , OFL_1_1_no_RFN+    , OFL_1_1_RFN+    , OGC_1_0+    , OGL_Canada_2_0+    , OGL_UK_1_0+    , OGL_UK_2_0+    , OGL_UK_3_0+    , Parity_6_0_0+    , Parity_7_0_0+    , PolyForm_Noncommercial_1_0_0+    , PolyForm_Small_Business_1_0_0+    , PSF_2_0+    , Sendmail_8_23+    , SHL_0_51+    , SHL_0_5+    , SSH_OpenSSH+    , SSH_short+    , SSPL_1_0+    , TAPR_OHL_1_0+    , TU_Berlin_1_0+    , TU_Berlin_2_0+    , UCL_1_0+    ]+    ++ bulkOfLicenses  -- | Create a 'LicenseId' from a 'String'. mkLicenseId :: LicenseListVersion -> String -> Maybe LicenseId mkLicenseId LicenseListVersion_3_0 s = Map.lookup s stringLookup_3_0 mkLicenseId LicenseListVersion_3_2 s = Map.lookup s stringLookup_3_2 mkLicenseId LicenseListVersion_3_6 s = Map.lookup s stringLookup_3_6+mkLicenseId LicenseListVersion_3_9 s = Map.lookup s stringLookup_3_9  stringLookup_3_0 :: Map String LicenseId stringLookup_3_0 = Map.fromList $ map (\i -> (licenseId i, i)) $@@ -1669,6 +1675,10 @@ stringLookup_3_6 = Map.fromList $ map (\i -> (licenseId i, i)) $     licenseIdList LicenseListVersion_3_6 +stringLookup_3_9 :: Map String LicenseId+stringLookup_3_9 = Map.fromList $ map (\i -> (licenseId i, i)) $+    licenseIdList LicenseListVersion_3_9+ --  | Licenses in all SPDX License lists bulkOfLicenses :: [LicenseId] bulkOfLicenses =@@ -1712,7 +1722,6 @@     , Borceux     , BSD_1_Clause     , BSD_2_Clause_FreeBSD-    , BSD_2_Clause_NetBSD     , BSD_2_Clause_Patent     , BSD_2_Clause     , BSD_3_Clause_Attribution
Distribution/SPDX/LicenseListVersion.hs view
@@ -10,9 +10,11 @@     = LicenseListVersion_3_0     | LicenseListVersion_3_2     | LicenseListVersion_3_6+    | LicenseListVersion_3_9   deriving (Eq, Ord, Show, Enum, Bounded)  cabalSpecVersionToSPDXListVersion :: CabalSpecVersion -> LicenseListVersion+cabalSpecVersionToSPDXListVersion CabalSpecV3_4 = LicenseListVersion_3_9 cabalSpecVersionToSPDXListVersion CabalSpecV3_0 = LicenseListVersion_3_6 cabalSpecVersionToSPDXListVersion CabalSpecV2_4 = LicenseListVersion_3_2 cabalSpecVersionToSPDXListVersion _             = LicenseListVersion_3_0
Distribution/Simple.hs view
@@ -61,10 +61,10 @@ import Distribution.Compat.Prelude  -- local-import Distribution.Simple.Compiler hiding (Flag)+import Distribution.Simple.Compiler import Distribution.Simple.UserHooks import Distribution.Package-import Distribution.PackageDescription hiding (Flag)+import Distribution.PackageDescription import Distribution.PackageDescription.Configuration import Distribution.Simple.Program import Distribution.Simple.Program.Db@@ -98,7 +98,6 @@ import System.Environment (getArgs, getProgName) import System.Directory   (removeFile, doesFileExist                           ,doesDirectoryExist, removeDirectoryRecursive)-import System.Exit                          (exitWith,ExitCode(..)) import System.FilePath                      (searchPathSeparator, takeDirectory, (</>), splitDirectories, dropDrive) import Distribution.Compat.ResponseFile (expandResponse) import Distribution.Compat.Directory        (makeAbsolute)@@ -413,31 +412,12 @@                  (getBuildConfig hooks verbosity distPref)                  hooks flags' args +-- Since Cabal-3.4 UserHooks are completely ignored sdistAction :: UserHooks -> SDistFlags -> Args -> IO ()-sdistAction hooks flags _args = do-    distPref <- findDistPrefOrDefault (sDistDistPref flags)-    let pbi   = emptyHookedBuildInfo--    mlbi <- maybeGetPersistBuildConfig distPref--    -- NB: It would be TOTALLY WRONG to use the 'PackageDescription'-    -- store in the 'LocalBuildInfo' for the rest of @sdist@, because-    -- that would result in only the files that would be built-    -- according to the user's configure being packaged up.-    -- In fact, it is not obvious why we need to read the-    -- 'LocalBuildInfo' in the first place, except that we want-    -- to do some architecture-independent preprocessing which-    -- needs to be configured.  This is totally awful, see-    -- GH#130.--    (_, ppd) <- confPkgDescr hooks verbosity Nothing--    let pkg_descr0 = flattenPackageDescription ppd-    sanityCheckHookedBuildInfo verbosity pkg_descr0 pbi-    let pkg_descr = updatePackageDescription pbi pkg_descr0-        mlbi' = fmap (\lbi -> lbi { localPkgDescr = pkg_descr }) mlbi--    sdist pkg_descr mlbi' flags srcPref (allSuffixHandlers hooks)+sdistAction _hooks flags _args = do+    (_, ppd) <- confPkgDescr emptyUserHooks verbosity Nothing+    let pkg_descr = flattenPackageDescription ppd+    sdist pkg_descr flags srcPref knownSuffixHandlers   where     verbosity = fromFlag (sDistVerbosity flags) @@ -606,7 +586,7 @@     traverse_ (writePersistBuildConfig distPref) maybeConfig    where-        removeFileOrDirectory :: FilePath -> NoCallStackIO ()+        removeFileOrDirectory :: FilePath -> IO ()         removeFileOrDirectory fname = do             isDir <- doesDirectoryExist fname             isFile <- doesFileExist fname@@ -740,11 +720,13 @@   let configureFile' = intercalate "/" $ splitDirectories configureFile   for_ badAutoconfCharacters $ \(c, cname) ->     when (c `elem` dropDrive configureFile') $-      warn verbosity $-           "The path to the './configure' script, '" ++ configureFile'-        ++ "', contains the character '" ++ [c] ++ "' (" ++ cname ++ ")."-        ++ " This may cause the script to fail with an obscure error, or for"-        ++ " building the package to fail later."+      warn verbosity $ concat+        [ "The path to the './configure' script, '", configureFile'+        , "', contains the character '", [c], "' (", cname, ")."+        , " This may cause the script to fail with an obscure error, or for"+        , " building the package to fail later."+        ]+   let extraPath = fromNubList $ configProgramPathExtra flags   let cflagsEnv = maybe (unwords ccFlags) (++ (" " ++ unwords ccFlags))                   $ lookup "CFLAGS" env@@ -766,39 +748,39 @@                  (programInvocation (sh {programOverrideEnv = overEnv}) args')                  { progInvokeCwd = Just (buildDir lbi) }       Nothing -> die' verbosity notFoundMsg-   where     args = configureArgs backwardsCompatHack flags -    badAutoconfCharacters =-      [ (' ', "space")-      , ('\t', "tab")-      , ('\n', "newline")-      , ('\0', "null")-      , ('"', "double quote")-      , ('#', "hash")-      , ('$', "dollar sign")-      , ('&', "ampersand")-      , ('\'', "single quote")-      , ('(', "left bracket")-      , (')', "right bracket")-      , ('*', "star")-      , (';', "semicolon")-      , ('<', "less-than sign")-      , ('=', "equals sign")-      , ('>', "greater-than sign")-      , ('?', "question mark")-      , ('[', "left square bracket")-      , ('\\', "backslash")-      , ('`', "backtick")-      , ('|', "pipe")-      ]-     notFoundMsg = "The package has a './configure' script. "                ++ "If you are on Windows, This requires a "                ++ "Unix compatibility toolchain such as MinGW+MSYS or Cygwin. "                ++ "If you are not on Windows, ensure that an 'sh' command "                ++ "is discoverable in your path."++badAutoconfCharacters :: [(Char, String)]+badAutoconfCharacters =+  [ (' ', "space")+  , ('\t', "tab")+  , ('\n', "newline")+  , ('\0', "null")+  , ('"', "double quote")+  , ('#', "hash")+  , ('$', "dollar sign")+  , ('&', "ampersand")+  , ('\'', "single quote")+  , ('(', "left bracket")+  , (')', "right bracket")+  , ('*', "star")+  , (';', "semicolon")+  , ('<', "less-than sign")+  , ('=', "equals sign")+  , ('>', "greater-than sign")+  , ('?', "question mark")+  , ('[', "left square bracket")+  , ('\\', "backslash")+  , ('`', "backtick")+  , ('|', "pipe")+  ]  getHookedBuildInfo :: Verbosity -> FilePath -> IO HookedBuildInfo getHookedBuildInfo verbosity build_dir = do
Distribution/Simple/Bench.hs view
@@ -32,7 +32,6 @@ import Distribution.Simple.Utils import Distribution.Pretty -import System.Exit ( ExitCode(..), exitFailure, exitSuccess ) import System.Directory ( doesFileExist ) import System.FilePath ( (</>), (<.>) ) 
Distribution/Simple/Build.hs view
@@ -41,8 +41,8 @@ import Distribution.Types.LocalBuildInfo import Distribution.Types.MungedPackageId import Distribution.Types.MungedPackageName+import Distribution.Types.ModuleRenaming import Distribution.Types.TargetInfo-import Distribution.Types.UnqualComponentName  import Distribution.Package import Distribution.Backpack@@ -57,8 +57,8 @@ import Distribution.Simple.Build.PathsModule (generatePathsModule) import qualified Distribution.Simple.Program.HcPkg as HcPkg -import Distribution.Simple.Compiler hiding (Flag)-import Distribution.PackageDescription hiding (Flag)+import Distribution.Simple.Compiler+import Distribution.PackageDescription import qualified Distribution.InstalledPackageInfo as IPI import Distribution.InstalledPackageInfo (InstalledPackageInfo) import qualified Distribution.ModuleName as ModuleName@@ -81,6 +81,7 @@ import Distribution.System import Distribution.Pretty import Distribution.Verbosity+import Distribution.Version (thisVersion)  import Distribution.Compat.Graph (IsNode(..)) @@ -535,8 +536,9 @@                 , componentCompatPackageKey = compat_key                 , componentExposedModules = [IPI.ExposedModule m Nothing]                 }+    pkgName' = mkPackageName $ prettyShow compat_name     pkg = pkg_descr {-            package      = (package pkg_descr) { pkgName = mkPackageName $ prettyShow compat_name }+            package      = (package pkg_descr) { pkgName = pkgName' }           , executables  = []           , testSuites   = []           , subLibraries = [lib]@@ -544,7 +546,10 @@     ipi    = inplaceInstalledPackageInfo pwd distPref pkg (mkAbiHash "") lib lbi libClbi     testDir = buildDir lbi </> stubName test           </> stubName test ++ "-tmp"-    testLibDep = thisPackageVersion $ package pkg+    testLibDep = Dependency+        pkgName'+        (thisVersion $ pkgVersion $ package pkg_descr)+        mainLibSet     exe = Executable {             exeName    = mkUnqualComponentName $ stubName test,             modulePath = stubFilePath test,
Distribution/Simple/Build/Macros.hs view
@@ -34,126 +34,76 @@ import Distribution.Simple.Program.Types import Distribution.Types.MungedPackageId import Distribution.Types.MungedPackageName-import Distribution.Types.PackageId import Distribution.Pretty --- --------------------------------------------------------------- * Generate cabal_macros.h--- ---------------------------------------------------------------- Invariant: HeaderLines always has a trailing newline-type HeaderLines = String--line :: String -> HeaderLines-line str = str ++ "\n"--ifndef :: String -> HeaderLines -> HeaderLines-ifndef macro body =-    line ("#ifndef " ++ macro) ++-    body ++-    line ("#endif /* " ++ macro ++ " */")--define :: String -> Maybe [String] -> String -> HeaderLines-define macro params val =-    line ("#define " ++ macro ++ f params ++ " " ++ val)-  where-    f Nothing = ""-    f (Just xs) = "(" ++ intercalate "," xs ++ ")"--defineStr :: String -> String -> HeaderLines-defineStr macro str = define macro Nothing (show str)--ifndefDefine :: String -> Maybe [String] -> String -> HeaderLines-ifndefDefine macro params str =-    ifndef macro (define macro params str)--ifndefDefineStr :: String -> String -> HeaderLines-ifndefDefineStr macro str =-    ifndef macro (defineStr macro str)+import qualified Distribution.Simple.Build.Macros.Z as Z  -- | The contents of the @cabal_macros.h@ for the given configured package. -- generateCabalMacrosHeader :: PackageDescription -> LocalBuildInfo -> ComponentLocalBuildInfo -> String-generateCabalMacrosHeader pkg_descr lbi clbi =-  "/* DO NOT EDIT: This file is automatically generated by Cabal */\n\n" ++-  generatePackageVersionMacros-    (package pkg_descr : map getPid (componentPackageDeps clbi)) ++-  generateToolVersionMacros (configuredPrograms . withPrograms $ lbi) ++-  generateComponentIdMacro lbi clbi ++-  generateCurrentPackageVersion pkg_descr- where-  getPid (_, MungedPackageId (MungedPackageName pn _) v) =-    -- NB: Drop the library name! We're just reporting package versions.-    -- This would have to be revisited if you are allowed to depend-    -- on different versions of the same package-    PackageIdentifier pn v+generateCabalMacrosHeader pkg_descr lbi clbi = Z.render Z.Z+    { Z.zPackages        = map mkZPackage $ package pkg_descr : map getPid (componentPackageDeps clbi)+    , Z.zTools           =+        [ Z.ZTool+            { Z.ztoolName    = programId prog+            , Z.ztoolVersion = ver+            , Z.ztoolX       = major1+            , Z.ztoolY       = major2+            , Z.ztoolZ       = minor+            }+        | prog <- configuredPrograms $ withPrograms lbi+        , ver <- maybeToList (programVersion prog)+        , let (major1,major2,minor) = majorMinor ver+        ]+    , Z.zPackageKey      = case clbi of+        LibComponentLocalBuildInfo{} -> componentCompatPackageKey clbi+        _                            -> ""+    , Z.zComponentId     = prettyShow (componentComponentId clbi)+    , Z.zPackageVersion  = pkgVersion (package pkg_descr)+    , Z.zNotNull         = not . null+    , Z.zManglePkgName   = map fixchar . unPackageName+    , Z.zMangleStr       = map fixchar+    }+  where+    getPid (_, MungedPackageId (MungedPackageName pn _) v) =+       -- NB: Drop the library name! We're just reporting package versions.+       -- This would have to be revisited if you are allowed to depend+       -- on different versions of the same package+        PackageIdentifier pn v  -- | Helper function that generates just the @VERSION_pkg@ and @MIN_VERSION_pkg@ -- macros for a list of package ids (usually used with the specific deps of -- a configured package). ---generatePackageVersionMacros :: [PackageId] -> String-generatePackageVersionMacros pkgids = concat-  [ line ("/* package " ++ prettyShow pkgid ++ " */")-  ++ generateMacros "" pkgname version-  | pkgid@(PackageIdentifier name version) <- pkgids-  , let pkgname = map fixchar (prettyShow name)-  ]---- | Helper function that generates just the @TOOL_VERSION_pkg@ and--- @MIN_TOOL_VERSION_pkg@ macros for a list of configured programs.----generateToolVersionMacros :: [ConfiguredProgram] -> String-generateToolVersionMacros progs = concat-  [ line ("/* tool " ++ progid ++ " */")-  ++ generateMacros "TOOL_" progname version-  | prog <- progs-  , isJust . programVersion $ prog-  , let progid   = programId prog ++ "-" ++ prettyShow version-        progname = map fixchar (programId prog)-        version  = fromMaybe version0 (programVersion prog)-  ]+generatePackageVersionMacros :: Version -> [PackageId] -> String+generatePackageVersionMacros ver pkgids = Z.render Z.Z+    { Z.zPackages        = map mkZPackage pkgids+    , Z.zTools           = []+    , Z.zPackageKey      = ""+    , Z.zComponentId     = ""+    , Z.zPackageVersion  = ver+    , Z.zNotNull         = not . null+    , Z.zManglePkgName   = map fixchar . unPackageName+    , Z.zMangleStr       = map fixchar+    } --- | Common implementation of 'generatePackageVersionMacros' and--- 'generateToolVersionMacros'.----generateMacros :: String -> String -> Version -> String-generateMacros macro_prefix name version =-  concat-  [ifndefDefineStr (macro_prefix ++ "VERSION_" ++ name) (prettyShow version)-  ,ifndefDefine ("MIN_" ++ macro_prefix ++ "VERSION_" ++ name)-                (Just ["major1","major2","minor"])-    $ concat [-       "(\\\n"-      ,"  (major1) <  ",major1," || \\\n"-      ,"  (major1) == ",major1," && (major2) <  ",major2," || \\\n"-      ,"  (major1) == ",major1," && (major2) == ",major2," && (minor) <= ",minor,")"-    ]-  ,"\n"]+mkZPackage :: PackageId -> Z.ZPackage+mkZPackage (PackageIdentifier name ver) = Z.ZPackage+    { Z.zpkgName    = name+    , Z.zpkgVersion = ver+    , Z.zpkgX       = major1+    , Z.zpkgY       = major2+    , Z.zpkgZ       = minor+    }   where-    (major1,major2,minor) = case map show (versionNumbers version) of+    (major1,major2,minor) = majorMinor ver++majorMinor :: Version -> (String, String, String)+majorMinor ver = case map show (versionNumbers ver) of         []        -> ("0", "0", "0")         [x]       -> (x,   "0", "0")         [x,y]     -> (x,   y,   "0")         (x:y:z:_) -> (x,   y,   z)---- | Generate the @CURRENT_COMPONENT_ID@ definition for the component ID---   of the current package.-generateComponentIdMacro :: LocalBuildInfo -> ComponentLocalBuildInfo -> String-generateComponentIdMacro _lbi clbi =-  concat $-      [case clbi of-        LibComponentLocalBuildInfo{} ->-          ifndefDefineStr "CURRENT_PACKAGE_KEY" (componentCompatPackageKey clbi)-        _ -> ""-      ,ifndefDefineStr "CURRENT_COMPONENT_ID" (prettyShow (componentComponentId clbi))-      ]---- | Generate the @CURRENT_PACKAGE_VERSION@ definition for the declared version---   of the current package.-generateCurrentPackageVersion :: PackageDescription -> String-generateCurrentPackageVersion pd =-  ifndefDefineStr "CURRENT_PACKAGE_VERSION" (prettyShow (pkgVersion (package pd)))  fixchar :: Char -> Char fixchar '-' = '_'
+ Distribution/Simple/Build/Macros/Z.hs view
@@ -0,0 +1,140 @@+{-# LANGUAGE DeriveGeneric #-}+module Distribution.Simple.Build.Macros.Z (render, Z(..), ZPackage (..), ZTool (..)) where+import Distribution.ZinzaPrelude+data Z+    = Z {zPackages :: ([ZPackage]),+         zTools :: ([ZTool]),+         zPackageKey :: String,+         zComponentId :: String,+         zPackageVersion :: Version,+         zNotNull :: (String -> Bool),+         zManglePkgName :: (PackageName -> String),+         zMangleStr :: (String -> String)}+    deriving Generic+data ZPackage+    = ZPackage {zpkgName :: PackageName,+                zpkgVersion :: Version,+                zpkgX :: String,+                zpkgY :: String,+                zpkgZ :: String}+    deriving Generic+data ZTool+    = ZTool {ztoolName :: String,+             ztoolVersion :: Version,+             ztoolX :: String,+             ztoolY :: String,+             ztoolZ :: String}+    deriving Generic+render :: Z -> String+render z_root = execWriter $ do+  tell "/* DO NOT EDIT: This file is automatically generated by Cabal */\n"+  tell "\n"+  forM_ (zPackages z_root) $ \z_var0_pkg -> do+    tell "/* package "+    tell (prettyShow (zpkgName z_var0_pkg))+    tell "-"+    tell (prettyShow (zpkgVersion z_var0_pkg))+    tell " */\n"+    tell "#ifndef VERSION_"+    tell (zManglePkgName z_root (zpkgName z_var0_pkg))+    tell "\n"+    tell "#define VERSION_"+    tell (zManglePkgName z_root (zpkgName z_var0_pkg))+    tell " \""+    tell (prettyShow (zpkgVersion z_var0_pkg))+    tell "\"\n"+    tell "#endif /* VERSION_"+    tell (zManglePkgName z_root (zpkgName z_var0_pkg))+    tell " */\n"+    tell "#ifndef MIN_VERSION_"+    tell (zManglePkgName z_root (zpkgName z_var0_pkg))+    tell "\n"+    tell "#define MIN_VERSION_"+    tell (zManglePkgName z_root (zpkgName z_var0_pkg))+    tell "(major1,major2,minor) (\\\n"+    tell "  (major1) <  "+    tell (zpkgX z_var0_pkg)+    tell " || \\\n"+    tell "  (major1) == "+    tell (zpkgX z_var0_pkg)+    tell " && (major2) <  "+    tell (zpkgY z_var0_pkg)+    tell " || \\\n"+    tell "  (major1) == "+    tell (zpkgX z_var0_pkg)+    tell " && (major2) == "+    tell (zpkgY z_var0_pkg)+    tell " && (minor) <= "+    tell (zpkgZ z_var0_pkg)+    tell ")\n"+    tell "#endif /* MIN_VERSION_"+    tell (zManglePkgName z_root (zpkgName z_var0_pkg))+    tell " */\n"+  tell "\n"+  forM_ (zTools z_root) $ \z_var1_tool -> do+    tell "/* tool "+    tell (ztoolName z_var1_tool)+    tell "-"+    tell (prettyShow (ztoolVersion z_var1_tool))+    tell " */\n"+    tell "#ifndef TOOL_VERSION_"+    tell (zMangleStr z_root (ztoolName z_var1_tool))+    tell "\n"+    tell "#define TOOL_VERSION_"+    tell (zMangleStr z_root (ztoolName z_var1_tool))+    tell " \""+    tell (prettyShow (ztoolVersion z_var1_tool))+    tell "\"\n"+    tell "#endif /* TOOL_VERSION_"+    tell (zMangleStr z_root (ztoolName z_var1_tool))+    tell " */\n"+    tell "#ifndef MIN_TOOL_VERSION_"+    tell (zMangleStr z_root (ztoolName z_var1_tool))+    tell "\n"+    tell "#define MIN_TOOL_VERSION_"+    tell (zMangleStr z_root (ztoolName z_var1_tool))+    tell "(major1,major2,minor) (\\\n"+    tell "  (major1) <  "+    tell (ztoolX z_var1_tool)+    tell " || \\\n"+    tell "  (major1) == "+    tell (ztoolX z_var1_tool)+    tell " && (major2) <  "+    tell (ztoolY z_var1_tool)+    tell " || \\\n"+    tell "  (major1) == "+    tell (ztoolX z_var1_tool)+    tell " && (major2) == "+    tell (ztoolY z_var1_tool)+    tell " && (minor) <= "+    tell (ztoolZ z_var1_tool)+    tell ")\n"+    tell "#endif /* MIN_TOOL_VERSION_"+    tell (zMangleStr z_root (ztoolName z_var1_tool))+    tell " */\n"+  tell "\n"+  if (zNotNull z_root (zPackageKey z_root))+  then do+    tell "#ifndef CURRENT_PACKAGE_KEY\n"+    tell "#define CURRENT_PACKAGE_KEY \""+    tell (zPackageKey z_root)+    tell "\"\n"+    tell "#endif /* CURRENT_packageKey */\n"+    return ()+  else do+    return ()+  if (zNotNull z_root (zComponentId z_root))+  then do+    tell "#ifndef CURRENT_COMPONENT_ID\n"+    tell "#define CURRENT_COMPONENT_ID \""+    tell (zComponentId z_root)+    tell "\"\n"+    tell "#endif /* CURRENT_COMPONENT_ID */\n"+    return ()+  else do+    return ()+  tell "#ifndef CURRENT_PACKAGE_VERSION\n"+  tell "#define CURRENT_PACKAGE_VERSION \""+  tell (prettyShow (zPackageVersion z_root))+  tell "\"\n"+  tell "#endif /* CURRENT_PACKAGE_VERSION */\n"
Distribution/Simple/Build/PathsModule.hs view
@@ -64,8 +64,9 @@         | otherwise =           "{-# OPTIONS_GHC -fffi #-}\n" -       warning_pragmas =-        "{-# OPTIONS_GHC -fno-warn-missing-import-lists #-}\n"+       warning_pragmas = unlines $+        [ "{-# OPTIONS_GHC -fno-warn-missing-import-lists #-}" ] +++        [ "{-# OPTIONS_GHC -Wno-missing-safe-haskell-mode #-}" | supports_missing_safehaskell ]         foreign_imports         | absolute = ""@@ -250,6 +251,7 @@         supports_cpp = supports_language_pragma         supports_rebindable_syntax= ghc_newer_than (mkVersion [7,0,1])         supports_language_pragma = ghc_newer_than (mkVersion [6,6,1])+        supports_missing_safehaskell = ghc_newer_than (mkVersion [8,10,1])          ghc_newer_than minVersion =           case compilerCompatVersion GHC (compiler lbi) of
Distribution/Simple/BuildPaths.hs view
@@ -43,8 +43,6 @@ import Prelude () import Distribution.Compat.Prelude -import Distribution.Types.ForeignLib-import Distribution.Types.UnqualComponentName (unUnqualComponentName) import Distribution.Package import Distribution.ModuleName as ModuleName import Distribution.Compiler
Distribution/Simple/BuildTarget.hs view
@@ -57,9 +57,8 @@ import qualified Distribution.Compat.CharParsing as P  import Control.Monad ( msum )-import Data.List ( stripPrefix, groupBy, partition )+import Data.List ( stripPrefix, groupBy ) import qualified Data.List.NonEmpty as NE-import Data.Either ( partitionEithers ) import System.FilePath as FilePath          ( dropExtension, normalise, splitDirectories, joinPath, splitPath          , hasTrailingPathSeparator )@@ -154,7 +153,7 @@      return btargets -checkTargetExistsAsFile :: UserBuildTarget -> NoCallStackIO (UserBuildTarget, Bool)+checkTargetExistsAsFile :: UserBuildTarget -> IO (UserBuildTarget, Bool) checkTargetExistsAsFile t = do     fexists <- existsAsFile (fileComponentOfTarget t)     return (t, fexists)@@ -554,7 +553,7 @@ --  data ComponentKind = LibKind | FLibKind | ExeKind | TestKind | BenchKind-  deriving (Eq, Ord, Show)+  deriving (Eq, Ord, Show, Enum, Bounded)  componentKind :: ComponentName -> ComponentKind componentKind (CLibName   _) = LibKind
Distribution/Simple/BuildToolDepends.hs view
@@ -12,9 +12,6 @@  import           Distribution.Package import           Distribution.PackageDescription-import           Distribution.Types.ExeDependency-import           Distribution.Types.LegacyExeDependency-import           Distribution.Types.UnqualComponentName  -- | Desugar a "build-tools" entry into proper a executable dependency if -- possible.
Distribution/Simple/Command.hs view
@@ -56,7 +56,7 @@   option, multiOption,  -- ** Liftings & Projections-  liftOption,+  liftOption, liftOptionL,  -- * Option Descriptions   OptDescr(..), Description, SFlags, LFlags, OptFlags, ArgPlaceHolder,@@ -74,6 +74,7 @@ import qualified Distribution.GetOpt as GetOpt import Distribution.ReadE import Distribution.Simple.Utils+import Distribution.Compat.Lens (ALens', (^#), (#~))   data CommandUI flags = CommandUI {@@ -250,6 +251,10 @@ liftOption :: (b -> a) -> (a -> (b -> b)) -> OptionField a -> OptionField b liftOption get' set' opt =   opt { optionDescr = liftOptDescr get' set' `map` optionDescr opt}++-- | @since 3.4.0.0+liftOptionL :: ALens' b a -> OptionField a -> OptionField b+liftOptionL l = liftOption (^# l) (l #~)   liftOptDescr :: (b -> a) -> (a -> (b -> b)) -> OptDescr a -> OptDescr b
Distribution/Simple/Compiler.hs view
@@ -47,7 +47,7 @@         flagToDebugInfoLevel,          -- * Support for language extensions-        Flag,+        CompilerFlag,         languageToFlags,         unsupportedLanguages,         extensionsToFlags,@@ -63,6 +63,7 @@         backpackSupported,         arResponseFilesSupported,         libraryDynDirSupported,+        libraryVisibilitySupported,          -- * Support for profiling detail levels         ProfDetailLevel(..),@@ -80,7 +81,6 @@ import Language.Haskell.Extension import Distribution.Simple.Utils -import Control.Monad (join) import qualified Data.Map as Map (lookup) import System.Directory (canonicalizePath) @@ -93,9 +93,9 @@         compilerCompat          :: [CompilerId],         -- ^ Other implementations that this compiler claims to be         -- compatible with.-        compilerLanguages       :: [(Language, Flag)],+        compilerLanguages       :: [(Language, CompilerFlag)],         -- ^ Supported language standards.-        compilerExtensions      :: [(Extension, Maybe Flag)],+        compilerExtensions      :: [(Extension, Maybe CompilerFlag)],         -- ^ Supported extensions.         compilerProperties      :: Map String String         -- ^ A key-value map for properties not covered by the above fields.@@ -206,10 +206,10 @@ -- | Make package paths absolute  -absolutePackageDBPaths :: PackageDBStack -> NoCallStackIO PackageDBStack+absolutePackageDBPaths :: PackageDBStack -> IO PackageDBStack absolutePackageDBPaths = traverse absolutePackageDBPath -absolutePackageDBPath :: PackageDB -> NoCallStackIO PackageDB+absolutePackageDBPath :: PackageDB -> IO PackageDB absolutePackageDBPath GlobalPackageDB        = return GlobalPackageDB absolutePackageDBPath UserPackageDB          = return UserPackageDB absolutePackageDBPath (SpecificPackageDB db) =@@ -279,12 +279,12 @@   [ lang | lang <- langs          , isNothing (languageToFlag comp lang) ] -languageToFlags :: Compiler -> Maybe Language -> [Flag]+languageToFlags :: Compiler -> Maybe Language -> [CompilerFlag] languageToFlags comp = filter (not . null)                      . catMaybes . map (languageToFlag comp)                      . maybe [Haskell98] (\x->[x]) -languageToFlag :: Compiler -> Language -> Maybe Flag+languageToFlag :: Compiler -> Language -> Maybe CompilerFlag languageToFlag comp ext = lookup ext (compilerLanguages comp)  @@ -294,16 +294,16 @@   [ ext | ext <- exts         , isNothing (extensionToFlag' comp ext) ] -type Flag = String+type CompilerFlag = String  -- |For the given compiler, return the flags for the supported extensions.-extensionsToFlags :: Compiler -> [Extension] -> [Flag]+extensionsToFlags :: Compiler -> [Extension] -> [CompilerFlag] extensionsToFlags comp = nub . filter (not . null)                        . catMaybes . map (extensionToFlag comp)  -- | Looks up the flag for a given extension, for a given compiler. -- Ignores the subtlety of extensions which lack associated flags.-extensionToFlag :: Compiler -> Extension -> Maybe Flag+extensionToFlag :: Compiler -> Extension -> Maybe CompilerFlag extensionToFlag comp ext = join (extensionToFlag' comp ext)  -- | Looks up the flag for a given extension, for a given compiler.@@ -315,7 +315,7 @@ -- the inner layer indicates whether it has a flag. -- When building strings, it is often more convenient to use 'extensionToFlag', -- which ignores the difference.-extensionToFlag' :: Compiler -> Extension -> Maybe (Maybe Flag)+extensionToFlag' :: Compiler -> Extension -> Maybe (Maybe CompilerFlag) extensionToFlag' comp ext = lookup ext (compilerExtensions comp)  -- | Does this compiler support parallel --make mode?@@ -380,6 +380,15 @@     GHC   -> True     GHCJS -> True     _     -> False++-- | Does this compiler support a package database entry with:+-- "visibility"?+libraryVisibilitySupported :: Compiler -> Bool+libraryVisibilitySupported comp = case compilerFlavor comp of+  GHC -> v >= mkVersion [8,8]+  _   -> False+ where+  v = compilerVersion comp  -- | Utility function for GHC only features ghcSupported :: String -> Compiler -> Bool
Distribution/Simple/Configure.hs view
@@ -37,7 +37,7 @@   , tryGetPersistBuildConfig   , maybeGetPersistBuildConfig   , findDistPref, findDistPrefOrDefault-  , getInternalPackages+  , getInternalLibraries   , computeComponentId   , computeCompatPackageKey   , localBuildInfoFile@@ -54,21 +54,20 @@   , platformDefines,   ) where -import qualified Prelude (tail)+import qualified Prelude as Unsafe (tail) import Distribution.Compat.Prelude  import Distribution.Compiler import Distribution.Types.IncludeRenaming import Distribution.Utils.NubList-import Distribution.Simple.Compiler hiding (Flag)+import Distribution.Simple.Compiler import Distribution.Simple.PreProcess import Distribution.Package-import qualified Distribution.InstalledPackageInfo as Installed+import qualified Distribution.InstalledPackageInfo as IPI import Distribution.InstalledPackageInfo (InstalledPackageInfo) import qualified Distribution.Simple.PackageIndex as PackageIndex import Distribution.Simple.PackageIndex (InstalledPackageIndex)-import Distribution.PackageDescription as PD hiding (Flag)-import Distribution.Types.PackageDescription as PD+import Distribution.PackageDescription import Distribution.PackageDescription.PrettyPrint import Distribution.PackageDescription.Configuration import Distribution.PackageDescription.Check hiding (doesFileExist)@@ -77,21 +76,13 @@ import Distribution.Simple.Setup as Setup import Distribution.Simple.BuildTarget import Distribution.Simple.LocalBuildInfo-import Distribution.Types.ExeDependency-import Distribution.Types.LegacyExeDependency+import Distribution.Types.PackageVersionConstraint import Distribution.Types.PkgconfigVersion-import Distribution.Types.PkgconfigDependency import Distribution.Types.PkgconfigVersionRange import Distribution.Types.LocalBuildInfo-import Distribution.Types.LibraryName-import Distribution.Types.LibraryVisibility import Distribution.Types.ComponentRequestedSpec-import Distribution.Types.ForeignLib-import Distribution.Types.ForeignLibType-import Distribution.Types.ForeignLibOption import Distribution.Types.GivenComponent import Distribution.Types.Mixin-import Distribution.Types.UnqualComponentName import Distribution.Simple.Utils import Distribution.System import Distribution.Version@@ -111,8 +102,7 @@ import qualified Distribution.Simple.HaskellSuite as HaskellSuite  import Control.Exception-    ( ErrorCall, Exception, evaluate, throw, throwIO, try )-import Control.Monad ( forM, forM_ )+    ( try ) import Data.List.NonEmpty            ( nonEmpty ) import Distribution.Utils.Structured ( structuredDecodeOrFailIO, structuredEncode ) import Distribution.Compat.Directory ( listDirectory )@@ -120,9 +110,7 @@ import qualified Data.ByteString            as BS import qualified Data.ByteString.Lazy.Char8 as BLC8 import Data.List-    ( (\\), partition, inits, stripPrefix, intersect, dropWhileEnd )-import Data.Either-    ( partitionEithers )+    ( (\\), inits, stripPrefix, intersect, dropWhileEnd ) import qualified Data.Map as Map import System.Directory     ( canonicalizePath, createDirectoryIfMissing, doesFileExist@@ -140,12 +128,12 @@ import Distribution.Parsec     ( simpleParsec ) import Text.PrettyPrint-    ( Doc, (<+>), ($+$), char, comma, hsep, nest+    ( Doc, ($+$), char, comma, hsep, nest     , punctuate, quotes, render, renderStyle, sep, text ) import Distribution.Compat.Environment ( lookupEnv )-import Distribution.Compat.Exception ( catchExit, catchIO )  import qualified Data.Set as Set+import qualified Distribution.Compat.NonEmptySet as NES   type UseExternalInternalDeps = Bool@@ -205,21 +193,17 @@     contents <- BS.readFile filename     let (header, body) = BLC8.span (/='\n') (BLC8.fromChunks [contents]) -    headerParseResult <- try $ evaluate $ parseHeader header-    let (cabalId, compId) =-            case headerParseResult of-              Left (_ :: ErrorCall) -> throw ConfigStateFileBadHeader-              Right x -> x+    (cabalId, compId) <- parseHeader header      let getStoredValue = do           result <- structuredDecodeOrFailIO (BLC8.tail body)           case result of-            Left _ -> throw ConfigStateFileNoParse+            Left _ -> throwIO ConfigStateFileNoParse             Right x -> return x         deferErrorIfBadVersion act           | cabalId /= currentCabalId = do               eResult <- try act-              throw $ ConfigStateFileBadVersion cabalId compId eResult+              throwIO $ ConfigStateFileBadVersion cabalId compId eResult           | otherwise = act     deferErrorIfBadVersion getStoredValue   where@@ -253,7 +237,7 @@ -- 'localBuildInfoFile'. writePersistBuildConfig :: FilePath -- ^ The @dist@ directory path.                         -> LocalBuildInfo -- ^ The 'LocalBuildInfo' to write.-                        -> NoCallStackIO ()+                        -> IO () writePersistBuildConfig distPref lbi = do     createDirectoryIfMissing False distPref     writeFileAtomic (localBuildInfoFile distPref) $@@ -273,16 +257,16 @@ -- | Parse the @setup-config@ file header, returning the package identifiers -- for Cabal and the compiler. parseHeader :: ByteString -- ^ The file contents.-            -> (PackageIdentifier, PackageIdentifier)+            -> IO (PackageIdentifier, PackageIdentifier) parseHeader header = case BLC8.words header of   ["Saved", "package", "config", "for", pkgId, "written", "by", cabalId,    "using", compId] ->-      fromMaybe (throw ConfigStateFileBadHeader) $ do+      maybe (throwIO ConfigStateFileBadHeader) return $ do           _ <- simpleParsec (fromUTF8LBS pkgId) :: Maybe PackageIdentifier           cabalId' <- simpleParsec (BLC8.unpack cabalId)           compId' <- simpleParsec (BLC8.unpack compId)           return (cabalId', compId')-  _ -> throw ConfigStateFileNoHeader+  _ -> throwIO ConfigStateFileNoHeader  -- | Generate the @setup-config@ file header. showHeader :: PackageIdentifier -- ^ The processed package.@@ -298,7 +282,7 @@  -- | Check that localBuildInfoFile is up-to-date with respect to the -- .cabal file.-checkPersistBuildConfigOutdated :: FilePath -> FilePath -> NoCallStackIO Bool+checkPersistBuildConfigOutdated :: FilePath -> FilePath -> IO Bool checkPersistBuildConfigOutdated distPref pkg_descr_file =   pkg_descr_file `moreRecentFile` localBuildInfoFile distPref @@ -316,7 +300,7 @@ -- \"CABAL_BUILDDIR\" environment variable, or the default prefix. findDistPref :: FilePath  -- ^ default \"dist\" prefix              -> Setup.Flag FilePath  -- ^ override \"dist\" prefix-             -> NoCallStackIO FilePath+             -> IO FilePath findDistPref defDistPref overrideDistPref = do     envDistPref <- liftM parseEnvDistPref (lookupEnv "CABAL_BUILDDIR")     return $ fromFlagOrDefault defDistPref (mappend envDistPref overrideDistPref)@@ -333,7 +317,7 @@ -- set. (The @*DistPref@ flags are always set to a definite value before -- invoking 'UserHooks'.) findDistPrefOrDefault :: Setup.Flag FilePath  -- ^ override \"dist\" prefix-                      -> NoCallStackIO FilePath+                      -> IO FilePath findDistPrefOrDefault = findDistPref defaultDistPref  -- |Perform the \"@.\/setup configure@\" action.@@ -406,8 +390,8 @@      -- The set of package names which are "shadowed" by internal     -- packages, and which component they map to-    let internalPackageSet :: Map PackageName (Maybe UnqualComponentName)-        internalPackageSet = getInternalPackages pkg_descr0+    let internalPackageSet :: Set LibraryName+        internalPackageSet = getInternalLibraries pkg_descr0      -- Make a data structure describing what components are enabled.     let enabled :: ComponentRequestedSpec@@ -450,7 +434,7 @@     -- NB: The fact that we bundle all the constraints together means     -- that is not possible to configure a test-suite to use one     -- version of a dependency, and the executable to use another.-    (allConstraints  :: [Dependency],+    (allConstraints  :: [PackageVersionConstraint],      requiredDepsMap :: Map (PackageName, ComponentName) InstalledPackageInfo)         <- either (die' verbosity) return $               combinedConstraints (configConstraints cfg)@@ -458,7 +442,7 @@                                   installedPackageSet      -- pkg_descr:   The resolved package description, that does not contain any-    --              conditionals, because we have have an assignment for+    --              conditionals, because we have an assignment for     --              every flag, either picking them ourselves using a     --              simple naive algorithm, or having them be passed to     --              us by 'configConfigurationsFlags')@@ -890,26 +874,23 @@ -- file, and we haven't resolved them yet.  finalizePD -- does the resolution of conditionals, and it takes internalPackageSet -- as part of its input.-getInternalPackages :: GenericPackageDescription-                    -> Map PackageName (Maybe UnqualComponentName)-getInternalPackages pkg_descr0 =+getInternalLibraries :: GenericPackageDescription+                     -> Set LibraryName+getInternalLibraries pkg_descr0 =     -- TODO: some day, executables will be fair game here too!     let pkg_descr = flattenPackageDescription pkg_descr0-        f lib = case libName lib of-                  LMainLibName   -> (packageName pkg_descr, Nothing)-                  LSubLibName n' -> (unqualComponentNameToPackageName n', Just n')-    in Map.fromList (map f (allLibraries pkg_descr))+    in Set.fromList (map libName (allLibraries pkg_descr))  -- | Returns true if a dependency is satisfiable.  This function may -- report a dependency satisfiable even when it is not, but not vice--- versa. This is to be passed to finalizePD.+-- versa. This is to be passed to finalize dependencySatisfiable     :: Bool -- ^ use external internal deps?     -> Bool -- ^ exact configuration?     -> Bool -- ^ allow depending on private libs?     -> PackageName     -> InstalledPackageIndex -- ^ installed set-    -> Map PackageName (Maybe UnqualComponentName) -- ^ internal set+    -> Set LibraryName -- ^ library components     -> Map (PackageName, ComponentName) InstalledPackageInfo        -- ^ required dependencies     -> (Dependency -> Bool)@@ -917,9 +898,8 @@   use_external_internal_deps   exact_config   allow_private_deps-  pn installedPackageSet internalPackageSet requiredDepsMap+  pn installedPackageSet packageLibraries requiredDepsMap   (Dependency depName vr sublibs)-     | exact_config     -- When we're given '--exact-configuration', we assume that all     -- dependencies and flags are exactly specified on the command@@ -932,10 +912,10 @@     = if isInternalDep && not use_external_internal_deps         -- Except for internal deps, when we're NOT per-component mode;         -- those are just True.-        then True+        then internalDepSatisfiable         else           -- Backward compatibility for the old sublibrary syntax-          (sublibs == Set.singleton LMainLibName+          (sublibs == mainLibSet             && Map.member                  (pn, CLibName $ LSubLibName $                       packageNameToUnqualComponentName depName)@@ -948,36 +928,32 @@         -- When we are doing per-component configure, we now need to         -- test if the internal dependency is in the index.  This has         -- DIFFERENT semantics from normal dependency satisfiability.-        then internalDepSatisfiable+        then internalDepSatisfiableExternally         -- If a 'PackageName' is defined by an internal component, the dep is         -- satisfiable (we're going to build it ourselves)-        else True+        else internalDepSatisfiable      | otherwise     = depSatisfiable    where-    isInternalDep = Map.member depName internalPackageSet+    -- Internal dependency is when dependency is the same as package.+    isInternalDep = pn == depName      depSatisfiable =         not . null $ PackageIndex.lookupDependency installedPackageSet depName vr      internalDepSatisfiable =-        not . null $ PackageIndex.lookupInternalDependency-                        installedPackageSet pn vr cn-      where-        cn | pn == depName-           = LMainLibName -           | otherwise-           -- Reinterpret the "package name" as an unqualified component-           -- name-           = LSubLibName $ packageNameToUnqualComponentName depName+        Set.isSubsetOf (NES.toSet sublibs) packageLibraries+    internalDepSatisfiableExternally =+        all (\ln -> not $ null $ PackageIndex.lookupInternalDependency installedPackageSet pn vr ln) sublibs+     -- Check whether a library exists and is visible.     -- We don't disambiguate between dependency on non-existent or private     -- library yet, so we just return a bool and later report a generic error.     visible lib = maybe                     False -- Does not even exist (wasn't in the depsMap)-                    (\ipi -> Installed.libVisibility ipi == LibraryVisibilityPublic+                    (\ipi -> IPI.libVisibility ipi == LibraryVisibilityPublic                           -- If the override is enabled, the visibility does                           -- not matter (it's handled externally)                           || allow_private_deps@@ -986,7 +962,7 @@                           -- This is only triggered when passing a component                           -- of the same package as --dependency, such as in:                           -- cabal-testsuite/PackageTests/ConfigureComponent/SubLib/setup-explicit.test.hs-                          || pkgName (Installed.sourcePackageId ipi) == pn)+                          || pkgName (IPI.sourcePackageId ipi) == pn)                     maybeIPI       where maybeIPI = Map.lookup (depName, CLibName lib) requiredDepsMap @@ -1000,7 +976,7 @@     :: Verbosity     -> ConfigFlags     -> ComponentRequestedSpec-    -> [Dependency]+    -> [PackageVersionConstraint]     -> (Dependency -> Bool) -- ^ tests if a dependency is satisfiable.                             -- Might say it's satisfiable even when not.     -> Compiler@@ -1040,7 +1016,7 @@     addExtraIncludeLibDirs pkg_descr =         let extraBi = mempty { extraLibDirs = configExtraLibDirs cfg                              , extraFrameworkDirs = configExtraFrameworkDirs cfg-                             , PD.includeDirs = configExtraIncludeDirs cfg}+                             , includeDirs = configExtraIncludeDirs cfg}             modifyLib l        = l{ libBuildInfo        = libBuildInfo l                                                           `mappend` extraBi }             modifyExecutable e = e{ buildInfo           = buildInfo e@@ -1072,13 +1048,13 @@            ++ "package flags.  To use this feature you must use "            ++ "GHC 7.9 or later." -    when (any (not.null.PD.reexportedModules) (PD.allLibraries pkg_descr)+    when (any (not.null.reexportedModules) (allLibraries pkg_descr)           && not (reexportedModulesSupported comp)) $         die' verbosity $              "Your compiler does not support module re-exports. To use "           ++ "this feature you must use GHC 7.9 or later." -    when (any (not.null.PD.signatures) (PD.allLibraries pkg_descr)+    when (any (not.null.signatures) (allLibraries pkg_descr)           && not (backpackSupported comp)) $         die' verbosity $                "Your compiler does not support Backpack. To use "@@ -1088,21 +1064,21 @@ configureDependencies     :: Verbosity     -> UseExternalInternalDeps-    -> Map PackageName (Maybe UnqualComponentName) -- ^ internal packages+    -> Set LibraryName     -> InstalledPackageIndex -- ^ installed packages     -> Map (PackageName, ComponentName) InstalledPackageInfo -- ^ required deps     -> PackageDescription     -> ComponentRequestedSpec     -> IO [PreExistingComponent] configureDependencies verbosity use_external_internal_deps-  internalPackageSet installedPackageSet requiredDepsMap pkg_descr enableSpec = do+  packageLibraries installedPackageSet requiredDepsMap pkg_descr enableSpec = do     let failedDeps :: [FailedDependency]         allPkgDeps :: [ResolvedDependency]         (failedDeps, allPkgDeps) = partitionEithers $ concat           [ fmap (\s -> (dep, s)) <$> status           | dep <- enabledBuildDepends pkg_descr enableSpec           , let status = selectDependency (package pkg_descr)-                  internalPackageSet installedPackageSet+                  packageLibraries installedPackageSet                   requiredDepsMap use_external_internal_deps dep ]          internalPkgDeps = [ pkgid@@ -1257,12 +1233,12 @@     | InternalDependency PackageId  data FailedDependency = DependencyNotExists PackageName-                      | DependencyMissingInternal PackageName PackageName+                      | DependencyMissingInternal PackageName LibraryName                       | DependencyNoVersion Dependency  -- | Test for a package dependency and record the version we have installed. selectDependency :: PackageId -- ^ Package id of current package-                 -> Map PackageName (Maybe UnqualComponentName)+                 -> Set LibraryName -- ^ package libraries                  -> InstalledPackageIndex  -- ^ Installed packages                  -> Map (PackageName, ComponentName) InstalledPackageInfo                     -- ^ Packages for which we have been given specific deps to@@ -1287,46 +1263,46 @@   --   -- We want "build-depends: MyLibrary" always to match the internal library   -- even if there is a newer installed library "MyLibrary-0.2".-  case Map.lookup dep_pkgname internalIndex of-    Just cname ->+  if dep_pkgname == pn+  then       if use_external_internal_deps-      then do_external (Just $ maybeToLibraryName cname) <$> Set.toList libs-      else do_internal-    _          ->-      do_external Nothing <$> Set.toList libs+      then do_external_internal <$> NES.toList libs+      else do_internal <$> NES.toList libs+  else+      do_external_external <$> NES.toList libs   where+    pn = packageName pkgid      -- It's an internal library, and we're not per-component build-    do_internal = [Right $ InternalDependency-                    $ PackageIdentifier dep_pkgname $ packageVersion pkgid]+    do_internal lib+        | Set.member lib internalIndex+        = Right $ InternalDependency $ PackageIdentifier dep_pkgname $ packageVersion pkgid +        | otherwise+        = Left $ DependencyMissingInternal dep_pkgname lib+     -- We have to look it up externally-    do_external :: Maybe LibraryName -> LibraryName -> Either FailedDependency DependencyResolution-    do_external is_internal lib = do+    do_external_external :: LibraryName -> Either FailedDependency DependencyResolution+    do_external_external lib = do       ipi <- case Map.lookup (dep_pkgname, CLibName lib) requiredDepsMap of         -- If we know the exact pkg to use, then use it.         Just pkginstance -> Right pkginstance         -- Otherwise we just pick an arbitrary instance of the latest version.-        Nothing ->-            case is_internal of-                Nothing -> do_external_external-                Just ln -> do_external_internal ln-      return $ ExternalDependency $ ipiToPreExistingComponent ipi--    -- It's an external package, normal situation-    do_external_external =-        case pickLastIPI $ PackageIndex.lookupDependency installedIndex dep_pkgname vr of+        Nothing -> case pickLastIPI $ PackageIndex.lookupDependency installedIndex dep_pkgname vr of           Nothing  -> Left (DependencyNotExists dep_pkgname)           Just pkg -> Right pkg+      return $ ExternalDependency $ ipiToPreExistingComponent ipi -    -- It's an internal library, being looked up externally-    do_external_internal-      :: LibraryName -> Either FailedDependency InstalledPackageInfo-    do_external_internal ln =-        case pickLastIPI $ PackageIndex.lookupInternalDependency installedIndex-                (packageName pkgid) vr ln of-          Nothing  -> Left (DependencyMissingInternal dep_pkgname (packageName pkgid))+    do_external_internal :: LibraryName -> Either FailedDependency DependencyResolution+    do_external_internal lib = do+      ipi <- case Map.lookup (dep_pkgname, CLibName lib) requiredDepsMap of+        -- If we know the exact pkg to use, then use it.+        Just pkginstance -> Right pkginstance+        Nothing -> case pickLastIPI $ PackageIndex.lookupInternalDependency installedIndex pn vr lib of+          -- It's an internal library, being looked up externally+          Nothing  -> Left (DependencyMissingInternal dep_pkgname lib)           Just pkg -> Right pkg+      return $ ExternalDependency $ ipiToPreExistingComponent ipi      pickLastIPI :: [(Version, [InstalledPackageInfo])] -> Maybe InstalledPackageInfo     pickLastIPI pkgs = safeHead . snd . last =<< nonEmpty pkgs@@ -1353,10 +1329,10 @@       ++ "Perhaps you need to download and install it from\n"       ++ hackageUrl ++ prettyShow pkgname ++ "?" -    reportFailedDependency (DependencyMissingInternal pkgname real_pkgname) =-         "internal dependency " ++ prettyShow pkgname ++ " not installed.\n"+    reportFailedDependency (DependencyMissingInternal pkgname lib) =+         "internal dependency " ++ prettyShow (prettyLibraryNameComponent lib) ++ " not installed.\n"       ++ "Perhaps you need to configure and install it first?\n"-      ++ "(This library was defined by " ++ prettyShow real_pkgname ++ ")"+      ++ "(This library was defined by " ++ prettyShow pkgname ++ ")"      reportFailedDependency (DependencyNoVersion dep) =         "cannot satisfy dependency " ++ prettyShow (simplifyDependency dep) ++ "\n"@@ -1459,10 +1435,10 @@ -- deps in the end. So we still need to remember which installed packages to -- pick. combinedConstraints-  :: [Dependency]+  :: [PackageVersionConstraint]   -> [GivenComponent]   -> InstalledPackageIndex-  -> Either String ([Dependency],+  -> Either String ([PackageVersionConstraint],                      Map (PackageName, ComponentName) InstalledPackageInfo) combinedConstraints constraints dependencies installedPackages = do @@ -1476,9 +1452,9 @@     return (allConstraints, idConstraintMap)    where-    allConstraints :: [Dependency]+    allConstraints :: [PackageVersionConstraint]     allConstraints = constraints-                  ++ [ thisPackageVersion (packageId pkg)+                  ++ [ thisPackageVersionConstraint (packageId pkg)                      | (_, _, _, Just pkg) <- dependenciesPkgInfo ]      idConstraintMap :: Map (PackageName, ComponentName) InstalledPackageInfo@@ -1660,7 +1636,7 @@     addPkgConfigBIBench = addPkgConfigBI benchmarkBuildInfo $                           \bench bi -> bench { benchmarkBuildInfo = bi } -    pkgconfigBuildInfo :: [PkgconfigDependency] -> NoCallStackIO BuildInfo+    pkgconfigBuildInfo :: [PkgconfigDependency] -> IO BuildInfo     pkgconfigBuildInfo []      = return mempty     pkgconfigBuildInfo pkgdeps = do       let pkgs = nub [ prettyShow pkg | PkgconfigDependency pkg _ <- pkgdeps ]@@ -1684,11 +1660,11 @@       (extraLibs',    ldflags')  = partition ("-l" `isPrefixOf`) ldflags       (extraLibDirs', ldflags'') = partition ("-L" `isPrefixOf`) ldflags'   in mempty {-       PD.includeDirs  = map (drop 2) includeDirs',-       PD.extraLibs    = map (drop 2) extraLibs',-       PD.extraLibDirs = map (drop 2) extraLibDirs',-       PD.ccOptions    = cflags',-       PD.ldOptions    = ldflags''+       includeDirs  = map (drop 2) includeDirs',+       extraLibs    = map (drop 2) extraLibs',+       extraLibDirs = map (drop 2) extraLibDirs',+       ccOptions    = cflags',+       ldOptions    = ldflags''      }  -- -----------------------------------------------------------------------------@@ -1734,8 +1710,8 @@                missingHdr  <- findOffendingHdr                explainErrors missingHdr missingLibs)       where-        allHeaders = collectField PD.includes-        allLibs    = collectField PD.extraLibs+        allHeaders = collectField includes+        allLibs    = collectField extraLibs          ifBuildsWith headers args success failure = do             checkDuplicateHeaders@@ -1755,16 +1731,16 @@         -- including file.  As such we need to take drastic measures         -- and delete the offending file in the source directory.         checkDuplicateHeaders = do-          let relIncDirs = filter (not . isAbsolute) (collectField PD.includeDirs)+          let relIncDirs = filter (not . isAbsolute) (collectField includeDirs)               isHeader   = isSuffixOf ".h"-          genHeaders <- forM relIncDirs $ \dir ->+          genHeaders <- for relIncDirs $ \dir ->             fmap (dir </>) . filter isHeader <$>             listDirectory (buildDir lbi </> dir) `catchIO` (\_ -> return [])-          srcHeaders <- forM relIncDirs $ \dir ->+          srcHeaders <- for relIncDirs $ \dir ->             fmap (dir </>) . filter isHeader <$>             listDirectory (baseDir lbi </> dir) `catchIO` (\_ -> return [])           let commonHeaders = concat genHeaders `intersect` concat srcHeaders-          forM_ commonHeaders $ \hdr -> do+          for_ commonHeaders $ \hdr -> do             warn verbosity $ "Duplicate header found in "                           ++ (buildDir lbi </> hdr)                           ++ " and "@@ -1776,7 +1752,7 @@         findOffendingHdr =             ifBuildsWith allHeaders ccArgs                          (return Nothing)-                         (go . Prelude.tail . inits $ allHeaders) -- inits always contains at least []+                         (go . Unsafe.tail . inits $ allHeaders) -- inits always contains at least []             where               go [] = return Nothing       -- cannot happen               go (hdrs:hdrsInits) =@@ -1808,42 +1784,42 @@                      ++ [ "-I" ++ buildDir lbi </> "autogen" ]                      -- `configure' may generate headers in the build directory                      ++ [ "-I" ++ buildDir lbi </> dir-                        | dir <- ordNub (collectField PD.includeDirs)+                        | dir <- ordNub (collectField includeDirs)                         , not (isAbsolute dir)]                      -- we might also reference headers from the                      -- packages directory.                      ++ [ "-I" ++ baseDir lbi </> dir-                        | dir <- ordNub (collectField PD.includeDirs)+                        | dir <- ordNub (collectField includeDirs)                         , not (isAbsolute dir)]-                     ++ [ "-I" ++ dir | dir <- ordNub (collectField PD.includeDirs)+                     ++ [ "-I" ++ dir | dir <- ordNub (collectField includeDirs)                                       , isAbsolute dir]                      ++ ["-I" ++ baseDir lbi]-                     ++ collectField PD.cppOptions-                     ++ collectField PD.ccOptions+                     ++ collectField cppOptions+                     ++ collectField ccOptions                      ++ [ "-I" ++ dir                         | dir <- ordNub [ dir                                         | dep <- deps-                                        , dir <- Installed.includeDirs dep ]+                                        , dir <- IPI.includeDirs dep ]                                  -- dedupe include dirs of dependencies                                  -- to prevent quadratic blow-up                         ]                      ++ [ opt                         | dep <- deps-                        , opt <- Installed.ccOptions dep ]+                        , opt <- IPI.ccOptions dep ]          commonCcArgs  = commonCppArgs-                     ++ collectField PD.ccOptions+                     ++ collectField ccOptions                      ++ [ opt                         | dep <- deps-                        , opt <- Installed.ccOptions dep ]+                        , opt <- IPI.ccOptions dep ]          commonLdArgs  = [ "-L" ++ dir-                        | dir <- ordNub (collectField PD.extraLibDirs) ]-                     ++ collectField PD.ldOptions+                        | dir <- ordNub (collectField extraLibDirs) ]+                     ++ collectField ldOptions                      ++ [ "-L" ++ dir                         | dir <- ordNub [ dir                                         | dep <- deps-                                        , dir <- Installed.libraryDirs dep ]+                                        , dir <- IPI.libraryDirs dep ]                         ]                      --TODO: do we also need dependent packages' ld options?         makeLdArgs libs = [ "-l"++lib | lib <- libs ] ++ commonLdArgs@@ -2012,8 +1988,8 @@         traverse_ (doCheck pkgr) ipkgs       where         doCheck pkgr ipkg-          | maybe False (== pkgr) (Installed.pkgRoot ipkg)-          = forM_ (Installed.libraryDirs ipkg) $ \libdir -> do+          | maybe False (== pkgr) (IPI.pkgRoot ipkg)+          = for_ (IPI.libraryDirs ipkg) $ \libdir -> do               -- When @prefix@ is not under @pkgroot@,               -- @shortRelativePath prefix pkgroot@ will return a path with               -- @..@s and following check will fail without @canonicalizePath@.
Distribution/Simple/Doctest.hs view
@@ -25,8 +25,8 @@ import qualified Distribution.Simple.GHCJS as GHCJS  -- local-import Distribution.PackageDescription as PD hiding (Flag)-import Distribution.Simple.Compiler hiding (Flag)+import Distribution.PackageDescription+import Distribution.Simple.Compiler import Distribution.Simple.Program.GHC import Distribution.Simple.Program import Distribution.Simple.PreProcess
Distribution/Simple/Flag.hs view
@@ -22,6 +22,7 @@   toFlag,   fromFlag,   fromFlagOrDefault,+  flagElim,   flagToMaybe,   flagToList,   maybeToFlag,@@ -104,6 +105,11 @@ flagToMaybe :: Flag a -> Maybe a flagToMaybe (Flag x) = Just x flagToMaybe NoFlag   = Nothing++-- | @since 3.4.0.0+flagElim :: b -> (a -> b) -> Flag a -> b+flagElim n _ NoFlag   = n+flagElim _ f (Flag x) = f x  flagToList :: Flag a -> [a] flagToList (Flag x) = [x]
Distribution/Simple/GHC.hs view
@@ -51,6 +51,7 @@         registerPackage,         componentGhcOptions,         componentCcGhcOptions,+        getGhcAppDir,         getLibDir,         isDynamic,         getGlobalPackageDB,@@ -73,6 +74,7 @@ import Distribution.Compat.Prelude  import qualified Distribution.Simple.GHC.Internal as Internal+import Distribution.CabalSpecVersion import Distribution.Simple.GHC.ImplInfo import Distribution.Simple.GHC.EnvironmentParser import Distribution.PackageDescription.Utils (cabalBug)@@ -98,15 +100,11 @@ import Distribution.Simple.Program.GHC import Distribution.Simple.Setup import qualified Distribution.Simple.Setup as Cabal-import Distribution.Simple.Compiler hiding (Flag)+import Distribution.Simple.Compiler import Distribution.Version import Distribution.System import Distribution.Verbosity import Distribution.Pretty-import Distribution.Types.ForeignLib-import Distribution.Types.ForeignLibType-import Distribution.Types.ForeignLibOption-import Distribution.Types.UnqualComponentName import Distribution.Utils.NubList import Language.Haskell.Extension @@ -138,11 +136,12 @@       (userMaybeSpecifyPath "ghc" hcPath conf0)   let implInfo = ghcVersionImplInfo ghcVersion -  -- Cabal currently supports ghc >= 7.0.1 && < 8.12-  unless (ghcVersion < mkVersion [8,12]) $+  -- Cabal currently supports ghc >= 7.0.1 && < 9.1+  -- ... and the following odd development version+  unless (ghcVersion < mkVersion [9,2]) $     warn verbosity $          "Unknown/unsupported 'ghc' version detected "-      ++ "(Cabal " ++ prettyShow cabalVersion ++ " supports 'ghc' version < 8.12): "+      ++ "(Cabal " ++ prettyShow cabalVersion ++ " supports 'ghc' version < 9.1): "       ++ programPath ghcProg ++ " is version " ++ prettyShow ghcVersion    -- This is slightly tricky, we have to configure ghc first, then we use the@@ -182,7 +181,7 @@    ghcInfo <- Internal.getGhcInfo verbosity implInfo ghcProg   let ghcInfoMap = Map.fromList ghcInfo-      extensions = -- workaround https://ghc.haskell.org/ticket/11214+      extensions = -- workaround https://gitlab.haskell.org/ghc/ghc/-/issues/11214                    filterExt JavaScriptFFI $                    -- see 'filterExtTH' comment below                    filterExtTH $ extensions0@@ -365,6 +364,12 @@   where     ghcProg = fromMaybe (error "GHC.toPackageIndex: no ghc program") $ lookupProgram ghcProgram progdb +-- | Return the 'FilePath' to the GHC application data directory.+--+-- @since 3.4.0.0+getGhcAppDir :: IO FilePath+getGhcAppDir = getAppUserDataDirectory "ghc"+ getLibDir :: Verbosity -> LocalBuildInfo -> IO FilePath getLibDir verbosity lbi =     dropWhileEndLE isSpace `fmap`@@ -385,12 +390,12 @@  -- | Return the 'FilePath' to the per-user GHC package database. getUserPackageDB-  :: Verbosity -> ConfiguredProgram -> Platform -> NoCallStackIO FilePath+  :: Verbosity -> ConfiguredProgram -> Platform -> IO FilePath getUserPackageDB _verbosity ghcProg platform = do     -- It's rather annoying that we have to reconstruct this, because ghc     -- hides this information from us otherwise. But for certain use cases     -- like change monitoring it really can't remain hidden.-    appdir <- getAppUserDataDirectory "ghc"+    appdir <- getGhcAppDir     return (appdir </> platformAndVersion </> packageConfFileName)   where     platformAndVersion = Internal.ghcPlatformAndVersionString@@ -426,7 +431,7 @@   die' verbosity $         "With current ghc versions the global package db is always used "      ++ "and must be listed first. This ghc limitation is lifted in GHC 7.6,"-     ++ "see http://ghc.haskell.org/trac/ghc/ticket/5977"+     ++ "see https://gitlab.haskell.org/ghc/ghc/-/issues/5977" checkPackageDbStackPre76 verbosity _ =   die' verbosity $ "If the global package db is specified, it must be "      ++ "specified first and cannot be specified multiple times"@@ -1174,7 +1179,7 @@  -- | Locate and return the 'BuildSources' required to build and link. gbuildSources :: Verbosity-              -> Version -- ^ specVersion+              -> CabalSpecVersion               -> FilePath               -> GBuildMode               -> IO BuildSources@@ -1193,7 +1198,7 @@        if isHaskell main         then-          if specVer < mkVersion [2] && (mainModName `elem` otherModNames)+          if specVer < CabalSpecV2_0 && (mainModName `elem` otherModNames)           then do              -- The cabal manual clearly states that `other-modules` is              -- intended for non-main modules.  However, there's at least one@@ -1683,7 +1688,7 @@  -- | Returns True if the modification date of the given source file is newer than -- the object file we last compiled for it, or if no object file exists yet.-checkNeedsRecompilation :: FilePath -> GhcOptions -> NoCallStackIO Bool+checkNeedsRecompilation :: FilePath -> GhcOptions -> IO Bool checkNeedsRecompilation filename opts = filename `moreRecentFile` oname     where oname = getObjectFileName filename opts @@ -1699,7 +1704,7 @@ -- Calculates relative RPATHs when 'relocatable' is set. getRPaths :: LocalBuildInfo           -> ComponentLocalBuildInfo -- ^ Component we are building-          -> NoCallStackIO (NubListR FilePath)+          -> IO (NubListR FilePath) getRPaths lbi clbi | supportRPaths hostOS = do     libraryPaths <- depLibraryPaths False (relocatable lbi) lbi clbi     let hostPref = case hostOS of@@ -1940,7 +1945,7 @@     whenShared $ if       -- The behavior for "extra-bundled-libraries" changed in version 2.5.0.       -- See ghc issue #15837 and Cabal PR #5855.-      | specVersion pkg < mkVersion [2,5] -> do+      | specVersion pkg < CabalSpecV3_0 -> do         sequence_ [ installShared builtDir dynlibTargetDir               (mkGenericSharedLibName platform compiler_id (l ++ f))           | l <- getHSLibraryName uid : extraBundledLibs (libBuildInfo lib)@@ -2053,7 +2058,7 @@       let ghcProg = fromMaybe (error "GHC.pkgRoot: no ghc program") $ lookupProgram ghcProgram (withPrograms lbi)       in  fmap takeDirectory (getGlobalPackageDB verbosity ghcProg)     pkgRoot' UserPackageDB = do-      appDir <- getAppUserDataDirectory "ghc"+      appDir <- getGhcAppDir       let ver      = compilerVersion (compiler lbi)           subdir   = System.Info.arch ++ '-':System.Info.os                      ++ '-':prettyShow ver
Distribution/Simple/GHC/EnvironmentParser.hs view
@@ -17,8 +17,6 @@ import Distribution.Types.UnitId     ( mkUnitId ) -import Control.Exception-    ( Exception, throwIO ) import qualified Text.Parsec as P import Text.Parsec.String     ( Parser, parseFromFile )
Distribution/Simple/GHC/Internal.hs view
@@ -51,12 +51,10 @@ import Distribution.Simple.GHC.ImplInfo import Distribution.Types.ComponentLocalBuildInfo import Distribution.Backpack-import Distribution.InstalledPackageInfo-import qualified Distribution.InstalledPackageInfo as InstalledPackageInfo-import Distribution.PackageDescription as PD hiding (Flag)-import Distribution.Compat.Exception+import qualified Distribution.InstalledPackageInfo as IPI+import Distribution.PackageDescription import Distribution.Lex-import Distribution.Simple.Compiler hiding (Flag)+import Distribution.Simple.Compiler import Distribution.Simple.Program.GHC import Distribution.Simple.Setup import qualified Distribution.ModuleName as ModuleName@@ -65,6 +63,7 @@ import Distribution.Types.UnitId import Distribution.Types.LocalBuildInfo import Distribution.Types.TargetInfo+import Distribution.Types.ModuleRenaming import Distribution.Simple.Utils import Distribution.Simple.BuildPaths import Distribution.System@@ -176,7 +175,7 @@             | (flags', ""):_ <- reads flags -> flags'             | otherwise -> tokenizeQuotedWords flags -    configureGcc :: Verbosity -> ConfiguredProgram -> NoCallStackIO ConfiguredProgram+    configureGcc :: Verbosity -> ConfiguredProgram -> IO ConfiguredProgram     configureGcc _v gccProg = do       return gccProg {         programDefaultArgs = programDefaultArgs gccProg@@ -216,7 +215,7 @@         else return ldProg  getLanguages :: Verbosity -> GhcImplInfo -> ConfiguredProgram-             -> NoCallStackIO [(Language, String)]+             -> IO [(Language, String)] getLanguages _ implInfo _   -- TODO: should be using --supported-languages rather than hard coding   | supportsHaskell2010 implInfo = return [(Haskell98,   "-XHaskell98")@@ -281,10 +280,10 @@                                           ,autogenPackageModulesDir lbi                                           ,odir]                                           -- includes relative to the package-                                          ++ PD.includeDirs bi+                                          ++ includeDirs bi                                           -- potential includes generated by `configure'                                           -- in the build directory-                                          ++ [buildDir lbi </> dir | dir <- PD.includeDirs bi],+                                          ++ [buildDir lbi </> dir | dir <- includeDirs bi],       ghcOptHideAllPackages= toFlag True,       ghcOptPackageDBs     = withPackageDB lbi,       ghcOptPackages       = toNubListR $ mkGhcOptPackages clbi,@@ -296,7 +295,7 @@                                   MinimalDebugInfo -> ["-g1"]                                   NormalDebugInfo  -> ["-g"]                                   MaximalDebugInfo -> ["-g3"]) ++-                                  PD.ccOptions bi,+                                  ccOptions bi,       ghcOptObjDir         = toFlag odir     } @@ -317,10 +316,10 @@                                           ,autogenPackageModulesDir lbi                                           ,odir]                                           -- includes relative to the package-                                          ++ PD.includeDirs bi+                                          ++ includeDirs bi                                           -- potential includes generated by `configure'                                           -- in the build directory-                                          ++ [buildDir lbi </> dir | dir <- PD.includeDirs bi],+                                          ++ [buildDir lbi </> dir | dir <- includeDirs bi],       ghcOptHideAllPackages= toFlag True,       ghcOptPackageDBs     = withPackageDB lbi,       ghcOptPackages       = toNubListR $ mkGhcOptPackages clbi,@@ -332,7 +331,7 @@                                   MinimalDebugInfo -> ["-g1"]                                   NormalDebugInfo  -> ["-g"]                                   MaximalDebugInfo -> ["-g3"]) ++-                                  PD.cxxOptions bi,+                                  cxxOptions bi,       ghcOptObjDir         = toFlag odir     } @@ -353,10 +352,10 @@                                           ,autogenPackageModulesDir lbi                                           ,odir]                                           -- includes relative to the package-                                          ++ PD.includeDirs bi+                                          ++ includeDirs bi                                           -- potential includes generated by `configure'                                           -- in the build directory-                                          ++ [buildDir lbi </> dir | dir <- PD.includeDirs bi],+                                          ++ [buildDir lbi </> dir | dir <- includeDirs bi],       ghcOptHideAllPackages= toFlag True,       ghcOptPackageDBs     = withPackageDB lbi,       ghcOptPackages       = toNubListR $ mkGhcOptPackages clbi,@@ -368,7 +367,7 @@                                   MinimalDebugInfo -> ["-g1"]                                   NormalDebugInfo  -> ["-g"]                                   MaximalDebugInfo -> ["-g3"]) ++-                                  PD.asmOptions bi,+                                  asmOptions bi,       ghcOptObjDir         = toFlag odir     } @@ -412,14 +411,14 @@                                            ,autogenPackageModulesDir lbi                                            ,odir]                                            -- includes relative to the package-                                           ++ PD.includeDirs bi+                                           ++ includeDirs bi                                            -- potential includes generated by `configure'                                            -- in the build directory-                                           ++ [buildDir lbi </> dir | dir <- PD.includeDirs bi],+                                           ++ [buildDir lbi </> dir | dir <- includeDirs bi],       ghcOptCppOptions      = cppOptions bi,       ghcOptCppIncludes     = toNubListR $                               [autogenComponentModulesDir lbi clbi </> cppHeaderName],-      ghcOptFfiIncludes     = toNubListR $ PD.includes bi,+      ghcOptFfiIncludes     = toNubListR $ includes bi,       ghcOptObjDir          = toFlag odir,       ghcOptHiDir           = toFlag odir,       ghcOptStubDir         = toFlag odir,@@ -461,10 +460,10 @@                                           ,autogenPackageModulesDir lbi                                           ,odir]                                           -- includes relative to the package-                                          ++ PD.includeDirs bi+                                          ++ includeDirs bi                                           -- potential includes generated by `configure'                                           -- in the build directory-                                          ++ [buildDir lbi </> dir | dir <- PD.includeDirs bi],+                                          ++ [buildDir lbi </> dir | dir <- includeDirs bi],       ghcOptCppOptions     = cppOptions bi,       ghcOptCppIncludes    = toNubListR $                              [autogenComponentModulesDir lbi clbi </> cppHeaderName],@@ -507,7 +506,7 @@ -- Module_split directory for each module. getHaskellObjects :: GhcImplInfo -> Library -> LocalBuildInfo                   -> ComponentLocalBuildInfo-                  -> FilePath -> String -> Bool -> NoCallStackIO [FilePath]+                  -> FilePath -> String -> Bool -> IO [FilePath] getHaskellObjects _implInfo lib lbi clbi pref wanted_obj_ext allow_split_objs   | splitObjs lbi && allow_split_objs = do         let splitSuffix = "_" ++ wanted_obj_ext ++ "_split"@@ -527,21 +526,15 @@                  -> [(OpenUnitId, ModuleRenaming)] mkGhcOptPackages = componentIncludes -substTopDir :: FilePath -> InstalledPackageInfo -> InstalledPackageInfo+substTopDir :: FilePath -> IPI.InstalledPackageInfo -> IPI.InstalledPackageInfo substTopDir topDir ipo  = ipo {-       InstalledPackageInfo.importDirs-           = map f (InstalledPackageInfo.importDirs ipo),-       InstalledPackageInfo.libraryDirs-           = map f (InstalledPackageInfo.libraryDirs ipo),-       InstalledPackageInfo.includeDirs-           = map f (InstalledPackageInfo.includeDirs ipo),-       InstalledPackageInfo.frameworkDirs-           = map f (InstalledPackageInfo.frameworkDirs ipo),-       InstalledPackageInfo.haddockInterfaces-           = map f (InstalledPackageInfo.haddockInterfaces ipo),-       InstalledPackageInfo.haddockHTMLs-           = map f (InstalledPackageInfo.haddockHTMLs ipo)+       IPI.importDirs        = map f (IPI.importDirs ipo),+       IPI.libraryDirs       = map f (IPI.libraryDirs ipo),+       IPI.includeDirs       = map f (IPI.includeDirs ipo),+       IPI.frameworkDirs     = map f (IPI.frameworkDirs ipo),+       IPI.haddockInterfaces = map f (IPI.haddockInterfaces ipo),+       IPI.haddockHTMLs      = map f (IPI.haddockHTMLs ipo)    }     where f ('$':'t':'o':'p':'d':'i':'r':rest) = topDir ++ rest           f x = x@@ -563,7 +556,7 @@         mcsPP <- lookupEnv "CABAL_SANDBOX_PACKAGE_PATH"         unless (mPP == mcsPP) abort     where-        lookupEnv :: String -> NoCallStackIO (Maybe String)+        lookupEnv :: String -> IO (Maybe String)         lookupEnv name = (Just `fmap` getEnv name)                          `catchIO` const (return Nothing)         abort =@@ -652,7 +645,7 @@                         -> Platform  -- ^ the GHC target platform                         -> Version   -- ^ the GHC version                         -> [GhcEnvironmentFileEntry] -- ^ the content-                        -> NoCallStackIO FilePath+                        -> IO FilePath writeGhcEnvironmentFile directory platform ghcversion entries = do     writeFileAtomic envfile . BS.pack . renderGhcEnvironmentFile $ entries     return envfile@@ -676,9 +669,9 @@ renderGhcEnvironmentFileEntry :: GhcEnvironmentFileEntry -> String renderGhcEnvironmentFileEntry entry = case entry of     GhcEnvFileComment   comment   -> format comment-      where format = intercalate "\n" . map ("--" <+>) . lines-            pref <+> ""  = pref-            pref <+> str = pref ++ " " ++ str+      where format = intercalate "\n" . map ("--" <++>) . lines+            pref <++> ""  = pref+            pref <++> str = pref ++ " " ++ str     GhcEnvFilePackageId pkgid     -> "package-id " ++ prettyShow pkgid     GhcEnvFilePackageDb pkgdb     ->       case pkgdb of
Distribution/Simple/GHCJS.hs view
@@ -63,15 +63,12 @@ import Distribution.Simple.Program.GHC import Distribution.Simple.Setup import qualified Distribution.Simple.Setup as Cabal-import Distribution.Simple.Compiler hiding (Flag)+import Distribution.Simple.Compiler+import Distribution.CabalSpecVersion import Distribution.Version import Distribution.System import Distribution.Verbosity import Distribution.Pretty-import Distribution.Types.ForeignLib-import Distribution.Types.ForeignLibType-import Distribution.Types.ForeignLibOption-import Distribution.Types.UnqualComponentName import Distribution.Utils.NubList  import Control.Monad (msum)@@ -103,7 +100,7 @@     warn verbosity $          "Unknown/unsupported 'ghc' version detected "       ++ "(Cabal " ++ prettyShow cabalVersion ++ " supports 'ghc' version < 8.8): "-      ++ programPath ghcjsProg ++ " is is based on GHC version " +++      ++ programPath ghcjsProg ++ " is based on GHC version " ++       prettyShow ghcjsGhcVersion    let implInfo = ghcjsVersionImplInfo ghcjsVersion ghcjsGhcVersion@@ -296,7 +293,7 @@      getProgramOutput verbosity ghcProg ["--print-global-package-db"]  -- | Return the 'FilePath' to the per-user GHC package database.-getUserPackageDB :: Verbosity -> ConfiguredProgram -> Platform -> NoCallStackIO FilePath+getUserPackageDB :: Verbosity -> ConfiguredProgram -> Platform -> IO FilePath getUserPackageDB _verbosity ghcjsProg platform = do     -- It's rather annoying that we have to reconstruct this, because ghc     -- hides this information from us otherwise. But for certain use cases@@ -320,7 +317,7 @@   | GlobalPackageDB `notElem` rest =   die' verbosity $ "With current ghc versions the global package db is always used "      ++ "and must be listed first. This ghc limitation may be lifted in "-     ++ "future, see http://ghc.haskell.org/trac/ghc/ticket/5977"+     ++ "future, see https://gitlab.haskell.org/ghc/ghc/-/issues/5977" checkPackageDbStack verbosity _ =   die' verbosity $ "If the global package db is specified, it must be "      ++ "specified first and cannot be specified multiple times"@@ -963,7 +960,7 @@  -- | Locate and return the 'BuildSources' required to build and link. gbuildSources :: Verbosity-              -> Version -- ^ specVersion+              -> CabalSpecVersion               -> FilePath               -> GBuildMode               -> IO BuildSources@@ -982,7 +979,7 @@        if isHaskell main         then-          if specVer < mkVersion [2] && (mainModName `elem` otherModNames)+          if specVer < CabalSpecV2_0 && (mainModName `elem` otherModNames)           then do              -- The cabal manual clearly states that `other-modules` is              -- intended for non-main modules.  However, there's at least one@@ -1464,7 +1461,7 @@  -- | Returns True if the modification date of the given source file is newer than -- the object file we last compiled for it, or if no object file exists yet.-checkNeedsRecompilation :: FilePath -> GhcOptions -> NoCallStackIO Bool+checkNeedsRecompilation :: FilePath -> GhcOptions -> IO Bool checkNeedsRecompilation filename opts = filename `moreRecentFile` oname     where oname = getObjectFileName filename opts @@ -1480,7 +1477,7 @@ -- Calculates relative RPATHs when 'relocatable' is set. getRPaths :: LocalBuildInfo           -> ComponentLocalBuildInfo -- ^ Component we are building-          -> NoCallStackIO (NubListR FilePath)+          -> IO (NubListR FilePath) getRPaths lbi clbi | supportRPaths hostOS = do     libraryPaths <- depLibraryPaths False (relocatable lbi) lbi clbi     let hostPref = case hostOS of
Distribution/Simple/Glob.hs view
@@ -28,11 +28,9 @@ import Prelude () import Distribution.Compat.Prelude -import Control.Monad (guard)-+import Distribution.CabalSpecVersion import Distribution.Simple.Utils import Distribution.Verbosity-import Distribution.Version  import System.Directory (getDirectoryContents, doesDirectoryExist, doesFileExist) import System.FilePath (joinPath, splitExtensions, splitDirectories, takeFileName, (</>), (<.>))@@ -176,7 +174,7 @@       MultiDotEnabled -> Just (GlobMatch ())   | otherwise = Nothing -parseFileGlob :: Version -> FilePath -> Either GlobSyntaxError Glob+parseFileGlob :: CabalSpecVersion -> FilePath -> Either GlobSyntaxError Glob parseFileGlob version filepath = case reverse (splitDirectories filepath) of   [] ->         Left EmptyGlob@@ -200,14 +198,14 @@                      | otherwise           -> Right (FinalLit filename)         foldM addStem (GlobFinal pat) segments   where-    allowGlob = version >= mkVersion [1,6]-    allowGlobStar = version >= mkVersion [2,4]+    allowGlob     = version >= CabalSpecV1_6+    allowGlobStar = version >= CabalSpecV2_4     addStem pat seg       | '*' `elem` seg = Left StarInDirectory       | otherwise      = Right (GlobStem seg pat)     multidot-      | version >= mkVersion [2,4] = MultiDotEnabled-      | otherwise = MultiDotDisabled+      | version >= CabalSpecV2_4 = MultiDotEnabled+      | otherwise                = MultiDotDisabled  -- | This will 'die'' when the glob matches no files, or if the glob -- refers to a missing directory, or if the glob fails to parse.@@ -222,7 +220,7 @@ -- prefix. -- -- The second 'FilePath' is the glob itself.-matchDirFileGlob :: Verbosity -> Version -> FilePath -> FilePath -> IO [FilePath]+matchDirFileGlob :: Verbosity -> CabalSpecVersion -> FilePath -> FilePath -> IO [FilePath] matchDirFileGlob verbosity version dir filepath = case parseFileGlob version filepath of   Left err -> die' verbosity $ explainGlobSyntaxError filepath err   Right glob -> do
Distribution/Simple/Haddock.hs view
@@ -42,8 +42,8 @@ import Distribution.Types.ExposedModule import Distribution.Package import qualified Distribution.ModuleName as ModuleName-import Distribution.PackageDescription as PD hiding (Flag)-import Distribution.Simple.Compiler hiding (Flag)+import Distribution.PackageDescription+import Distribution.Simple.Compiler import Distribution.Simple.Glob import Distribution.Simple.Program.GHC import Distribution.Simple.Program.ResponseFile@@ -365,7 +365,7 @@     , argTitle = Flag $ showPkg ++ subtitle     }   where-    desc = PD.description pkg_descr+    desc = description pkg_descr     showPkg = prettyShow (packageId pkg_descr)     subtitle         | ShortText.null (synopsis pkg_descr) = ""@@ -702,7 +702,7 @@ -- HTML paths, and an optional warning for packages with missing documentation. haddockPackagePaths :: [InstalledPackageInfo]                     -> Maybe (InstalledPackageInfo -> FilePath)-                    -> NoCallStackIO ([( FilePath        -- path to interface+                    -> IO ([( FilePath        -- path to interface                                                          -- file                                         , Maybe FilePath  -- url to html
Distribution/Simple/HaskellSuite.hs view
@@ -6,13 +6,10 @@ import Prelude () import Distribution.Compat.Prelude -import Data.Either (partitionEithers)--import qualified Data.Map as Map (empty) import qualified Data.List.NonEmpty as NE  import Distribution.Simple.Program-import Distribution.Simple.Compiler as Compiler+import Distribution.Simple.Compiler import Distribution.Simple.Utils import Distribution.Simple.BuildPaths import Distribution.Verbosity@@ -25,7 +22,6 @@ import Distribution.PackageDescription import Distribution.Simple.LocalBuildInfo import Distribution.System (Platform)-import Distribution.Compat.Exception import Language.Haskell.Extension import Distribution.Simple.Program.Builtin @@ -79,11 +75,11 @@       let         comp = Compiler {           compilerId             = CompilerId (HaskellSuite compName) compVersion,-          compilerAbiTag         = Compiler.NoAbiTag,+          compilerAbiTag         = NoAbiTag,           compilerCompat         = [],           compilerLanguages      = languages,           compilerExtensions     = extensions,-          compilerProperties     = Map.empty+          compilerProperties     = mempty         }        return (comp, confdCompiler, progdb2)@@ -106,7 +102,7 @@       simpleParsec versionStr   return (name, version) -getExtensions :: Verbosity -> ConfiguredProgram -> IO [(Extension, Maybe Compiler.Flag)]+getExtensions :: Verbosity -> ConfiguredProgram -> IO [(Extension, Maybe CompilerFlag)] getExtensions verbosity prog = do   extStrs <-     lines `fmap`@@ -114,7 +110,7 @@   return     [ (ext, Just $ "-X" ++ prettyShow ext) | Just ext <- map simpleParsec extStrs ] -getLanguages :: Verbosity -> ConfiguredProgram -> IO [(Language, Compiler.Flag)]+getLanguages :: Verbosity -> ConfiguredProgram -> IO [(Language, CompilerFlag)] getLanguages verbosity prog = do   langStrs <-     lines `fmap`
Distribution/Simple/InstallDirs.hs view
@@ -465,7 +465,7 @@ -- --------------------------------------------------------------------------- -- Internal utilities -getWindowsProgramFilesDir :: NoCallStackIO FilePath+getWindowsProgramFilesDir :: IO FilePath getWindowsProgramFilesDir = do #ifdef mingw32_HOST_OS   m <- shGetFolderPath csidl_PROGRAM_FILES@@ -475,7 +475,7 @@   return (fromMaybe "C:\\Program Files" m)  #ifdef mingw32_HOST_OS-shGetFolderPath :: CInt -> NoCallStackIO (Maybe FilePath)+shGetFolderPath :: CInt -> IO (Maybe FilePath) shGetFolderPath n =   allocaArray long_path_size $ \pPath -> do      r <- c_SHGetFolderPath nullPtr n nullPtr 0 pPath
Distribution/Simple/LocalBuildInfo.hs view
@@ -190,7 +190,7 @@                 -> Bool -- ^ Generate prefix-relative library paths                 -> LocalBuildInfo                 -> ComponentLocalBuildInfo -- ^ Component that is being built-                -> NoCallStackIO [FilePath]+                -> IO [FilePath] depLibraryPaths inplace relative lbi clbi = do     let pkgDescr    = localPkgDescr lbi         installDirs = absoluteComponentInstallDirs pkgDescr lbi (componentUnitId clbi) NoCopyDest
Distribution/Simple/PackageIndex.hs view
@@ -77,6 +77,7 @@   searchByName,   SearchResult(..),   searchByNameSubstring,+  searchWithPredicate,    -- ** Bulk queries   allPackages,@@ -527,14 +528,18 @@ -- searchByNameSubstring :: PackageIndex a -> String -> [a] searchByNameSubstring index searchterm =+  searchWithPredicate index (\n -> lsearchterm `isInfixOf` lowercase n)+  where lsearchterm = lowercase searchterm++-- | @since 3.4.0.0+searchWithPredicate :: PackageIndex a -> (String -> Bool) -> [a]+searchWithPredicate index predicate =   [ pkg   -- Don't match internal packages   | ((pname, LMainLibName), pvers) <- Map.toList (packageIdIndex index)-  , lsearchterm `isInfixOf` lowercase (unPackageName pname)+  , predicate (unPackageName pname)   , pkgs <- Map.elems pvers   , pkg <- pkgs ]-  where lsearchterm = lowercase searchterm-  -- -- * Special queries
Distribution/Simple/PreProcess.hs view
@@ -53,9 +53,6 @@ import Distribution.Pretty import Distribution.Version import Distribution.Verbosity-import Distribution.Types.ForeignLib-import Distribution.Types.LibraryName-import Distribution.Types.UnqualComponentName  import System.Directory (doesFileExist) import System.Info (os, arch)@@ -123,12 +120,6 @@ -- preprocessor's output name format. type PreProcessorExtras = FilePath -> IO [FilePath] --- | A newtype around 'PreProcessorExtras', useful for storing--- 'PreProcessorExtras' inside of another type constructor (e.g., a list)--- without impredicativity (recall that the 'IO' type, which is contained in--- 'PreProcessorExtras', is a synonym for @'HasCallStack' => Prelude.IO@, which--- is a polymorphic type).-newtype WrappedPreProcessorExtras = WrapPPE { unWrapPPE :: PreProcessorExtras }  mkSimplePreProcessor :: (FilePath -> FilePath -> Verbosity -> IO ())                       -> (FilePath, FilePath)@@ -701,8 +692,8 @@   ]  -- |Standard preprocessors with possible extra C sources: c2hs, hsc2hs.-knownExtrasHandlers :: [ WrappedPreProcessorExtras ]-knownExtrasHandlers = [ WrapPPE ppC2hsExtras, WrapPPE ppHsc2hsExtras ]+knownExtrasHandlers :: [ PreProcessorExtras ]+knownExtrasHandlers = [ ppC2hsExtras, ppHsc2hsExtras ]  -- | Find any extra C sources generated by preprocessing that need to -- be added to the component (addresses issue #238).@@ -740,7 +731,7 @@     pp :: FilePath -> IO [FilePath]     pp dir = (map (dir </>) . filter not_sub . concat)           <$> for knownExtrasHandlers-                (withLexicalCallStack (\f -> f dir) . unWrapPPE)+                (withLexicalCallStack (\f -> f dir))     -- TODO: This is a terrible hack to work around #3545 while we don't     -- reorganize the directory layout.  Basically, for the main     -- library, we might accidentally pick up autogenerated sources for
Distribution/Simple/Program/Builtin.hs view
@@ -54,7 +54,6 @@ import Distribution.Simple.Program.Run import Distribution.Simple.Program.Types import Distribution.Simple.Utils-import Distribution.Compat.Exception import Distribution.Verbosity import Distribution.Version @@ -105,7 +104,7 @@ ghcProgram = (simpleProgram "ghc") {     programFindVersion = findProgramVersion "--numeric-version" id, -    -- Workaround for https://ghc.haskell.org/trac/ghc/ticket/8825+    -- Workaround for https://gitlab.haskell.org/ghc/ghc/-/issues/8825     -- (spurious warning on non-english locales)     programPostConf    = \_verbosity ghcProg ->     do let ghcProg' = ghcProg {
Distribution/Simple/Program/Db.hs view
@@ -73,8 +73,7 @@ import Distribution.Verbosity import Distribution.Version -import Control.Monad (join)-import Data.Tuple    (swap)+import Data.Tuple (swap)  import qualified Data.Map as Map 
Distribution/Simple/Program/Find.hs view
@@ -97,7 +97,7 @@           where             alltried = concat (reverse (notfoundat : tried)) -    tryPathElem :: ProgramSearchPathEntry -> NoCallStackIO (Maybe FilePath, [FilePath])+    tryPathElem :: ProgramSearchPathEntry -> IO (Maybe FilePath, [FilePath])     tryPathElem (ProgramSearchPathDir dir) =         findFirstExe [ dir </> prog <.> ext | ext <- exeExtensions ] @@ -122,7 +122,7 @@       dirs <- getSystemSearchPath       findFirstExe [ dir </> prog <.> ext | dir <- dirs, ext <- exeExtensions ] -    findFirstExe :: [FilePath] -> NoCallStackIO (Maybe FilePath, [FilePath])+    findFirstExe :: [FilePath] -> IO (Maybe FilePath, [FilePath])     findFirstExe = go []       where         go fs' []     = return (Nothing, reverse fs')@@ -144,7 +144,7 @@ -- | Interpret a 'ProgramSearchPath' to construct a new @$PATH@ env var. -- Note that this is close but not perfect because on Windows the search -- algorithm looks at more than just the @%PATH%@.-programSearchPathAsPATHVar :: ProgramSearchPath -> NoCallStackIO String+programSearchPathAsPATHVar :: ProgramSearchPath -> IO String programSearchPathAsPATHVar searchpath = do     ess <- traverse getEntries searchpath     return (intercalate [searchPathSeparator] (concat ess))@@ -157,7 +157,7 @@ -- | Get the system search path. On Unix systems this is just the @$PATH@ env -- var, but on windows it's a bit more complicated. ---getSystemSearchPath :: NoCallStackIO [FilePath]+getSystemSearchPath :: IO [FilePath] getSystemSearchPath = fmap nub $ do #if defined(mingw32_HOST_OS)     processdir <- takeDirectory `fmap` Win32.getModuleFileName Win32.nullHANDLE@@ -179,7 +179,7 @@ #endif #endif -findExecutable :: FilePath -> NoCallStackIO (Maybe FilePath)+findExecutable :: FilePath -> IO (Maybe FilePath) #ifdef HAVE_directory_121 findExecutable = Directory.findExecutable #else
Distribution/Simple/Program/GHC.hs view
@@ -27,16 +27,16 @@ import Distribution.Backpack import Distribution.Compat.Semigroup (First'(..), Last'(..), Option'(..)) import Distribution.Simple.GHC.ImplInfo-import Distribution.PackageDescription hiding (Flag)+import Distribution.PackageDescription import Distribution.ModuleName-import Distribution.Simple.Compiler hiding (Flag)-import qualified Distribution.Simple.Compiler as Compiler (Flag)+import Distribution.Simple.Compiler import Distribution.Simple.Flag import Distribution.Simple.Program.Types import Distribution.Simple.Program.Run import Distribution.System import Distribution.Pretty import Distribution.Types.ComponentId+import Distribution.Types.ModuleRenaming import Distribution.Verbosity import Distribution.Version import Distribution.Utils.NubList@@ -55,7 +55,7 @@     supportedGHCVersions :: VersionRange     supportedGHCVersions = intersectVersionRanges         (orLaterVersion (mkVersion [8,0]))-        (earlierVersion (mkVersion [8,11]))+        (earlierVersion (mkVersion [9,1]))      from :: Monoid m => [Int] -> m -> m     from version flags@@ -237,6 +237,7 @@       , from [8,4] $ to [8,6] [ "-fno-max-valid-substitutions" ]       , from [8,6] [ "-dhex-word-literals" ]       , from [8,8] [ "-fshow-docs-of-hole-fits", "-fno-show-docs-of-hole-fits" ]+      , from [9,0] [ "-dlinear-core-lint" ]       ]      isOptIntFlag :: String -> Any@@ -457,7 +458,7 @@    -- | A GHC version-dependent mapping of extensions to flags. This must be   -- set to be able to make use of the 'ghcOptExtensions'.-  ghcOptExtensionMap    :: Map Extension (Maybe Compiler.Flag),+  ghcOptExtensionMap    :: Map Extension (Maybe CompilerFlag),    ----------------   -- Compilation@@ -816,7 +817,7 @@                   ++ show dbstack  -- | GHC >= 7.6 uses the '-package-db' flag. See--- https://ghc.haskell.org/trac/ghc/ticket/5977.+-- https://gitlab.haskell.org/ghc/ghc/-/issues/5977. packageDbArgsDb :: PackageDBStack -> [String] -- special cases to make arguments prettier in common scenarios packageDbArgsDb dbstack = case dbstack of
Distribution/Simple/Program/HcPkg.hs view
@@ -47,7 +47,6 @@ import Distribution.Compat.Prelude hiding (init) import Prelude () -import Distribution.Compat.Exception import Distribution.InstalledPackageInfo import Distribution.Parsec import Distribution.Pretty
Distribution/Simple/Program/Hpc.hs view
@@ -19,7 +19,6 @@ import Prelude () import Distribution.Compat.Prelude -import Control.Monad (mapM) import System.Directory (makeRelativeToCurrentDirectory)  import Distribution.ModuleName@@ -61,7 +60,7 @@             return passedDirs      -- Prior to GHC 8.0, hpc assumes all .mix paths are relative.-    hpcDirs'' <- mapM makeRelativeToCurrentDirectory hpcDirs'+    hpcDirs'' <- traverse makeRelativeToCurrentDirectory hpcDirs'      runProgramInvocation verbosity       (markupInvocation hpc tixFile hpcDirs'' destDir excluded)
Distribution/Simple/Program/Run.hs view
@@ -38,8 +38,7 @@ import Distribution.Utils.Generic import Distribution.Verbosity -import System.Exit     (ExitCode (..), exitWith)-import System.FilePath+import System.FilePath (searchPathSeparator)  import qualified Data.ByteString.Lazy as LBS import qualified Data.Map             as Map@@ -198,7 +197,7 @@   where     input = encodeToIOData encoding <$> minputStr -getExtraPathEnv :: [(String, Maybe String)] -> [FilePath] -> NoCallStackIO [(String, Maybe String)]+getExtraPathEnv :: [(String, Maybe String)] -> [FilePath] -> IO [(String, Maybe String)] getExtraPathEnv _ [] = return [] getExtraPathEnv env extras = do     mb_path <- case lookup "PATH" env of@@ -215,7 +214,7 @@ -- precedence. -- getEffectiveEnvironment :: [(String, Maybe String)]-                        -> NoCallStackIO (Maybe [(String, String)])+                        -> IO (Maybe [(String, String)]) getEffectiveEnvironment []        = return Nothing getEffectiveEnvironment overrides =     fmap (Just . Map.toList . apply overrides . Map.fromList) getEnvironment
Distribution/Simple/Register.hs view
@@ -23,7 +23,7 @@ -- build multi-package systems. -- -- This module does not delegate anything to the per-compiler modules but just--- mixes it all in in this module, which is rather unsatisfactory. The script+-- mixes it all in this module, which is rather unsatisfactory. The script -- generation and the unregister feature are not well used or tested.  module Distribution.Simple.Register (@@ -87,7 +87,6 @@ import System.FilePath ((</>), (<.>), isAbsolute) import System.Directory -import Data.List (partition) import qualified Data.ByteString.Lazy.Char8 as BS.Char8  -- -----------------------------------------------------------------------------@@ -300,7 +299,7 @@                               "Distribution.Simple.Register.createPackageDB: "                            ++ "not implemented for this compiler" -doesPackageDBExist :: FilePath -> NoCallStackIO Bool+doesPackageDBExist :: FilePath -> IO Bool doesPackageDBExist dbPath = do     -- currently one impl for all compiler flavours, but could change if needed     dir_exists <- doesDirectoryExist dbPath@@ -308,7 +307,7 @@         then return True         else doesFileExist dbPath -deletePackageDB :: FilePath -> NoCallStackIO ()+deletePackageDB :: FilePath -> IO () deletePackageDB dbPath = do     -- currently one impl for all compiler flavours, but could change if needed     dir_exists <- doesDirectoryExist dbPath
Distribution/Simple/Setup.hs view
@@ -88,28 +88,24 @@ import qualified Distribution.Compat.CharParsing as P import qualified Text.PrettyPrint as Disp import Distribution.ModuleName-import Distribution.PackageDescription hiding (Flag)+import Distribution.PackageDescription import Distribution.Simple.Command hiding (boolOpt, boolOpt') import qualified Distribution.Simple.Command as Command-import Distribution.Simple.Compiler hiding (Flag)+import Distribution.Simple.Compiler import Distribution.Simple.Flag import Distribution.Simple.Utils import Distribution.Simple.Program import Distribution.Simple.InstallDirs import Distribution.Verbosity import Distribution.Utils.NubList-import Distribution.Types.Dependency import Distribution.Types.ComponentId import Distribution.Types.GivenComponent import Distribution.Types.Module-import Distribution.Types.PackageName-import Distribution.Types.UnqualComponentName (unUnqualComponentName)+import Distribution.Types.PackageVersionConstraint  import Distribution.Compat.Stack import Distribution.Compat.Semigroup (Last' (..), Option' (..)) -import Data.Function (on)- -- FIXME Not sure where this should live defaultDistPref :: FilePath defaultDistPref = "dist"@@ -256,8 +252,8 @@     configSplitObjs :: Flag Bool,      -- ^Enable -split-objs with GHC     configStripExes :: Flag Bool,      -- ^Enable executable stripping     configStripLibs :: Flag Bool,      -- ^Enable library stripping-    configConstraints :: [Dependency], -- ^Additional constraints for-                                       -- dependencies.+    configConstraints :: [PackageVersionConstraint], -- ^Additional constraints for+                                                     -- dependencies.     configDependencies :: [GivenComponent],       -- ^The packages depended on.     configInstantiateWith :: [(ModuleName, Module)],@@ -278,7 +274,7 @@     configDebugInfo :: Flag DebugInfoLevel,  -- ^ Emit debug info.     configUseResponseFiles :: Flag Bool,       -- ^ Whether to use response files at all. They're used for such tools-      -- as haddock, or or ld.+      -- as haddock, or ld.     configAllowDependingOnPrivateLibs :: Flag Bool       -- ^ Allow depending on private sublibraries. This is used by external       -- tools (like cabal-install) so they can add multiple-public-libraries@@ -348,7 +344,7 @@     where       equal f = on (==) f a b -configAbsolutePaths :: ConfigFlags -> NoCallStackIO ConfigFlags+configAbsolutePaths :: ConfigFlags -> IO ConfigFlags configAbsolutePaths f =   (\v -> f { configPackageDBs = v })   `liftM` traverse (maybe (return Nothing) (liftM Just . absolutePackageDBPath))@@ -611,8 +607,8 @@          "Force values for the given flags in Cabal conditionals in the .cabal file.  E.g., --flags=\"debug -usebytestrings\" forces the flag \"debug\" to true and \"usebytestrings\" to false."          configConfigurationsFlags (\v flags -> flags { configConfigurationsFlags = v })          (reqArg "FLAGS"-              (parsecToReadE (\err -> "Invalid flag assignment: " ++ err) parsecFlagAssignment)-              showFlagAssignment)+              (parsecToReadE (\err -> "Invalid flag assignment: " ++ err) legacyParsecFlagAssignment)+              legacyShowFlagAssignment')        ,option "" ["extra-include-dirs"]          "A list of directories to search for header files"@@ -727,16 +723,6 @@       reqArgFlag title _sf _lf d         (fmap fromPathTemplate . get) (set . fmap toPathTemplate) -showFlagAssignment :: FlagAssignment -> [String]-showFlagAssignment = map showFlagValue' . unFlagAssignment-  where-    -- We can't use 'showFlagValue' because legacy custom-setups don't-    -- support the '+' prefix in --flags; so we omit the (redundant) + prefix;-    -- NB: we assume that we never have to set/enable '-'-prefixed flags here.-    showFlagValue' :: (FlagName, Bool) -> String-    showFlagValue' (f, True)   =       unFlagName f-    showFlagValue' (f, False)  = '-' : unFlagName f- readPackageDbList :: String -> [Maybe PackageDB] readPackageDbList "clear"  = [Nothing] readPackageDbList "global" = [Just GlobalPackageDB]@@ -1880,7 +1866,7 @@     testFailWhenNoTestSuites :: Flag Bool,     -- TODO: think about if/how options are passed to test exes     testOptions     :: [PathTemplate]-  } deriving (Generic, Typeable)+  } deriving (Show, Generic, Typeable)  defaultTestFlags :: TestFlags defaultTestFlags  = TestFlags {@@ -2000,7 +1986,7 @@     benchmarkDistPref  :: Flag FilePath,     benchmarkVerbosity :: Flag Verbosity,     benchmarkOptions   :: [PathTemplate]-  } deriving (Generic, Typeable)+  } deriving (Show, Generic, Typeable)  defaultBenchmarkFlags :: BenchmarkFlags defaultBenchmarkFlags  = BenchmarkFlags {
Distribution/Simple/SrcDist.hs view
@@ -39,14 +39,15 @@   dateToSnapshotNumber,    -- * Extracting the source files-  listPackageSources+  listPackageSources,+  listPackageSourcesWithDie,    )  where  import Prelude () import Distribution.Compat.Prelude -import Distribution.PackageDescription hiding (Flag)+import Distribution.PackageDescription import Distribution.PackageDescription.Check hiding (doesFileExist) import Distribution.Package import Distribution.ModuleName@@ -57,49 +58,40 @@ import Distribution.Simple.Utils import Distribution.Simple.Setup import Distribution.Simple.PreProcess-import Distribution.Simple.LocalBuildInfo import Distribution.Simple.BuildPaths import Distribution.Simple.Program import Distribution.Pretty-import Distribution.Types.ForeignLib import Distribution.Verbosity -import Data.List (partition) import qualified Data.Map as Map import Data.Time (UTCTime, getCurrentTime, toGregorian, utctDay) import System.Directory ( doesFileExist ) import System.IO (IOMode(WriteMode), hPutStrLn, withFile) import System.FilePath ((</>), (<.>), dropExtension, isRelative)-import Control.Monad  -- |Create a source distribution.-sdist :: PackageDescription     -- ^information from the tarball-      -> Maybe LocalBuildInfo   -- ^Information from configure-      -> SDistFlags             -- ^verbosity & snapshot-      -> (FilePath -> FilePath) -- ^build prefix (temp dir)+sdist :: PackageDescription     -- ^ information from the tarball+      -> SDistFlags             -- ^ verbosity & snapshot+      -> (FilePath -> FilePath) -- ^ build prefix (temp dir)       -> [PPSuffixHandler]      -- ^ extra preprocessors (includes suffixes)       -> IO ()-sdist pkg mb_lbi flags mkTmpDir pps = do+sdist pkg flags mkTmpDir pps = do    distPref <- findDistPrefOrDefault $ sDistDistPref flags   let targetPref   = distPref       tmpTargetDir = mkTmpDir distPref    -- When given --list-sources, just output the list of sources to a file.-  case (sDistListSources flags) of+  case sDistListSources flags of     Flag path -> withFile path WriteMode $ \outHandle -> do-      (ordinary, maybeExecutable) <- listPackageSources verbosity pkg pps+      ordinary <- listPackageSources verbosity "." pkg pps       traverse_ (hPutStrLn outHandle) ordinary-      traverse_ (hPutStrLn outHandle) maybeExecutable-      notice verbosity $ "List of package sources written to file '"-                         ++ path ++ "'"+      notice verbosity $ "List of package sources written to file '" ++ path ++ "'"+     NoFlag    -> do       -- do some QA       printPackageProblems verbosity pkg -      when (isNothing mb_lbi) $-        warn verbosity "Cannot run preprocessors. Run 'configure' command first."-       date <- getCurrentTime       let pkg' | snapshot  = snapshotPackage date pkg                | otherwise = pkg@@ -114,49 +106,64 @@           withTempDirectory verbosity tmpTargetDir "sdist." $ \tmpDir -> do             let targetDir = tmpDir </> tarBallName pkg'             generateSourceDir targetDir pkg'-            targzFile <- createArchive verbosity pkg' mb_lbi tmpDir targetPref+            targzFile <- createArchive verbosity pkg' tmpDir targetPref             notice verbosity $ "Source tarball created: " ++ targzFile    where+    generateSourceDir :: FilePath -> PackageDescription -> IO ()     generateSourceDir targetDir pkg' = do-       setupMessage verbosity "Building source dist for" (packageId pkg')-      prepareTree verbosity pkg' mb_lbi targetDir pps+      prepareTree verbosity pkg' targetDir pps       when snapshot $         overwriteSnapshotPackageDesc verbosity pkg' targetDir      verbosity = fromFlag (sDistVerbosity flags)     snapshot  = fromFlag (sDistSnapshot flags) --- | List all source files of a package. Returns a tuple of lists: first--- component is a list of ordinary files, second one is a list of those files--- that may be executable.-listPackageSources :: Verbosity          -- ^ verbosity-                   -> PackageDescription -- ^ info from the cabal file-                   -> [PPSuffixHandler]  -- ^ extra preprocessors (include-                                         -- suffixes)-                   -> IO ([FilePath], [FilePath])-listPackageSources verbosity pkg_descr0 pps = do-  -- Call helpers that actually do all work.-  ordinary        <- listPackageSourcesOrdinary        verbosity pkg_descr pps-  maybeExecutable <- listPackageSourcesMaybeExecutable verbosity pkg_descr-  return (ordinary, maybeExecutable)+-- | List all source files of a package.+--+-- Since @Cabal-3.4@ returns a single list. There shouldn't be any+-- executable files, they are hardly portable.+-- +listPackageSources+    :: Verbosity          -- ^ verbosity+    -> FilePath           -- ^ directory with cabal file+    -> PackageDescription -- ^ info from the cabal file+    -> [PPSuffixHandler]  -- ^ extra preprocessors (include suffixes)+    -> IO [FilePath]      -- ^ relative paths+listPackageSources verbosity cwd pkg_descr0 pps = do+    -- Call helpers that actually do all work.+    listPackageSources' verbosity die' cwd pkg_descr pps   where     pkg_descr = filterAutogenModules pkg_descr0 --- | List those source files that may be executable (e.g. the configure script).-listPackageSourcesMaybeExecutable :: Verbosity -> PackageDescription -> IO [FilePath]-listPackageSourcesMaybeExecutable verbosity pkg_descr =-  -- Extra source files.-  fmap concat . for (extraSrcFiles pkg_descr) $ \fpath ->-    matchDirFileGlob verbosity (specVersion pkg_descr) "." fpath+-- | A variant of 'listPackageSources' with configurable 'die'.+--+-- /Note:/ may still 'die' directly. For example on missing include file.+--+-- Since @3.4.0.0+listPackageSourcesWithDie+    :: Verbosity          -- ^ verbosity+    -> (Verbosity -> String -> IO [FilePath]) -- ^ 'die'' alternative+    -> FilePath           -- ^ directory with cabal file+    -> PackageDescription -- ^ info from the cabal file+    -> [PPSuffixHandler]  -- ^ extra preprocessors (include suffixes)+    -> IO [FilePath]      -- ^ relative paths+listPackageSourcesWithDie verbosity rip cwd pkg_descr0 pps = do+    -- Call helpers that actually do all work.+    listPackageSources' verbosity rip cwd pkg_descr pps+  where+    pkg_descr = filterAutogenModules pkg_descr0 --- | List those source files that should be copied with ordinary permissions.-listPackageSourcesOrdinary :: Verbosity-                           -> PackageDescription-                           -> [PPSuffixHandler]-                           -> IO [FilePath]-listPackageSourcesOrdinary verbosity pkg_descr pps =++listPackageSources'+  :: Verbosity+  -> (Verbosity -> String -> IO [FilePath])+  -> FilePath+  -> PackageDescription+  -> [PPSuffixHandler]+  -> IO [FilePath]+listPackageSources' verbosity rip cwd pkg_descr pps =   fmap concat . sequenceA $   [     -- Library sources.@@ -166,20 +173,20 @@                       signatures     = sigs,                       libBuildInfo   = libBi                     } ->-     allSourcesBuildInfo verbosity libBi pps (modules ++ sigs)+     allSourcesBuildInfo verbosity rip cwd libBi pps (modules ++ sigs)      -- Executables sources.   , fmap concat     . withAllExe $ \Executable { modulePath = mainPath, buildInfo = exeBi } -> do-       biSrcs  <- allSourcesBuildInfo verbosity exeBi pps []-       mainSrc <- findMainExeFile verbosity exeBi pps mainPath+       biSrcs  <- allSourcesBuildInfo verbosity rip cwd exeBi pps []+       mainSrc <- findMainExeFile verbosity cwd exeBi pps mainPath        return (mainSrc:biSrcs)      -- Foreign library sources   , fmap concat     . withAllFLib $ \flib@(ForeignLib { foreignLibBuildInfo = flibBi }) -> do-       biSrcs   <- allSourcesBuildInfo verbosity flibBi pps []-       defFiles <- mapM (findModDefFile verbosity flibBi pps)+       biSrcs   <- allSourcesBuildInfo verbosity rip cwd flibBi pps []+       defFiles <- traverse (findModDefFile verbosity cwd flibBi pps)          (foreignLibModDefFile flib)        return (defFiles ++ biSrcs) @@ -189,13 +196,13 @@        let bi  = testBuildInfo t        case testInterface t of          TestSuiteExeV10 _ mainPath -> do-           biSrcs <- allSourcesBuildInfo verbosity bi pps []-           srcMainFile <- findMainExeFile verbosity bi pps mainPath+           biSrcs <- allSourcesBuildInfo verbosity rip cwd bi pps []+           srcMainFile <- findMainExeFile verbosity cwd bi pps mainPath            return (srcMainFile:biSrcs)          TestSuiteLibV09 _ m ->-           allSourcesBuildInfo verbosity bi pps [m]+           allSourcesBuildInfo verbosity rip cwd bi pps [m]          TestSuiteUnsupported tp ->-           die' verbosity $ "Unsupported test suite type: " ++ show tp+           rip verbosity $ "Unsupported test suite type: " ++ show tp      -- Benchmarks sources.   , fmap concat@@ -203,26 +210,28 @@        let  bi = benchmarkBuildInfo bm        case benchmarkInterface bm of          BenchmarkExeV10 _ mainPath -> do-           biSrcs <- allSourcesBuildInfo verbosity bi pps []-           srcMainFile <- findMainExeFile verbosity bi pps mainPath+           biSrcs <- allSourcesBuildInfo verbosity rip cwd bi pps []+           srcMainFile <- findMainExeFile verbosity cwd bi pps mainPath            return (srcMainFile:biSrcs)-         BenchmarkUnsupported tp -> die' verbosity $ "Unsupported benchmark type: "-                                    ++ show tp+         BenchmarkUnsupported tp ->+            rip verbosity $ "Unsupported benchmark type: " ++ show tp      -- Data files.   , fmap concat-    . for (dataFiles pkg_descr) $ \filename ->-        let srcDataDirRaw = dataDir pkg_descr-            srcDataDir = if null srcDataDirRaw-              then "."-              else srcDataDirRaw-        in fmap (fmap (srcDataDir </>)) $-             matchDirFileGlob verbosity (specVersion pkg_descr) srcDataDir filename+    . for (dataFiles pkg_descr) $ \filename -> do+        let srcDataDirRaw                   = dataDir pkg_descr+            srcDataDir | null srcDataDirRaw = "."+                       | otherwise          = srcDataDirRaw+        matchDirFileGlob verbosity (specVersion pkg_descr) cwd (srcDataDir </> filename) +    -- Extra source files.+  , fmap concat . for (extraSrcFiles pkg_descr) $ \fpath ->+    matchDirFileGlob verbosity (specVersion pkg_descr) cwd fpath+     -- Extra doc files.   , fmap concat     . for (extraDocFiles pkg_descr) $ \ filename ->-        matchDirFileGlob verbosity (specVersion pkg_descr) "." filename+        matchDirFileGlob verbosity (specVersion pkg_descr) cwd filename      -- License file(s).   , return (licenseFiles pkg_descr)@@ -233,13 +242,13 @@        let lbi   = libBuildInfo l            incls = filter (`notElem` autogenIncludes lbi) (installIncludes lbi)            relincdirs = "." : filter isRelative (includeDirs lbi)-       traverse (fmap snd . findIncludeFile verbosity relincdirs) incls+       traverse (fmap snd . findIncludeFile verbosity cwd relincdirs) incls      -- Setup script, if it exists.-  , fmap (maybe [] (\f -> [f])) $ findSetupFile ""+  , fmap (maybe [] (\f -> [f])) $ findSetupFile cwd      -- The .cabal file itself.-  , fmap (\d -> [d]) (defaultPackageDesc verbosity)+  , fmap (\d -> [d]) (tryFindPackageDescCwd verbosity cwd ".")    ]   where@@ -255,44 +264,32 @@ -- |Prepare a directory tree of source files. prepareTree :: Verbosity          -- ^verbosity             -> PackageDescription -- ^info from the cabal file-            -> Maybe LocalBuildInfo             -> FilePath           -- ^source tree to populate             -> [PPSuffixHandler]  -- ^extra preprocessors (includes suffixes)             -> IO ()-prepareTree verbosity pkg_descr0 mb_lbi targetDir pps = do-  -- If the package was configured then we can run platform-independent-  -- pre-processors and include those generated files.-  case mb_lbi of-    Just lbi | not (null pps) -> do-      let lbi' = lbi{ buildDir = targetDir </> buildDir lbi }-      withAllComponentsInBuildOrder pkg_descr lbi' $ \c clbi ->-        preprocessComponent pkg_descr c lbi' clbi True verbosity pps-    _ -> return ()--  (ordinary, mExecutable)  <- listPackageSources verbosity pkg_descr0 pps-  installOrdinaryFiles        verbosity targetDir (zip (repeat []) ordinary)-  installMaybeExecutableFiles verbosity targetDir (zip (repeat []) mExecutable)-  maybeCreateDefaultSetupScript targetDir-+prepareTree verbosity pkg_descr0 targetDir pps = do+    ordinary <- listPackageSources verbosity "." pkg_descr pps+    installOrdinaryFiles verbosity targetDir (zip (repeat []) ordinary)+    maybeCreateDefaultSetupScript targetDir   where     pkg_descr = filterAutogenModules pkg_descr0  -- | Find the setup script file, if it exists.-findSetupFile :: FilePath -> NoCallStackIO (Maybe FilePath)+findSetupFile :: FilePath -> IO (Maybe FilePath) findSetupFile targetDir = do-  hsExists  <- doesFileExist setupHs-  lhsExists <- doesFileExist setupLhs+  hsExists  <- doesFileExist (targetDir </> setupHs)+  lhsExists <- doesFileExist (targetDir </> setupLhs)   if hsExists     then return (Just setupHs)     else if lhsExists          then return (Just setupLhs)          else return Nothing     where-      setupHs  = targetDir </> "Setup.hs"-      setupLhs = targetDir </> "Setup.lhs"+      setupHs  = "Setup.hs"+      setupLhs = "Setup.lhs"  -- | Create a default setup script in the target directory, if it doesn't exist.-maybeCreateDefaultSetupScript :: FilePath -> NoCallStackIO ()+maybeCreateDefaultSetupScript :: FilePath -> IO () maybeCreateDefaultSetupScript targetDir = do   mSetupFile <- findSetupFile targetDir   case mSetupFile of@@ -304,31 +301,36 @@  -- | Find the main executable file. findMainExeFile-  :: Verbosity -> BuildInfo -> [PPSuffixHandler] -> FilePath -> IO FilePath-findMainExeFile verbosity exeBi pps mainPath = do-  ppFile <- findFileWithExtension (ppSuffixes pps) (hsSourceDirs exeBi)+  :: Verbosity+  -> FilePath -- ^ cwd+  -> BuildInfo+  -> [PPSuffixHandler]+  -> FilePath -- ^ main-is+  -> IO FilePath+findMainExeFile verbosity cwd exeBi pps mainPath = do+  ppFile <- findFileCwdWithExtension cwd (ppSuffixes pps) (hsSourceDirs exeBi)             (dropExtension mainPath)   case ppFile of-    Nothing -> findFileEx verbosity (hsSourceDirs exeBi) mainPath+    Nothing -> findFileCwd verbosity cwd (hsSourceDirs exeBi) mainPath     Just pp -> return pp  -- | Find a module definition file -- -- TODO: I don't know if this is right findModDefFile-  :: Verbosity -> BuildInfo -> [PPSuffixHandler] -> FilePath -> IO FilePath-findModDefFile verbosity flibBi _pps modDefPath =-    findFileEx verbosity (".":hsSourceDirs flibBi) modDefPath+  :: Verbosity -> FilePath -> BuildInfo -> [PPSuffixHandler] -> FilePath -> IO FilePath+findModDefFile verbosity cwd flibBi _pps modDefPath =+    findFileCwd verbosity cwd (".":hsSourceDirs flibBi) modDefPath  -- | Given a list of include paths, try to find the include file named -- @f@. Return the name of the file and the full path, or exit with error if -- there's no such file.-findIncludeFile :: Verbosity -> [FilePath] -> String -> IO (String, FilePath)-findIncludeFile verbosity [] f = die' verbosity ("can't find include file " ++ f)-findIncludeFile verbosity (d:ds) f = do+findIncludeFile :: Verbosity -> FilePath -> [FilePath] -> String -> IO (String, FilePath)+findIncludeFile verbosity _ [] f = die' verbosity ("can't find include file " ++ f)+findIncludeFile verbosity cwd (d:ds) f = do   let path = (d </> f)-  b <- doesFileExist path-  if b then return (f,path) else findIncludeFile verbosity ds f+  b <- doesFileExist (cwd </> path)+  if b then return (f,path) else findIncludeFile verbosity cwd ds f  -- | Remove the auto-generated modules (like 'Paths_*') from 'exposed-modules'  -- and 'other-modules'.@@ -353,15 +355,14 @@ -- It is expected that the appropriate snapshot version has already been set -- in the package description, eg using 'snapshotPackage' or 'snapshotVersion'. ---prepareSnapshotTree :: Verbosity          -- ^verbosity-                    -> PackageDescription -- ^info from the cabal file-                    -> Maybe LocalBuildInfo-                    -> FilePath           -- ^source tree to populate-                    -> [PPSuffixHandler]  -- ^extra preprocessors (includes-                                          -- suffixes)-                    -> IO ()-prepareSnapshotTree verbosity pkg mb_lbi targetDir pps = do-  prepareTree verbosity pkg mb_lbi targetDir pps+prepareSnapshotTree+  :: Verbosity          -- ^verbosity+  -> PackageDescription -- ^info from the cabal file+  -> FilePath           -- ^source tree to populate+  -> [PPSuffixHandler]  -- ^extra preprocessors (includes suffixes)+  -> IO ()+prepareSnapshotTree verbosity pkg targetDir pps = do+  prepareTree verbosity pkg targetDir pps   overwriteSnapshotPackageDesc verbosity pkg targetDir  overwriteSnapshotPackageDesc :: Verbosity          -- ^verbosity@@ -409,21 +410,16 @@                               + month             * 100                               + day --- | Callback type for use by sdistWith.-type CreateArchiveFun = Verbosity               -- ^verbosity-                        -> PackageDescription   -- ^info from cabal file-                        -> Maybe LocalBuildInfo -- ^info from configure-                        -> FilePath             -- ^source tree to archive-                        -> FilePath             -- ^name of archive to create-                        -> IO FilePath- -- | Create an archive from a tree of source files, and clean up the tree.-createArchive :: CreateArchiveFun-createArchive verbosity pkg_descr mb_lbi tmpDir targetPref = do+createArchive+    :: Verbosity            -- ^ verbosity+    -> PackageDescription   -- ^ info from cabal file+    -> FilePath             -- ^ source tree to archive+    -> FilePath             -- ^ name of archive to create+    -> IO FilePath+createArchive verbosity pkg_descr tmpDir targetPref = do   let tarBallFilePath = targetPref </> tarBallName pkg_descr <.> "tar.gz"--  (tarProg, _) <- requireProgram verbosity tarProgram-                    (maybe defaultProgramDb withPrograms mb_lbi)+  (tarProg, _) <- requireProgram verbosity tarProgram defaultProgramDb   let formatOptSupported = maybe False (== "YES") $                            Map.lookup "Supports --format"                            (programProperties tarProg)@@ -438,25 +434,28 @@   return tarBallFilePath  -- | Given a buildinfo, return the names of all source files.-allSourcesBuildInfo :: Verbosity-                       -> BuildInfo-                       -> [PPSuffixHandler] -- ^ Extra preprocessors-                       -> [ModuleName]      -- ^ Exposed modules-                       -> IO [FilePath]-allSourcesBuildInfo verbosity bi pps modules = do+allSourcesBuildInfo+    :: Verbosity+    -> (Verbosity -> String -> IO [FilePath])+    -> FilePath          -- ^ cwd+    -> BuildInfo+    -> [PPSuffixHandler] -- ^ Extra preprocessors+    -> [ModuleName]      -- ^ Exposed modules+    -> IO [FilePath]+allSourcesBuildInfo verbosity rip cwd bi pps modules = do   let searchDirs = hsSourceDirs bi   sources <- fmap concat $ sequenceA $     [ let file = ModuleName.toFilePath module_       -- NB: *Not* findFileWithExtension, because the same source       -- file may show up in multiple paths due to a conditional;       -- we need to package all of them.  See #367.-      in findAllFilesWithExtension suffixes searchDirs file+      in findAllFilesCwdWithExtension cwd suffixes searchDirs file          >>= nonEmpty (notFound module_) return     | module_ <- modules ++ otherModules bi ]   bootFiles <- sequenceA     [ let file = ModuleName.toFilePath module_           fileExts = ["hs-boot", "lhs-boot"]-      in findFileWithExtension fileExts (hsSourceDirs bi) file+      in findFileCwdWithExtension cwd fileExts (hsSourceDirs bi) file     | module_ <- modules ++ otherModules bi ]    return $ sources ++ catMaybes bootFiles ++ cSources bi ++ cxxSources bi ++@@ -466,7 +465,9 @@     nonEmpty x _ [] = x     nonEmpty _ f xs = f xs     suffixes = ppSuffixes pps ++ ["hs", "lhs", "hsig", "lhsig"]-    notFound m = die' verbosity $ "Error: Could not find module: " ++ prettyShow m++    notFound :: ModuleName -> IO [FilePath]+    notFound m = rip verbosity $ "Error: Could not find module: " ++ prettyShow m                  ++ " with any suffix: " ++ show suffixes ++ ". If the module "                  ++ "is autogenerated it should be added to 'autogen-modules'." 
Distribution/Simple/Test.hs view
@@ -40,7 +40,6 @@ import System.Directory     ( createDirectoryIfMissing, doesFileExist, getDirectoryContents     , removeFile )-import System.Exit ( exitFailure, exitSuccess ) import System.FilePath ( (</>) )  -- |Perform the \"@.\/setup test@\" action.
Distribution/Simple/Test/ExeV10.hs view
@@ -27,14 +27,14 @@ import Distribution.Pretty import Distribution.Verbosity -import Control.Concurrent (forkIO) import System.Directory     ( createDirectoryIfMissing, doesDirectoryExist, doesFileExist     , getCurrentDirectory, removeDirectoryRecursive )-import System.Exit ( ExitCode(..) ) import System.FilePath ( (</>), (<.>) )-import System.IO ( hGetContents, stdout, stderr )+import System.IO ( stdout, stderr ) +import qualified Data.ByteString.Lazy as LBS+ runTest :: PD.PackageDescription         -> LBI.LocalBuildInfo         -> LBI.ComponentLocalBuildInfo@@ -67,21 +67,7 @@     -- Write summary notices indicating start of test suite     notice verbosity $ summarizeSuiteStart $ testName' -    (wOut, wErr, logText) <- case details of-        Direct -> return (stdout, stderr, "")-        _ -> do-            (rOut, wOut) <- createPipe -            -- Read test executable's output lazily (returns immediately)-            logText <- hGetContents rOut-            -- Force the IO manager to drain the test output pipe-            void $ forkIO $ length logText `seq` return ()--            -- '--show-details=streaming': print the log output in another thread-            when (details == Streaming) $ void $ forkIO $ putStr logText--            return (wOut, wOut, logText)-     -- Run the test executable     let opts = map (testOption pkg_descr lbi suite)                    (testOptions flags)@@ -98,15 +84,35 @@                             return (addLibraryPath os paths shellEnv)                     else return shellEnv -    exit <- case testWrapper flags of-      Flag path -> rawSystemIOWithEnv verbosity path (cmd:opts) Nothing (Just shellEnv')-                               -- these handles are automatically closed-                               Nothing (Just wOut) (Just wErr)+    -- Output logger+    (wOut, wErr, getLogText) <- case details of+        Direct -> return (stdout, stderr, return LBS.empty)+        _      -> do+            (rOut, wOut) <- createPipe -      NoFlag -> rawSystemIOWithEnv verbosity cmd opts Nothing (Just shellEnv')-                               -- these handles are automatically closed-                               Nothing (Just wOut) (Just wErr)+            return $ (,,) wOut wOut $ do+                -- Read test executables' output+                logText <- LBS.hGetContents rOut +                -- '--show-details=streaming': print the log output in another thread+                when (details == Streaming) $ LBS.putStr logText++                -- drain the output.+                evaluate (force logText)++    (exit, logText) <- case testWrapper flags of+        Flag path -> rawSystemIOWithEnvAndAction+            verbosity path (cmd:opts) Nothing (Just shellEnv')+            getLogText+            -- these handles are automatically closed+            Nothing (Just wOut) (Just wErr)++        NoFlag -> rawSystemIOWithEnvAndAction+            verbosity cmd opts Nothing (Just shellEnv')+            getLogText+            -- these handles are automatically closed+            Nothing (Just wOut) (Just wErr)+     -- Generate TestSuiteLog from executable exit code and a machine-     -- readable test log.     let suiteLog = buildLog exit@@ -116,7 +122,7 @@      -- Append contents of temporary log file to the final human-     -- readable log file-    appendFile (logFile suiteLog) logText+    LBS.appendFile (logFile suiteLog) logText      -- Write end-of-suite summary notice to log file     appendFile (logFile suiteLog) $ summarizeSuiteFinish suiteLog@@ -128,7 +134,9 @@               details == Failures && not (suitePassed $ testLogs suiteLog))             -- verbosity overrides show-details             && verbosity >= normal-    whenPrinting $ putStr $ unlines $ lines logText+    whenPrinting $ do+        LBS.putStr logText+        putChar '\n'      -- Write summary notice to terminal indicating end of test suite     notice verbosity $ summarizeSuiteFinish suiteLog
Distribution/Simple/Test/LibV09.hs view
@@ -34,14 +34,14 @@ import Distribution.Verbosity  import qualified Control.Exception as CE+import qualified Data.ByteString.Lazy as LBS import System.Directory     ( createDirectoryIfMissing, canonicalizePath     , doesDirectoryExist, doesFileExist     , getCurrentDirectory, removeDirectoryRecursive, removeFile     , setCurrentDirectory )-import System.Exit ( exitSuccess, exitWith, ExitCode(..) ) import System.FilePath ( (</>), (<.>) )-import System.IO ( hClose, hGetContents, hPutStr )+import System.IO ( hClose, hPutStr ) import System.Process (StdStream(..), waitForProcess)  runTest :: PD.PackageDescription@@ -79,6 +79,8 @@      suiteLog <- CE.bracket openCabalTemp deleteIfExists $ \tempLog -> do +        -- TODO: this setup is broken,+        -- if the test output is too big, we will deadlock.         (rOut, wOut) <- createPipe          -- Run test executable@@ -113,9 +115,9 @@          -- Append contents of temporary log file to the final human-         -- readable log file-        logText <- hGetContents rOut+        logText <- LBS.hGetContents rOut         -- Force the IO manager to drain the test output pipe-        length logText `seq` return ()+        _ <- evaluate (force logText)          exitcode <- waitForProcess process         unless (exitcode == ExitSuccess) $ do@@ -135,7 +137,7 @@         -- Write summary notice to log file indicating start of test suite         appendFile (logFile suiteLog) $ summarizeSuiteStart testName' -        appendFile (logFile suiteLog) logText+        LBS.appendFile (logFile suiteLog) logText          -- Write end-of-suite summary notice to log file         appendFile (logFile suiteLog) $ summarizeSuiteFinish suiteLog@@ -146,7 +148,9 @@             whenPrinting = when $ (details > Never)                 && (not (suitePassed $ testLogs suiteLog) || details == Always)                 && verbosity >= normal-        whenPrinting $ putStr $ unlines $ lines logText+        whenPrinting $ do+            LBS.putStr logText+            putChar '\n'          return suiteLog @@ -159,7 +163,7 @@     return suiteLog   where     testName' = unUnqualComponentName $ PD.testName suite-    +     deleteIfExists file = do         exists <- doesFileExist file         when exists $ removeFile file@@ -203,7 +207,7 @@                                     -- is being created                     -> FilePath     -- ^ path to directory where stub source                                     -- should be located-                    -> NoCallStackIO ()+                    -> IO () writeSimpleTestStub t dir = do     createDirectoryIfMissing True dir     let filename = dir </> stubFilePath t@@ -233,7 +237,7 @@     setCurrentDirectory dir     stubWriteLog f n results   where-    errHandler :: CE.SomeException -> NoCallStackIO TestLogs+    errHandler :: CE.SomeException -> IO TestLogs     errHandler e = case CE.fromException e of         Just CE.UserInterrupt -> CE.throwIO e         _ -> return $ TestLog { testName = "Cabal test suite exception",@@ -274,7 +278,7 @@  -- | From a test stub, write the 'TestSuiteLog' to temporary file for the calling -- Cabal process to read.-stubWriteLog :: FilePath -> UnqualComponentName -> TestLogs -> NoCallStackIO ()+stubWriteLog :: FilePath -> UnqualComponentName -> TestLogs -> IO () stubWriteLog f n logs = do     let testLog = TestSuiteLog { testSuiteName = n, testLogs = logs, logFile = f }     writeFile (logFile testLog) $ show testLog
Distribution/Simple/UHC.hs view
@@ -29,7 +29,7 @@ import Distribution.Package hiding (installedUnitId) import Distribution.PackageDescription import Distribution.Simple.BuildPaths-import Distribution.Simple.Compiler as C+import Distribution.Simple.Compiler import Distribution.Simple.LocalBuildInfo import Distribution.Simple.PackageIndex import Distribution.Simple.Program@@ -60,7 +60,7 @@    let comp = Compiler {                compilerId         =  CompilerId UHC uhcVersion,-               compilerAbiTag     =  C.NoAbiTag,+               compilerAbiTag     =  NoAbiTag,                compilerCompat     =  [],                compilerLanguages  =  uhcLanguages,                compilerExtensions =  uhcLanguageExtensions,@@ -69,11 +69,11 @@       compPlatform = Nothing   return (comp, compPlatform, progdb') -uhcLanguages :: [(Language, C.Flag)]+uhcLanguages :: [(Language, CompilerFlag)] uhcLanguages = [(Haskell98, "")]  -- | The flags for the supported extensions.-uhcLanguageExtensions :: [(Extension, Maybe C.Flag)]+uhcLanguageExtensions :: [(Extension, Maybe CompilerFlag)] uhcLanguageExtensions =     let doFlag (f, (enable, disable)) = [(EnableExtension  f, enable),                                          (DisableExtension f, disable)]@@ -122,7 +122,7 @@   where     trimEnd = reverse . dropWhile isSpace . reverse -getUserPackageDir :: NoCallStackIO FilePath+getUserPackageDir :: IO FilePath getUserPackageDir = do     homeDir <- getHomeDirectory     return $ homeDir </> ".cabal" </> "lib"  -- TODO: determine in some other way@@ -151,7 +151,7 @@ -- | Check if a certain dir contains a valid package. Currently, we are -- looking only for the presence of an installed package configuration. -- TODO: Actually make use of the information provided in the file.-isPkgDir :: String -> String -> String -> NoCallStackIO Bool+isPkgDir :: String -> String -> String -> IO Bool isPkgDir _ _   ('.' : _)  = return False  -- ignore files starting with a . isPkgDir c dir xs         = do                               let candidate = dir </> uhcPackageDir xs c
Distribution/Simple/Utils.hs view
@@ -50,6 +50,7 @@         rawSystemStdout,         rawSystemStdInOut,         rawSystemIOWithEnv,+        rawSystemIOWithEnvAndAction,         createProcessWithEnv,         maybeExit,         xargs,@@ -93,10 +94,13 @@          -- * finding files         findFileEx,+        findFileCwd,         findFirstFile,         findFileWithExtension,+        findFileCwdWithExtension,         findFileWithExtension',         findAllFilesWithExtension,+        findAllFilesCwdWithExtension,         findModuleFileEx,         findModuleFilesEx,         getDirectoryContentsRecursive,@@ -118,13 +122,16 @@         -- * .cabal and .buildinfo files         defaultPackageDesc,         findPackageDesc,+        findPackageDescCwd,         tryFindPackageDesc,+        tryFindPackageDescCwd,         findHookedPackageDesc,          -- * reading and writing files safely         withFileContents,         writeFileAtomic,         rewriteFileEx,+        rewriteFileLBS,          -- * Unicode         fromUTF8BS,@@ -182,7 +189,6 @@ import Distribution.Compat.Async import Distribution.Compat.CopyFile import Distribution.Compat.Internal.TempFile-import Distribution.Compat.Exception import Distribution.Compat.FilePath as FilePath import Distribution.Compat.Stack import Distribution.Verbosity@@ -215,15 +221,13 @@     , getModificationTime, createDirectory, removeDirectoryRecursive ) import System.Environment     ( getProgName )-import System.Exit-    ( exitWith, ExitCode(..) ) import System.FilePath as FilePath     ( normalise, (</>), (<.>)     , getSearchPath, joinPath, takeDirectory, splitExtension     , splitDirectories, searchPathSeparator ) import System.IO     ( Handle, hSetBinaryMode, hGetContents, stderr, stdout, hPutStr, hFlush-    , hClose, hSetBuffering, BufferMode(..) )+    , hClose, hSetBuffering, BufferMode(..), hPutStrLn ) import System.IO.Error import System.IO.Unsafe     ( unsafeInterleaveIO )@@ -231,7 +235,6 @@  import Foreign.C.Error (Errno (..), ePIPE) import Data.Time.Clock.POSIX (getPOSIXTime, POSIXTime)-import Control.Exception (IOException, evaluate, throwIO, fromException) import Numeric (showFFloat) import Distribution.Compat.Process  (createProcess, rawSystem, runInteractiveProcess) import System.Process@@ -382,15 +385,15 @@       ]   where     -- Let async exceptions rise to the top for the default top-handler-    rethrowAsyncExceptions :: Exception.AsyncException -> NoCallStackIO a+    rethrowAsyncExceptions :: Exception.AsyncException -> IO a     rethrowAsyncExceptions a = throwIO a      -- ExitCode gets thrown asynchronously too, and we don't want to print it-    rethrowExitStatus :: ExitCode -> NoCallStackIO a+    rethrowExitStatus :: ExitCode -> IO a     rethrowExitStatus = throwIO      -- Print all other exceptions-    handle :: Exception.SomeException -> NoCallStackIO a+    handle :: Exception.SomeException -> IO a     handle se = do       hFlush stdout       pname <- getProgName@@ -428,6 +431,11 @@ topHandler :: IO a -> IO a topHandler prog = topHandlerWith (const $ exitWith (ExitFailure 1)) prog +verbosityHandle :: Verbosity -> Handle+verbosityHandle verbosity+    | isVerboseStderr verbosity = stderr+    | otherwise                 = stdout+ -- | Non fatal conditions that may be indicative of an error or problem. -- -- We display these at the 'normal' verbosity level.@@ -451,10 +459,12 @@ notice :: Verbosity -> String -> IO () notice verbosity msg = withFrozenCallStack $ do   when (verbosity >= normal) $ do+    let h = verbosityHandle verbosity     ts <- getPOSIXTime-    hPutStr stdout . withMetadata ts NormalMark FlagTrace verbosity-                   . wrapTextVerbosity verbosity-                   $ msg+    hPutStr h+        $ withMetadata ts NormalMark FlagTrace verbosity+        $ wrapTextVerbosity verbosity+        $ msg  -- | Display a message at 'normal' verbosity level, but without -- wrapping.@@ -462,8 +472,9 @@ noticeNoWrap :: Verbosity -> String -> IO () noticeNoWrap verbosity msg = withFrozenCallStack $ do   when (verbosity >= normal) $ do+    let h = verbosityHandle verbosity     ts <- getPOSIXTime-    hPutStr stdout . withMetadata ts NormalMark FlagTrace verbosity $ msg+    hPutStr h . withMetadata ts NormalMark FlagTrace verbosity $ msg  -- | Pretty-print a 'Disp.Doc' status message at 'normal' verbosity -- level.  Use this if you need fancy formatting.@@ -471,9 +482,12 @@ noticeDoc :: Verbosity -> Disp.Doc -> IO () noticeDoc verbosity msg = withFrozenCallStack $ do   when (verbosity >= normal) $ do+    let h = verbosityHandle verbosity     ts <- getPOSIXTime-    hPutStr stdout . withMetadata ts NormalMark FlagTrace verbosity-                   . Disp.renderStyle defaultStyle $ msg+    hPutStr h+        $ withMetadata ts NormalMark FlagTrace verbosity+        $ Disp.renderStyle defaultStyle+        $ msg  -- | Display a "setup status message".  Prefer using setupMessage' -- if possible.@@ -489,17 +503,21 @@ info :: Verbosity -> String -> IO () info verbosity msg = withFrozenCallStack $   when (verbosity >= verbose) $ do+    let h = verbosityHandle verbosity     ts <- getPOSIXTime-    hPutStr stdout . withMetadata ts NeverMark FlagTrace verbosity-                   . wrapTextVerbosity verbosity-                   $ msg+    hPutStr h+        $ withMetadata ts NeverMark FlagTrace verbosity+        $ wrapTextVerbosity verbosity+        $ msg  infoNoWrap :: Verbosity -> String -> IO () infoNoWrap verbosity msg = withFrozenCallStack $   when (verbosity >= verbose) $ do+    let h = verbosityHandle verbosity     ts <- getPOSIXTime-    hPutStr stdout . withMetadata ts NeverMark FlagTrace verbosity-                   $ msg+    hPutStr h+        $ withMetadata ts NeverMark FlagTrace verbosity+        $ msg  -- | Detailed internal debugging information --@@ -508,10 +526,11 @@ debug :: Verbosity -> String -> IO () debug verbosity msg = withFrozenCallStack $   when (verbosity >= deafening) $ do+    let h = verbosityHandle verbosity     ts <- getPOSIXTime-    hPutStr stdout . withMetadata ts NeverMark FlagTrace verbosity-                   . wrapTextVerbosity verbosity-                   $ msg+    hPutStr h $ withMetadata ts NeverMark FlagTrace verbosity+              $ wrapTextVerbosity verbosity+              $ msg     -- ensure that we don't lose output if we segfault/infinite loop     hFlush stdout @@ -520,9 +539,11 @@ debugNoWrap :: Verbosity -> String -> IO () debugNoWrap verbosity msg = withFrozenCallStack $   when (verbosity >= deafening) $ do+    let h = verbosityHandle verbosity     ts <- getPOSIXTime-    hPutStr stdout . withMetadata ts NeverMark FlagTrace verbosity-                   $ msg+    hPutStr h+        $ withMetadata ts NeverMark FlagTrace verbosity+        $ msg     -- ensure that we don't lose output if we segfault/infinite loop     hFlush stdout @@ -533,11 +554,11 @@           -> IO () chattyTry desc action =   catchIO action $ \exception ->-    putStrLn $ "Error while " ++ desc ++ ": " ++ show exception+    hPutStrLn stderr $ "Error while " ++ desc ++ ": " ++ show exception  -- | Run an IO computation, returning @e@ if it raises a "file -- does not exist" error.-handleDoesNotExist :: a -> NoCallStackIO a -> NoCallStackIO a+handleDoesNotExist :: a -> IO a -> IO a handleDoesNotExist e =     Exception.handleJust       (\ioe -> if isDoesNotExistError ioe then Just ioe else Nothing)@@ -763,6 +784,29 @@     mbToStd :: Maybe Handle -> Process.StdStream     mbToStd = maybe Process.Inherit Process.UseHandle +rawSystemIOWithEnvAndAction+    :: Verbosity+    -> FilePath+    -> [String]+    -> Maybe FilePath           -- ^ New working dir or inherit+    -> Maybe [(String, String)] -- ^ New environment or inherit+    -> IO a          -- ^ action to perform after process is created, but before 'waitForProcess'.+    -> Maybe Handle  -- ^ stdin+    -> Maybe Handle  -- ^ stdout+    -> Maybe Handle  -- ^ stderr+    -> IO (ExitCode, a)+rawSystemIOWithEnvAndAction verbosity path args mcwd menv action inp out err = withFrozenCallStack $ do+    (_,_,_,ph) <- createProcessWithEnv verbosity path args mcwd menv+                                       (mbToStd inp) (mbToStd out) (mbToStd err)+    a <- action+    exitcode <- waitForProcess ph+    unless (exitcode == ExitSuccess) $ do+      debug verbosity $ path ++ " returned " ++ show exitcode+    return (exitcode, a)+  where+    mbToStd :: Maybe Handle -> Process.StdStream+    mbToStd = maybe Process.Inherit Process.UseHandle+ createProcessWithEnv ::      Verbosity   -> FilePath@@ -799,7 +843,7 @@ -- -- The output is assumed to be text in the locale encoding. ---rawSystemStdout :: forall mode. KnownIODataMode mode => Verbosity -> FilePath -> [String] -> IO mode +rawSystemStdout :: forall mode. KnownIODataMode mode => Verbosity -> FilePath -> [String] -> IO mode rawSystemStdout verbosity path args = withFrozenCallStack $ do   (output, errors, exitCode) <- rawSystemStdInOut verbosity path args     Nothing Nothing Nothing (IOData.iodataMode :: IODataMode mode)@@ -861,19 +905,19 @@                               Just (IODataText inp)   -> "\nstdin input:\n" ++ inp                               Just (IODataBinary inp) -> "\nstdin input (binary):\n" ++ show inp -        -- Check if we we hit an exception while consuming the output+        -- Check if we hit an exception while consuming the output         -- (e.g. a text decoding error)         out <- reportOutputIOError mberr1          return (out, err, exitcode)   where-    reportOutputIOError :: Either Exception.SomeException a -> NoCallStackIO a+    reportOutputIOError :: Either Exception.SomeException a -> IO a     reportOutputIOError (Right x) = return x     reportOutputIOError (Left exc) = case fromException exc of         Just ioe -> throwIO (ioeSetFileName ioe ("output of " ++ path))         Nothing  -> throwIO exc -    ignoreSigPipe :: NoCallStackIO () -> NoCallStackIO ()+    ignoreSigPipe :: IO () -> IO ()     ignoreSigPipe = Exception.handle $ \e -> case e of         GHC.IOError { GHC.ioe_type  = GHC.ResourceVanished, GHC.ioe_errno = Just ioe }             | Errno ioe == ePIPE -> return ()@@ -943,6 +987,21 @@  -- | Find a file by looking in a search path. The file path must match exactly. --+-- @since 3.4.0.0+findFileCwd+    :: Verbosity+    -> FilePath      -- ^ cwd+    -> [FilePath]    -- ^ relative search location+    -> FilePath      -- ^ File Name+    -> IO FilePath+findFileCwd verbosity cwd searchPath fileName =+  findFirstFile (cwd </>)+    [ path </> fileName+    | path <- nub searchPath]+  >>= maybe (die' verbosity $ fileName ++ " doesn't exist") return++-- | Find a file by looking in a search path. The file path must match exactly.+-- findFileEx :: Verbosity            -> [FilePath]    -- ^search locations            -> FilePath      -- ^File Name@@ -960,17 +1019,43 @@ findFileWithExtension :: [String]                       -> [FilePath]                       -> FilePath-                      -> NoCallStackIO (Maybe FilePath)+                      -> IO (Maybe FilePath) findFileWithExtension extensions searchPath baseName =   findFirstFile id     [ path </> baseName <.> ext     | path <- nub searchPath     , ext <- nub extensions ] +-- | @since 3.4.0.0+findFileCwdWithExtension+    :: FilePath+    -> [String]+    -> [FilePath]+    -> FilePath+    -> IO (Maybe FilePath)+findFileCwdWithExtension cwd extensions searchPath baseName =+  findFirstFile (cwd </>)+    [ path </> baseName <.> ext+    | path <- nub searchPath+    , ext <- nub extensions ]++-- | @since 3.4.0.0+findAllFilesCwdWithExtension+    :: FilePath       -- ^ cwd+    -> [String]       -- ^ extensions+    -> [FilePath]     -- ^ relative search locations+    -> FilePath       -- ^ basename+    -> IO [FilePath]+findAllFilesCwdWithExtension cwd extensions searchPath basename =+  findAllFiles (cwd </>)+    [ path </> basename <.> ext+    | path <- nub searchPath+    , ext <- nub extensions ]+ findAllFilesWithExtension :: [String]                           -> [FilePath]                           -> FilePath-                          -> NoCallStackIO [FilePath]+                          -> IO [FilePath] findAllFilesWithExtension extensions searchPath basename =   findAllFiles id     [ path </> basename <.> ext@@ -983,14 +1068,14 @@ findFileWithExtension' :: [String]                        -> [FilePath]                        -> FilePath-                       -> NoCallStackIO (Maybe (FilePath, FilePath))+                       -> IO (Maybe (FilePath, FilePath)) findFileWithExtension' extensions searchPath baseName =   findFirstFile (uncurry (</>))     [ (path, baseName <.> ext)     | path <- nub searchPath     , ext <- nub extensions ] -findFirstFile :: (a -> FilePath) -> [a] -> NoCallStackIO (Maybe a)+findFirstFile :: (a -> FilePath) -> [a] -> IO (Maybe a) findFirstFile file = findFirst   where findFirst []     = return Nothing         findFirst (x:xs) = do exists <- doesFileExist (file x)@@ -998,7 +1083,7 @@                                 then return (Just x)                                 else findFirst xs -findAllFiles :: (a -> FilePath) -> [a] -> NoCallStackIO [a]+findAllFiles :: (a -> FilePath) -> [a] -> IO [a] findAllFiles file = filterM (doesFileExist . file)  @@ -1084,7 +1169,7 @@ -- Environment variables  -- | Is this directory in the system search path?-isInSearchPath :: FilePath -> NoCallStackIO Bool+isInSearchPath :: FilePath -> IO Bool isInSearchPath path = fmap (elem path) getSearchPath  addLibraryPath :: OS@@ -1114,7 +1199,7 @@ -- The expected use case is when the second file is generated using the first. -- In this use case, if the result is True then the second file is out of date. ---moreRecentFile :: FilePath -> FilePath -> NoCallStackIO Bool+moreRecentFile :: FilePath -> FilePath -> IO Bool moreRecentFile a b = do   exists <- doesFileExist b   if not exists@@ -1124,7 +1209,7 @@             return (ta > tb)  -- | Like 'moreRecentFile', but also checks that the first file exists.-existsAndIsMoreRecentThan :: FilePath -> FilePath -> NoCallStackIO Bool+existsAndIsMoreRecentThan :: FilePath -> FilePath -> IO Bool existsAndIsMoreRecentThan a b = do   exists <- doesFileExist a   if not exists@@ -1302,7 +1387,7 @@ -- File permissions  -- | Like 'doesFileExist', but also checks that the file is executable.-doesExecutableExist :: FilePath -> NoCallStackIO Bool+doesExecutableExist :: FilePath -> IO Bool doesExecutableExist f = do   exists <- doesFileExist f   if exists@@ -1341,7 +1426,7 @@     (\(name, handle) -> do hClose handle                            unless (optKeepTempFiles opts) $                              handleDoesNotExist () . removeFile $ name)-    (withLexicalCallStack (uncurry action))+    (withLexicalCallStack (\x -> uncurry action x))  -- | Create and use a temporary directory. --@@ -1356,7 +1441,7 @@ withTempDirectory :: Verbosity -> FilePath -> String -> (FilePath -> IO a) -> IO a withTempDirectory verbosity targetDir template f = withFrozenCallStack $   withTempDirectoryEx verbosity defaultTempFileOptions targetDir template-    (withLexicalCallStack f)+    (withLexicalCallStack (\x -> f x))  -- | A version of 'withTempDirectory' that additionally takes a -- 'TempFileOptions' argument.@@ -1367,7 +1452,7 @@     (createTempDirectory targetDir template)     (unless (optKeepTempFiles opts)      . handleDoesNotExist () . removeDirectoryRecursive)-    (withLexicalCallStack f)+    (withLexicalCallStack (\x -> f x))  ----------------------------------- -- Safely reading and writing files@@ -1380,21 +1465,25 @@ --     ASCII-representable. Since Cabal-3.0 the file is assumed to be --     UTF-8 encoded. rewriteFileEx :: Verbosity -> FilePath -> String -> IO ()-rewriteFileEx verbosity path newContent =+rewriteFileEx verbosity path =+  rewriteFileLBS verbosity path . toUTF8LBS++-- | Same as `rewriteFileEx` but for 'ByteString's.+rewriteFileLBS :: Verbosity -> FilePath -> BS.ByteString -> IO ()+rewriteFileLBS verbosity path newContent =   flip catchIO mightNotExist $ do     existingContent <- annotateIO verbosity $ BS.readFile path     _ <- evaluate (BS.length existingContent)-    unless (existingContent == newContent') $+    unless (existingContent == newContent) $       annotateIO verbosity $-        writeFileAtomic path newContent'+        writeFileAtomic path newContent   where-    newContent' = toUTF8LBS newContent-     mightNotExist e | isDoesNotExistError e-                    = annotateIO verbosity $ writeFileAtomic path newContent'+                    = annotateIO verbosity $ writeFileAtomic path newContent                     | otherwise                     = ioError e + -- | The path name that represents the current directory. -- In Unix, it's @\".\"@, but this is system-specific. -- (E.g. AmigaOS uses the empty string @\"\"@ for the current directory.)@@ -1454,17 +1543,24 @@ -- |Find a package description file in the given directory.  Looks for -- @.cabal@ files. findPackageDesc :: FilePath                    -- ^Where to look-                -> NoCallStackIO (Either String FilePath) -- ^<pkgname>.cabal-findPackageDesc dir- = do files <- getDirectoryContents dir+                -> IO (Either String FilePath) -- ^<pkgname>.cabal+findPackageDesc = findPackageDescCwd "."++-- | @since 3.4.0.0+findPackageDescCwd+    :: FilePath                    -- ^ project root+    -> FilePath                    -- ^ relative directory+    -> IO (Either String FilePath) -- ^ <pkgname>.cabal relative to the project root+findPackageDescCwd cwd dir+ = do files <- getDirectoryContents (cwd </> dir)       -- to make sure we do not mistake a ~/.cabal/ dir for a <pkgname>.cabal       -- file we filter to exclude dirs and null base file names:-      cabalFiles <- filterM doesFileExist-                       [ dir </> file+      cabalFiles <- filterM (doesFileExist . snd)+                       [ (dir </> file, cwd </> dir </> file)                        | file <- files                        , let (name, ext) = splitExtension file                        , not (null name) && ext == ".cabal" ]-      case cabalFiles of+      case map fst cabalFiles of         []          -> return (Left  noDesc)         [cabalFile] -> return (Right cabalFile)         multiple    -> return (Left  $ multiDesc multiple)@@ -1483,6 +1579,13 @@ tryFindPackageDesc :: Verbosity -> FilePath -> IO FilePath tryFindPackageDesc verbosity dir =   either (die' verbosity) return =<< findPackageDesc dir++-- | Like 'findPackageDescCwd', but calls 'die' in case of error.+--+-- @since 3.4.0.0+tryFindPackageDescCwd :: Verbosity -> FilePath -> FilePath -> IO FilePath+tryFindPackageDescCwd verbosity cwd dir =+  either (die' verbosity) return =<< findPackageDescCwd cwd dir  -- |Find auxiliary package information in the given directory. -- Looks for @.buildinfo@ files.
Distribution/System.hs view
@@ -60,7 +60,7 @@ -- are two situations where we need to do it. -- -- For parsing OS and arch names in .cabal files we really want everyone to be--- referring to the same or or arch by the same name. Variety is not a virtue+-- referring to the same or arch by the same name. Variety is not a virtue -- in this case. We don't mind about case though. -- -- For the System.Info.os\/arch different Haskell implementations use different@@ -132,6 +132,8 @@  instance Parsec OS where   parsec = classifyOS Compat <$> parsecIdent++  classifyOS :: ClassificationStrictness -> String -> OS classifyOS strictness s =
Distribution/Types/BenchmarkType.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}  module Distribution.Types.BenchmarkType (     BenchmarkType(..),@@ -12,7 +13,7 @@ import Distribution.Parsec import Distribution.Pretty import Distribution.Version-import Text.PrettyPrint          (char, text)+import Text.PrettyPrint     (char, text)  -- | The \"benchmark-type\" field in the benchmark stanza. --
Distribution/Types/BuildInfo.hs view
@@ -88,7 +88,7 @@                                        --   copying. E.g. [libHS<name>_<flavour> | flavour <- extraLibFlavours]. This                                        --   should only be needed in very specific cases, e.g. the `rts` package, where                                        --   there are multiple copies of slightly differently built libs.-        extraDynLibFlavours :: [String], -- ^ Hidden Flag. This set of strings will be be appended to all /dynamic/+        extraDynLibFlavours :: [String], -- ^ Hidden Flag. This set of strings will be appended to all /dynamic/                                          --   libraries when copying. This is particularly useful with the `rts` package,                                          --   where we want different dynamic flavours of the RTS library to be installed.         extraLibDirs      :: [String],
Distribution/Types/BuildType.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}  module Distribution.Types.BuildType (     BuildType(..),
Distribution/Types/ComponentLocalBuildInfo.hs view
@@ -19,8 +19,8 @@ import Distribution.Types.UnitId import Distribution.Types.ComponentName import Distribution.Types.MungedPackageName+import Distribution.Types.ModuleRenaming -import Distribution.PackageDescription import qualified Distribution.InstalledPackageInfo as Installed  -- | The first five fields are common across all algebraic variants.
Distribution/Types/CondTree.hs view
@@ -80,7 +80,7 @@  -- This instance is written by hand because GHC 8.0.1/8.0.2 infinite -- loops when trying to derive it with optimizations.  See--- https://ghc.haskell.org/trac/ghc/ticket/13056+-- https://gitlab.haskell.org/ghc/ghc/-/issues/13056 instance Foldable (CondBranch v c) where     foldMap f (CondBranch _ c Nothing) = foldMap f c     foldMap f (CondBranch _ c (Just a)) = foldMap f c `mappend` foldMap f a@@ -140,8 +140,9 @@  -- | Extract the condition matched by the given predicate from a cond tree. ----- We use this mainly for extracting buildable conditions (see the Note above),--- but the function is in fact more general.+-- We use this mainly for extracting buildable conditions (see the Note in+-- Distribution.PackageDescription.Configuration), but the function is in fact+-- more general. extractCondition :: Eq v => (a -> Bool) -> CondTree v c a -> Condition v extractCondition p = go   where
Distribution/Types/ConfVar.hs view
@@ -15,7 +15,7 @@ -- | A @ConfVar@ represents the variable type used. data ConfVar = OS OS              | Arch Arch-             | Flag FlagName+             | PackageFlag FlagName              | Impl CompilerFlavor VersionRange     deriving (Eq, Show, Typeable, Data, Generic) 
Distribution/Types/Dependency.hs view
@@ -1,42 +1,42 @@ {-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveGeneric      #-} module Distribution.Types.Dependency   ( Dependency(..)+  , mkDependency   , depPkgName   , depVerRange   , depLibraries-  , thisPackageVersion-  , notThisPackageVersion   , simplifyDependency+  , mainLibSet   ) where -import Prelude () import Distribution.Compat.Prelude+import Prelude () -import Distribution.Version ( VersionRange, thisVersion-                            , notThisVersion, anyVersion-                            , simplifyVersionRange )+import Distribution.Types.VersionRange (isAnyVersionLight)+import Distribution.Version            (VersionRange, anyVersion, simplifyVersionRange)  import Distribution.CabalSpecVersion-import Distribution.Pretty-import qualified Text.PrettyPrint as PP+import Distribution.Compat.CharParsing        (char, spaces)+import Distribution.Compat.Parsing            (between, option) import Distribution.Parsec-import Distribution.Compat.CharParsing (char, spaces)-import Distribution.Compat.Parsing (between, option)-import Distribution.Types.PackageId-import Distribution.Types.PackageName+import Distribution.Pretty import Distribution.Types.LibraryName+import Distribution.Types.PackageName import Distribution.Types.UnqualComponentName -import Text.PrettyPrint ((<+>))-import qualified Data.Set as Set+import qualified Distribution.Compat.NonEmptySet as NES+import qualified Text.PrettyPrint                as PP  -- | Describes a dependency on a source package (API) --+-- /Invariant:/ package name does not appear as 'LSubLibName' in+-- set of library names.+-- data Dependency = Dependency                     PackageName                     VersionRange-                    (Set LibraryName)+                    (NonEmptySet LibraryName)                     -- ^ The set of libraries required from the package.                     -- Only the selected libraries will be built.                     -- It does not affect the cabal-install solver yet.@@ -48,97 +48,128 @@ depVerRange :: Dependency -> VersionRange depVerRange (Dependency _ vr _) = vr -depLibraries :: Dependency -> Set LibraryName+depLibraries :: Dependency -> NonEmptySet LibraryName depLibraries (Dependency _ _ cs) = cs +-- | Smart constructor of 'Dependency'.+--+-- If 'PackageName' is appears as 'LSubLibName' in a set of sublibraries,+-- it is automatically converted to 'LMainLibName'.+--+-- @since 3.4.0.0+--+mkDependency :: PackageName -> VersionRange -> NonEmptySet LibraryName -> Dependency+mkDependency pn vr lb = Dependency pn vr (NES.map conv lb)+  where+    pn' = packageNameToUnqualComponentName pn++    conv l@LMainLibName                 = l+    conv l@(LSubLibName ln) | ln == pn' = LMainLibName+                            | otherwise = l+ instance Binary Dependency instance Structured Dependency instance NFData Dependency where rnf = genericRnf +-- |+--+-- >>> prettyShow $ Dependency "pkg" anyVersion mainLibSet+-- "pkg"+--+-- >>> prettyShow $ Dependency "pkg" anyVersion $ NES.insert (LSubLibName "sublib") mainLibSet+-- "pkg:{pkg, sublib}"+--+-- >>> prettyShow $ Dependency "pkg" anyVersion $ NES.singleton (LSubLibName "sublib")+-- "pkg:sublib"+--+-- >>> prettyShow $ Dependency "pkg" anyVersion $ NES.insert (LSubLibName "sublib-b") $ NES.singleton (LSubLibName "sublib-a")+-- "pkg:{sublib-a, sublib-b}"+-- instance Pretty Dependency where-    pretty (Dependency name ver sublibs) = pretty name-                                       <<>> optionalMonoid-                                            (sublibs /= Set.singleton LMainLibName)-                                            (PP.colon <<>> PP.braces prettySublibs)-                                       <+> pretty ver+    pretty (Dependency name ver sublibs) = withSubLibs (pretty name) <+> pver       where-        optionalMonoid True x = x-        optionalMonoid False _ = mempty-        prettySublibs = PP.hsep $ PP.punctuate PP.comma $ prettySublib <$> Set.toList sublibs-        prettySublib LMainLibName = PP.text $ unPackageName name-        prettySublib (LSubLibName un) = PP.text $ unUnqualComponentName un+        -- TODO: change to isAnyVersion after #6736+        pver | isAnyVersionLight ver = PP.empty+             | otherwise             = pretty ver -versionGuardMultilibs :: (Monad m, CabalParsing m) => m a -> m a-versionGuardMultilibs expr = do-  csv <- askCabalSpecVersion-  if csv < CabalSpecV3_0-  then fail $ unwords-    [ "Sublibrary dependency syntax used."-    , "To use this syntax the package needs to specify at least 'cabal-version: 3.0'."-    , "Alternatively, if you are depending on an internal library, you can write"-    , "directly the library name as it were a package."-    ]-  else-    expr+        withSubLibs doc = case NES.toList sublibs of+            [LMainLibName]   -> doc+            [LSubLibName uq] -> doc <<>> PP.colon <<>> pretty uq+            _                -> doc <<>> PP.colon <<>> PP.braces prettySublibs +        prettySublibs = PP.hsep $ PP.punctuate PP.comma $ prettySublib <$> NES.toList sublibs++        prettySublib LMainLibName     = PP.text $ unPackageName name+        prettySublib (LSubLibName un) = PP.text $ unUnqualComponentName un+ -- | -- -- >>> simpleParsec "mylib:sub" :: Maybe Dependency--- Just (Dependency (PackageName "mylib") AnyVersion (fromList [LSubLibName (UnqualComponentName "sub")]))+-- Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub") :| []))) -- -- >>> simpleParsec "mylib:{sub1,sub2}" :: Maybe Dependency--- Just (Dependency (PackageName "mylib") AnyVersion (fromList [LSubLibName (UnqualComponentName "sub1"),LSubLibName (UnqualComponentName "sub2")]))+-- Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")]))) -- -- >>> simpleParsec "mylib:{ sub1 , sub2 }" :: Maybe Dependency--- Just (Dependency (PackageName "mylib") AnyVersion (fromList [LSubLibName (UnqualComponentName "sub1"),LSubLibName (UnqualComponentName "sub2")]))+-- Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")]))) -- -- >>> simpleParsec "mylib:{ sub1 , sub2 } ^>= 42" :: Maybe Dependency--- Just (Dependency (PackageName "mylib") (MajorBoundVersion (mkVersion [42])) (fromList [LSubLibName (UnqualComponentName "sub1"),LSubLibName (UnqualComponentName "sub2")]))------ Spaces around colon are not allowed:+-- Just (Dependency (PackageName "mylib") (MajorBoundVersion (mkVersion [42])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")]))) ----- >>> simpleParsec "mylib: sub" :: Maybe Dependency+-- >>> simpleParsec "mylib:{ } ^>= 42" :: Maybe Dependency -- Nothing ----- >>> simpleParsec "mylib :sub" :: Maybe Dependency--- Nothing+-- >>> traverse_ print (map simpleParsec ["mylib:mylib", "mylib:{mylib}", "mylib:{mylib,sublib}" ] :: [Maybe Dependency])+-- Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [])))+-- Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [])))+-- Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [LSubLibName (UnqualComponentName "sublib")]))) ----- >>> simpleParsec "mylib: {sub1,sub2}" :: Maybe Dependency--- Nothing+-- Spaces around colon are not allowed: ----- >>> simpleParsec "mylib :{sub1,sub2}" :: Maybe Dependency--- Nothing+-- >>> map simpleParsec ["mylib: sub", "mylib :sub", "mylib: {sub1,sub2}", "mylib :{sub1,sub2}"] :: [Maybe Dependency]+-- [Nothing,Nothing,Nothing,Nothing] --+-- Sublibrary syntax is accepted since @cabal-version: 3.0@+--+-- >>> map (`simpleParsec'` "mylib:sub") [CabalSpecV2_4, CabalSpecV3_0] :: [Maybe Dependency]+-- [Nothing,Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub") :| [])))]+-- instance Parsec Dependency where     parsec = do         name <- parsec -        libs <- option [LMainLibName]-              $ (char ':' *>)-              $ versionGuardMultilibs-              $ pure <$> parseLib name <|> parseMultipleLibs name+        libs <- option mainLibSet $ do+          _ <- char ':'+          versionGuardMultilibs+          parsecWarning PWTExperimental "colon specifier is experimental feature (issue #5660)"+          NES.singleton <$> parseLib <|> parseMultipleLibs          spaces -- https://github.com/haskell/cabal/issues/5846          ver  <- parsec <|> pure anyVersion-        return $ Dependency name ver $ Set.fromList libs-      where makeLib pn ln | unPackageName pn == ln = LMainLibName-                          | otherwise = LSubLibName $ mkUnqualComponentName ln-            parseLib pn = makeLib pn <$> parsecUnqualComponentName-            parseMultipleLibs pn = between (char '{' *> spaces)-                                           (spaces <* char '}')-                                           $ parsecCommaList $ parseLib pn+        return $ mkDependency name ver libs+      where+        parseLib          = LSubLibName <$> parsec+        parseMultipleLibs = between+            (char '{' *> spaces)+            (spaces *> char '}')+            (NES.fromNonEmpty <$> parsecCommaNonEmpty parseLib) --- mempty should never be in a Dependency-as-dependency.--- This is only here until the Dependency-as-constraint problem is solved #5570.--- Same for below.-thisPackageVersion :: PackageIdentifier -> Dependency-thisPackageVersion (PackageIdentifier n v) =-  Dependency n (thisVersion v) Set.empty+versionGuardMultilibs :: CabalParsing m => m ()+versionGuardMultilibs = do+  csv <- askCabalSpecVersion+  when (csv < CabalSpecV3_0) $ fail $ unwords+    [ "Sublibrary dependency syntax used."+    , "To use this syntax the package needs to specify at least 'cabal-version: 3.0'."+    , "Alternatively, if you are depending on an internal library, you can write"+    , "directly the library name as it were a package."+    ] -notThisPackageVersion :: PackageIdentifier -> Dependency-notThisPackageVersion (PackageIdentifier n v) =-  Dependency n (notThisVersion v) Set.empty+-- | Library set with main library.+--+-- @since 3.4.0.0+mainLibSet :: NonEmptySet LibraryName+mainLibSet = NES.singleton LMainLibName  -- | Simplify the 'VersionRange' expression in a 'Dependency'. -- See 'simplifyVersionRange'.
Distribution/Types/DependencyMap.hs view
@@ -5,19 +5,20 @@     constrainBy, ) where -import Prelude () import Distribution.Compat.Prelude+import Prelude ()  import Distribution.Types.Dependency-import Distribution.Types.PackageName import Distribution.Types.LibraryName+import Distribution.Types.PackageName+import Distribution.Types.PackageVersionConstraint import Distribution.Version  import qualified Data.Map.Lazy as Map  -- | A map of dependencies.  Newtyped since the default monoid instance is not --   appropriate.  The monoid instance uses 'intersectVersionRanges'.-newtype DependencyMap = DependencyMap { unDependencyMap :: Map PackageName (VersionRange, Set LibraryName) }+newtype DependencyMap = DependencyMap { unDependencyMap :: Map PackageName (VersionRange, NonEmptySet LibraryName) }   deriving (Show, Read)  instance Monoid DependencyMap where@@ -28,9 +29,9 @@     (DependencyMap a) <> (DependencyMap b) =         DependencyMap (Map.unionWith intersectVersionRangesAndJoinComponents a b) -intersectVersionRangesAndJoinComponents :: (VersionRange, Set LibraryName)-                                        -> (VersionRange, Set LibraryName)-                                        -> (VersionRange, Set LibraryName)+intersectVersionRangesAndJoinComponents :: (VersionRange, NonEmptySet LibraryName)+                                        -> (VersionRange, NonEmptySet LibraryName)+                                        -> (VersionRange, NonEmptySet LibraryName) intersectVersionRangesAndJoinComponents (va, ca) (vb, cb) =   (intersectVersionRanges va vb, ca <> cb) @@ -45,14 +46,12 @@ -- Combines dependencies where the result will only contain keys from the left -- (first) map.  If a key also exists in the right map, both constraints will -- be intersected.-constrainBy :: DependencyMap  -- ^ Input map-            -> DependencyMap  -- ^ Extra constraints-            -> DependencyMap-constrainBy left extra =-    DependencyMap $-      Map.foldrWithKey tightenConstraint (unDependencyMap left)-                                         (unDependencyMap extra)-  where tightenConstraint n c l =-            case Map.lookup n l of-              Nothing -> l-              Just vrcs -> Map.insert n (intersectVersionRangesAndJoinComponents vrcs c) l+constrainBy+    :: DependencyMap+    -> [PackageVersionConstraint]+    -> DependencyMap+constrainBy = foldl' tightenConstraint where+    tightenConstraint (DependencyMap l) (PackageVersionConstraint pn vr) = DependencyMap $+        case Map.lookup pn l of+            Nothing        -> l+            Just (vr', cs) -> Map.insert pn (intersectVersionRanges vr' vr, cs) l
Distribution/Types/ExeDependency.hs view
@@ -13,10 +13,10 @@ import Distribution.Types.ComponentName import Distribution.Types.PackageName import Distribution.Types.UnqualComponentName-import Distribution.Version                   (VersionRange, anyVersion)+import Distribution.Version                   (VersionRange, anyVersion, isAnyVersion)  import qualified Distribution.Compat.CharParsing as P-import           Text.PrettyPrint           (text, (<+>))+import qualified Text.PrettyPrint as PP  -- | Describes a dependency on an executable from a package --@@ -32,14 +32,17 @@  instance Pretty ExeDependency where   pretty (ExeDependency name exe ver) =-    (pretty name <<>> text ":" <<>> pretty exe) <+> pretty ver+      pretty name <<>> PP.colon <<>> pretty exe PP.<+> pver+    where+      pver | isAnyVersion ver = PP.empty+           | otherwise        = pretty ver  -- |  -- -- Examples -- -- >>> simpleParsec "happy:happy" :: Maybe ExeDependency--- Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") AnyVersion)+-- Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") (OrLaterVersion (mkVersion [0]))) -- -- >>> simpleParsec "happy:happy >= 1.19.12" :: Maybe ExeDependency -- Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") (OrLaterVersion (mkVersion [1,19,12])))
Distribution/Types/ExecutableScope.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}  module Distribution.Types.ExecutableScope (     ExecutableScope(..),
Distribution/Types/Flag.hs view
@@ -2,11 +2,14 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} module Distribution.Types.Flag (-    Flag(..),+    -- * Package flag+    PackageFlag(..),     emptyFlag,+    -- * Flag name     FlagName,     mkFlagName,     unFlagName,+    -- * Flag assignment     FlagAssignment,     mkFlagAssignment,     unFlagAssignment,@@ -17,7 +20,13 @@     nullFlagAssignment,     showFlagValue,     dispFlagAssignment,+    showFlagAssignment,     parsecFlagAssignment,+    parsecFlagAssignmentNonEmpty,+    -- ** Legacy formats+    legacyShowFlagAssignment,+    legacyShowFlagAssignment',+    legacyParsecFlagAssignment,     ) where  import Prelude ()@@ -37,7 +46,7 @@  -- | A flag can represent a feature to be included, or a way of linking --   a target against its dependencies, or in fact whatever you can think of.-data Flag = MkFlag+data PackageFlag = MkPackageFlag     { flagName        :: FlagName     , flagDescription :: String     , flagDefault     :: Bool@@ -45,14 +54,13 @@     }     deriving (Show, Eq, Typeable, Data, Generic) -instance Binary Flag-instance Structured Flag--instance NFData Flag where rnf = genericRnf+instance Binary PackageFlag+instance Structured PackageFlag+instance NFData PackageFlag where rnf = genericRnf --- | A 'Flag' initialized with default parameters.-emptyFlag :: FlagName -> Flag-emptyFlag name = MkFlag+-- | A 'PackageFlag' initialized with default parameters.+emptyFlag :: FlagName -> PackageFlag+emptyFlag name = MkPackageFlag     { flagName        = name     , flagDescription = ""     , flagDefault     = True@@ -112,6 +120,8 @@ -- discovered during configuration. For example @--flags=foo --flags=-bar@ -- becomes @[("foo", True), ("bar", False)]@ --+-- TODO: Why we record the multiplicity of the flag?+-- newtype FlagAssignment   = FlagAssignment { getFlagAssignment :: Map.Map FlagName (Int, Bool) }   deriving (Binary, Generic, NFData, Typeable)@@ -230,6 +240,32 @@ showFlagValue (f, True)   = '+' : unFlagName f showFlagValue (f, False)  = '-' : unFlagName f +-- | @since 3.4.0.0+instance Pretty FlagAssignment where+    pretty = dispFlagAssignment++-- |+--+-- >>> simpleParsec "" :: Maybe FlagAssignment+-- Just (fromList [])+--+-- >>> simpleParsec "+foo -bar" :: Maybe FlagAssignment+-- Just (fromList [(FlagName "bar",(1,False)),(FlagName "foo",(1,True))])+--+-- >>> simpleParsec "-none -any" :: Maybe FlagAssignment+-- Just (fromList [(FlagName "any",(1,False)),(FlagName "none",(1,False))])+--+-- >>> simpleParsec "+foo -foo +foo +foo" :: Maybe FlagAssignment+-- Just (fromList [(FlagName "foo",(4,True))])+--+-- >>> simpleParsec "+foo -bar baz" :: Maybe FlagAssignment+-- Nothing+--+-- @since 3.4.0.0+--+instance Parsec FlagAssignment where+    parsec = parsecFlagAssignment+ -- | Pretty-prints a flag assignment. dispFlagAssignment :: FlagAssignment -> Disp.Doc dispFlagAssignment = Disp.hsep . map (Disp.text . showFlagValue) . unFlagAssignment@@ -237,6 +273,67 @@ -- | Parses a flag assignment. parsecFlagAssignment :: CabalParsing m => m FlagAssignment parsecFlagAssignment = mkFlagAssignment <$>+                       P.sepBy (onFlag <|> offFlag) P.skipSpaces1+  where+    onFlag = do+        _ <- P.char '+'+        f <- parsec+        return (f, True)+    offFlag = do+        _ <- P.char '-'+        f <- parsec+        return (f, False)++-- | Parse a non-empty flag assignment+--+-- The flags have to explicitly start with minus or plus.+--+-- @since 3.4.0.0+parsecFlagAssignmentNonEmpty :: CabalParsing m => m FlagAssignment+parsecFlagAssignmentNonEmpty = mkFlagAssignment . toList <$>+    P.sepByNonEmpty (onFlag <|> offFlag) P.skipSpaces1+  where+    onFlag = do+        _ <- P.char '+'+        f <- parsec+        return (f, True)+    offFlag = do+        _ <- P.char '-'+        f <- parsec+        return (f, False)++-- | Show flag assignment.+--+-- @since 3.4.0.0+showFlagAssignment :: FlagAssignment -> String+showFlagAssignment = prettyShow . dispFlagAssignment++-------------------------------------------------------------------------------+-- Legacy: without requiring ++-------------------------------------------------------------------------------++-- | We need this as far as we support custom setups older than 2.2.0.0+--+-- @since 3.4.0.0+legacyShowFlagAssignment :: FlagAssignment -> String+legacyShowFlagAssignment =+    prettyShow .  Disp.hsep . map Disp.text . legacyShowFlagAssignment'++-- | @since 3.4.0.0+legacyShowFlagAssignment' :: FlagAssignment -> [String]+legacyShowFlagAssignment' = map legacyShowFlagValue . unFlagAssignment++-- | @since 3.4.0.0+legacyShowFlagValue :: (FlagName, Bool) -> String+legacyShowFlagValue (f, True)   =       unFlagName f+legacyShowFlagValue (f, False)  = '-' : unFlagName f++-- |+-- We need this as far as we support custom setups older than 2.2.0.0+--+-- @since 3.4.0.0+legacyParsecFlagAssignment :: CabalParsing m => m FlagAssignment+legacyParsecFlagAssignment = mkFlagAssignment <$>                        P.sepBy (onFlag <|> offFlag) P.skipSpaces1   where     onFlag = do
Distribution/Types/ForeignLib.hs view
@@ -30,8 +30,8 @@ import Distribution.Version  import qualified Distribution.Compat.CharParsing as P-import qualified Text.PrettyPrint           as Disp-import qualified Text.Read                  as Read+import qualified Text.PrettyPrint                as Disp+import qualified Text.Read                       as Read  import qualified Distribution.Types.BuildInfo.Lens as L 
Distribution/Types/ForeignLibOption.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}  module Distribution.Types.ForeignLibOption(     ForeignLibOption(..)
Distribution/Types/ForeignLibType.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}  module Distribution.Types.ForeignLibType(     ForeignLibType(..),
Distribution/Types/GenericPackageDescription.hs view
@@ -2,6 +2,7 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE ScopedTypeVariables #-}  module Distribution.Types.GenericPackageDescription (     GenericPackageDescription(..),@@ -28,6 +29,7 @@ import Distribution.Types.TestSuite import Distribution.Types.UnqualComponentName import Distribution.Package+import Distribution.Version  -- --------------------------------------------------------------------------- -- The 'GenericPackageDescription' type@@ -35,7 +37,16 @@ data GenericPackageDescription =   GenericPackageDescription   { packageDescription :: PackageDescription-  , genPackageFlags    :: [Flag]+  , gpdScannedVersion  :: Maybe Version+    -- ^ This is a version as specified in source.+    --   We populate this field in index reading for dummy GPDs,+    --   only when GPD reading failed, but scanning haven't.+    --+    --   Cabal-the-library never produces GPDs with Just as gpdScannedVersion.+    --+    --   Perfectly, PackageIndex should have sum type, so we don't need to+    --   have dummy GPDs.+  , genPackageFlags    :: [PackageFlag]   , condLibrary        :: Maybe (CondTree ConfVar [Dependency] Library)   , condSubLibraries   :: [( UnqualComponentName                            , CondTree ConfVar [Dependency] Library )]@@ -58,19 +69,37 @@ instance NFData GenericPackageDescription where rnf = genericRnf  emptyGenericPackageDescription :: GenericPackageDescription-emptyGenericPackageDescription = GenericPackageDescription emptyPackageDescription [] Nothing [] [] [] [] []+emptyGenericPackageDescription = GenericPackageDescription emptyPackageDescription Nothing [] Nothing [] [] [] [] []  -- ----------------------------------------------------------------------------- -- Traversal Instances  instance L.HasBuildInfos GenericPackageDescription where-  traverseBuildInfos f (GenericPackageDescription p a1 x1 x2 x3 x4 x5 x6) =-    GenericPackageDescription-        <$> L.traverseBuildInfos f p-        <*> pure a1-        <*> (traverse . traverse . L.buildInfo) f x1-        <*> (traverse . L._2 . traverse . L.buildInfo) f x2-        <*> (traverse . L._2 . traverse . L.buildInfo) f x3-        <*> (traverse . L._2 . traverse . L.buildInfo) f x4-        <*> (traverse . L._2 . traverse . L.buildInfo) f x5-        <*> (traverse . L._2 . traverse . L.buildInfo) f x6+    traverseBuildInfos f (GenericPackageDescription p v a1 x1 x2 x3 x4 x5 x6) =+        GenericPackageDescription+            <$> L.traverseBuildInfos f p+            <*> pure v+            <*> pure a1+            <*> (traverse . traverseCondTreeBuildInfo) f x1+            <*> (traverse . L._2 . traverseCondTreeBuildInfo) f x2+            <*> (traverse . L._2 . traverseCondTreeBuildInfo) f x3+            <*> (traverse . L._2 . traverseCondTreeBuildInfo) f x4+            <*> (traverse . L._2 . traverseCondTreeBuildInfo) f x5+            <*> (traverse . L._2 . traverseCondTreeBuildInfo) f x6+      where++-- We use this traversal to keep [Dependency] field in CondTree up to date.+traverseCondTreeBuildInfo+    :: forall f comp v. (Applicative f, L.HasBuildInfo comp)+    => LensLike' f (CondTree v [Dependency] comp) L.BuildInfo+traverseCondTreeBuildInfo g = node where+    mkCondNode :: comp -> [CondBranch v [Dependency] comp] -> CondTree v [Dependency] comp+    mkCondNode comp branches = CondNode comp (view L.targetBuildDepends comp) branches++    node (CondNode comp _ branches) = mkCondNode+        <$> L.buildInfo g comp+        <*> traverse branch branches++    branch (CondBranch v x y) = CondBranch v+        <$> node x+        <*> traverse node y
Distribution/Types/GenericPackageDescription/Lens.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE Rank2Types #-} module Distribution.Types.GenericPackageDescription.Lens (     GenericPackageDescription,-    Flag,+    PackageFlag,     FlagName,     ConfVar (..),     module Distribution.Types.GenericPackageDescription.Lens,@@ -22,14 +22,14 @@ import Distribution.Types.Benchmark (Benchmark) import Distribution.Types.ForeignLib (ForeignLib) import Distribution.Types.GenericPackageDescription (GenericPackageDescription(GenericPackageDescription) )-import Distribution.Types.Flag (Flag(MkFlag), FlagName)+import Distribution.Types.Flag (PackageFlag(MkPackageFlag), FlagName) import Distribution.Types.ConfVar (ConfVar (..)) import Distribution.Types.Library (Library) import Distribution.Types.TestSuite (TestSuite) import Distribution.Types.UnqualComponentName (UnqualComponentName) import Distribution.System (Arch, OS) import Distribution.Compiler (CompilerFlavor)-import Distribution.Version (VersionRange)+import Distribution.Version (Version, VersionRange)  ------------------------------------------------------------------------------- -- GenericPackageDescription@@ -39,7 +39,11 @@ packageDescription f s = fmap (\x -> s { T.packageDescription = x }) (f (T.packageDescription s)) {-# INLINE packageDescription #-} -genPackageFlags :: Lens' GenericPackageDescription [Flag]+gpdScannedVersion :: Lens' GenericPackageDescription (Maybe Version)+gpdScannedVersion f s = fmap (\x -> s { T.gpdScannedVersion = x }) (f (T.gpdScannedVersion s))+{-# INLINE gpdScannedVersion #-}++genPackageFlags :: Lens' GenericPackageDescription [PackageFlag] genPackageFlags f s = fmap (\x -> s { T.genPackageFlags = x }) (f (T.genPackageFlags s)) {-# INLINE genPackageFlags #-} @@ -73,9 +77,10 @@           -> f (CondTree ConfVar [Dependency] a))   -> GenericPackageDescription   -> f GenericPackageDescription-allCondTrees f (GenericPackageDescription p a1 x1 x2 x3 x4 x5 x6) =+allCondTrees f (GenericPackageDescription p v a1 x1 x2 x3 x4 x5 x6) =     GenericPackageDescription         <$> pure p+        <*> pure v         <*> pure a1         <*> traverse f x1         <*> (traverse . _2) f x2@@ -89,20 +94,20 @@ -- Flag ------------------------------------------------------------------------------- -flagName :: Lens' Flag FlagName-flagName f (MkFlag x1 x2 x3 x4) = fmap (\y1 -> MkFlag y1 x2 x3 x4) (f x1)+flagName :: Lens' PackageFlag FlagName+flagName f (MkPackageFlag x1 x2 x3 x4) = fmap (\y1 -> MkPackageFlag y1 x2 x3 x4) (f x1) {-# INLINE flagName #-} -flagDescription :: Lens' Flag String-flagDescription f (MkFlag x1 x2 x3 x4) = fmap (\y1 -> MkFlag x1 y1 x3 x4) (f x2)+flagDescription :: Lens' PackageFlag String+flagDescription f (MkPackageFlag x1 x2 x3 x4) = fmap (\y1 -> MkPackageFlag x1 y1 x3 x4) (f x2) {-# INLINE flagDescription #-} -flagDefault :: Lens' Flag Bool-flagDefault f (MkFlag x1 x2 x3 x4) = fmap (\y1 -> MkFlag x1 x2 y1 x4) (f x3)+flagDefault :: Lens' PackageFlag Bool+flagDefault f (MkPackageFlag x1 x2 x3 x4) = fmap (\y1 -> MkPackageFlag x1 x2 y1 x4) (f x3) {-# INLINE flagDefault #-} -flagManual :: Lens' Flag Bool-flagManual f (MkFlag x1 x2 x3 x4) = fmap (\y1 -> MkFlag x1 x2 x3 y1) (f x4)+flagManual :: Lens' PackageFlag Bool+flagManual f (MkPackageFlag x1 x2 x3 x4) = fmap (\y1 -> MkPackageFlag x1 x2 x3 y1) (f x4) {-# INLINE flagManual #-}  -------------------------------------------------------------------------------@@ -117,9 +122,9 @@ _Arch f (Arch arch) = Arch <$> f arch _Arch _ x           = pure x -_Flag :: Traversal' ConfVar FlagName-_Flag f (Flag flag) = Flag <$> f flag-_Flag _ x           = pure x+_PackageFlag :: Traversal' ConfVar FlagName+_PackageFlag f (PackageFlag flag) = PackageFlag <$> f flag+_PackageFlag _ x                  = pure x  _Impl :: Traversal' ConfVar (CompilerFlavor, VersionRange) _Impl f (Impl cf vr) = uncurry Impl <$> f (cf, vr)
Distribution/Types/IncludeRenaming.hs view
@@ -15,7 +15,7 @@ import qualified Distribution.Compat.CharParsing as P import           Distribution.Parsec import           Distribution.Pretty-import           Text.PrettyPrint           (text, (<+>))+import           Text.PrettyPrint           (text) import qualified Text.PrettyPrint           as Disp  -- ---------------------------------------------------------------------------@@ -54,7 +54,7 @@     parsec = do         prov_rn <- parsec         req_rn <- P.option defaultRenaming $ P.try $ do-            P.spaces+            P.spaces -- no need to be space             _ <- P.string "requires"             P.spaces             parsec
Distribution/Types/InstalledPackageInfo/FieldGrammar.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE ConstraintKinds       #-} {-# LANGUAGE FlexibleInstances     #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings     #-}@@ -19,11 +20,10 @@ import Distribution.ModuleName import Distribution.Package import Distribution.Parsec-import Distribution.Parsec.Newtypes import Distribution.Pretty+import Distribution.Types.LibraryName import Distribution.Types.LibraryVisibility import Distribution.Types.MungedPackageName-import Distribution.Types.LibraryName import Distribution.Types.UnqualComponentName import Distribution.Version @@ -44,16 +44,33 @@ -- 34886 KnownBranch --  8197 wild1_ixF0 ----- https://ghc.haskell.org/trac/ghc/ticket/13253 might be the cause.+-- https://gitlab.haskell.org/ghc/ghc/-/issues/13253 might be the cause. -- -- The workaround is to prevent GHC optimising the code:-infixl 4 <+>-(<+>) :: Applicative f => f (a -> b) -> f a -> f b-f <+> x = f <*> x-{-# NOINLINE (<+>) #-}+infixl 4 <@>+(<@>) :: Applicative f => f (a -> b) -> f a -> f b+f <@> x = f <*> x+{-# NOINLINE (<@>) #-}  ipiFieldGrammar-    :: (FieldGrammar g, Applicative (g InstalledPackageInfo), Applicative (g Basic))+    :: ( FieldGrammar c g, Applicative (g InstalledPackageInfo), Applicative (g Basic)+       , c (Identity AbiHash)+       , c (Identity LibraryVisibility)+       , c (Identity PackageName)+       , c (Identity UnitId)+       , c (Identity UnqualComponentName)+       , c (List FSep (Identity AbiDependency) AbiDependency)+       , c (List FSep (Identity UnitId) UnitId)+       , c (List FSep (MQuoted ModuleName) ModuleName)+       , c (List FSep FilePathNT String)+       , c (List FSep Token String)+       , c (MQuoted MungedPackageName)+       , c (MQuoted Version)+       , c CompatPackageKey+       , c ExposedModules+       , c InstWith+       , c SpecLicenseLenient+       )     => g InstalledPackageInfo InstalledPackageInfo ipiFieldGrammar = mkInstalledPackageInfo     -- Deprecated fields@@ -61,47 +78,47 @@         --- https://github.com/haskell/cabal/commit/40f3601e17024f07e0da8e64d3dd390177ce908b         ^^^ deprecatedSince CabalSpecV1_22 "hugs isn't supported anymore"     -- Very basic fields: name, version, package-name, lib-name and visibility-    <+> blurFieldGrammar basic basicFieldGrammar+    <@> blurFieldGrammar basic basicFieldGrammar     -- Basic fields-    <+> optionalFieldDef    "id"                                                 L.installedUnitId (mkUnitId "")-    <+> optionalFieldDefAla "instantiated-with"    InstWith                      L.instantiatedWith []-    <+> optionalFieldDefAla "key"                  CompatPackageKey              L.compatPackageKey ""-    <+> optionalFieldDefAla "license"              SpecLicenseLenient            L.license (Left SPDX.NONE)-    <+> freeTextFieldDefST    "copyright"                                          L.copyright-    <+> freeTextFieldDefST    "maintainer"                                         L.maintainer-    <+> freeTextFieldDefST    "author"                                             L.author-    <+> freeTextFieldDefST    "stability"                                          L.stability-    <+> freeTextFieldDefST    "homepage"                                           L.homepage-    <+> freeTextFieldDefST    "package-url"                                        L.pkgUrl-    <+> freeTextFieldDefST    "synopsis"                                           L.synopsis-    <+> freeTextFieldDefST    "description"                                        L.description-    <+> freeTextFieldDefST    "category"                                           L.category+    <@> optionalFieldDef    "id"                                                 L.installedUnitId (mkUnitId "")+    <@> optionalFieldDefAla "instantiated-with"    InstWith                      L.instantiatedWith []+    <@> optionalFieldDefAla "key"                  CompatPackageKey              L.compatPackageKey ""+    <@> optionalFieldDefAla "license"              SpecLicenseLenient            L.license (Left SPDX.NONE)+    <@> freeTextFieldDefST  "copyright"                                          L.copyright+    <@> freeTextFieldDefST  "maintainer"                                         L.maintainer+    <@> freeTextFieldDefST  "author"                                             L.author+    <@> freeTextFieldDefST  "stability"                                          L.stability+    <@> freeTextFieldDefST  "homepage"                                           L.homepage+    <@> freeTextFieldDefST  "package-url"                                        L.pkgUrl+    <@> freeTextFieldDefST  "synopsis"                                           L.synopsis+    <@> freeTextFieldDefST  "description"                                        L.description+    <@> freeTextFieldDefST  "category"                                           L.category     -- Installed fields-    <+> optionalFieldDef    "abi"                                                L.abiHash (mkAbiHash "")-    <+> booleanFieldDef     "indefinite"                                         L.indefinite False-    <+> booleanFieldDef     "exposed"                                            L.exposed False-    <+> monoidalFieldAla    "exposed-modules"      ExposedModules                L.exposedModules-    <+> monoidalFieldAla    "hidden-modules"       (alaList' FSep MQuoted)       L.hiddenModules-    <+> booleanFieldDef     "trusted"                                            L.trusted False-    <+> monoidalFieldAla    "import-dirs"          (alaList' FSep FilePathNT)    L.importDirs-    <+> monoidalFieldAla    "library-dirs"         (alaList' FSep FilePathNT)    L.libraryDirs-    <+> monoidalFieldAla    "dynamic-library-dirs" (alaList' FSep FilePathNT)    L.libraryDynDirs-    <+> optionalFieldDefAla "data-dir"             FilePathNT                    L.dataDir ""-    <+> monoidalFieldAla    "hs-libraries"         (alaList' FSep Token)         L.hsLibraries-    <+> monoidalFieldAla    "extra-libraries"      (alaList' FSep Token)         L.extraLibraries-    <+> monoidalFieldAla    "extra-ghci-libraries" (alaList' FSep Token)         L.extraGHCiLibraries-    <+> monoidalFieldAla    "include-dirs"         (alaList' FSep FilePathNT)    L.includeDirs-    <+> monoidalFieldAla    "includes"             (alaList' FSep FilePathNT)    L.includes-    <+> monoidalFieldAla    "depends"              (alaList FSep)                L.depends-    <+> monoidalFieldAla    "abi-depends"          (alaList FSep)                L.abiDepends-    <+> monoidalFieldAla    "cc-options"           (alaList' FSep Token)         L.ccOptions-    <+> monoidalFieldAla    "cxx-options"          (alaList' FSep Token)         L.cxxOptions-    <+> monoidalFieldAla    "ld-options"           (alaList' FSep Token)         L.ldOptions-    <+> monoidalFieldAla    "framework-dirs"       (alaList' FSep FilePathNT)    L.frameworkDirs-    <+> monoidalFieldAla    "frameworks"           (alaList' FSep Token)         L.frameworks-    <+> monoidalFieldAla    "haddock-interfaces"   (alaList' FSep FilePathNT)    L.haddockInterfaces-    <+> monoidalFieldAla    "haddock-html"         (alaList' FSep FilePathNT)    L.haddockHTMLs-    <+> optionalFieldAla    "pkgroot"              FilePathNT                    L.pkgRoot+    <@> optionalFieldDef    "abi"                                                L.abiHash (mkAbiHash "")+    <@> booleanFieldDef     "indefinite"                                         L.indefinite False+    <@> booleanFieldDef     "exposed"                                            L.exposed False+    <@> monoidalFieldAla    "exposed-modules"      ExposedModules                L.exposedModules+    <@> monoidalFieldAla    "hidden-modules"       (alaList' FSep MQuoted)       L.hiddenModules+    <@> booleanFieldDef     "trusted"                                            L.trusted False+    <@> monoidalFieldAla    "import-dirs"          (alaList' FSep FilePathNT)    L.importDirs+    <@> monoidalFieldAla    "library-dirs"         (alaList' FSep FilePathNT)    L.libraryDirs+    <@> monoidalFieldAla    "dynamic-library-dirs" (alaList' FSep FilePathNT)    L.libraryDynDirs+    <@> optionalFieldDefAla "data-dir"             FilePathNT                    L.dataDir ""+    <@> monoidalFieldAla    "hs-libraries"         (alaList' FSep Token)         L.hsLibraries+    <@> monoidalFieldAla    "extra-libraries"      (alaList' FSep Token)         L.extraLibraries+    <@> monoidalFieldAla    "extra-ghci-libraries" (alaList' FSep Token)         L.extraGHCiLibraries+    <@> monoidalFieldAla    "include-dirs"         (alaList' FSep FilePathNT)    L.includeDirs+    <@> monoidalFieldAla    "includes"             (alaList' FSep FilePathNT)    L.includes+    <@> monoidalFieldAla    "depends"              (alaList FSep)                L.depends+    <@> monoidalFieldAla    "abi-depends"          (alaList FSep)                L.abiDepends+    <@> monoidalFieldAla    "cc-options"           (alaList' FSep Token)         L.ccOptions+    <@> monoidalFieldAla    "cxx-options"          (alaList' FSep Token)         L.cxxOptions+    <@> monoidalFieldAla    "ld-options"           (alaList' FSep Token)         L.ldOptions+    <@> monoidalFieldAla    "framework-dirs"       (alaList' FSep FilePathNT)    L.frameworkDirs+    <@> monoidalFieldAla    "frameworks"           (alaList' FSep Token)         L.frameworks+    <@> monoidalFieldAla    "haddock-interfaces"   (alaList' FSep FilePathNT)    L.haddockInterfaces+    <@> monoidalFieldAla    "haddock-html"         (alaList' FSep FilePathNT)    L.haddockHTMLs+    <@> optionalFieldAla    "pkgroot"              FilePathNT                    L.pkgRoot   where     mkInstalledPackageInfo _ Basic {..} = InstalledPackageInfo         -- _basicPkgName is not used@@ -180,7 +197,6 @@ instance Pretty ExposedModules where     pretty = showExposedModules . getExposedModules - newtype CompatPackageKey = CompatPackageKey { getCompatPackageKey :: String }  instance Newtype String CompatPackageKey@@ -192,7 +208,6 @@     parsec = CompatPackageKey <$> P.munch1 uid_char where         uid_char c = Char.isAlphaNum c || c `elem` ("-_.=[],:<>+" :: String) - newtype InstWith = InstWith { getInstWith :: [(ModuleName,OpenModule)] }  instance Newtype  [(ModuleName, OpenModule)] InstWith@@ -203,7 +218,6 @@ instance Parsec InstWith where     parsec = InstWith . Map.toList <$> parsecOpenModuleSubst - -- | SPDX License expression or legacy license. Lenient parser, accepts either. newtype SpecLicenseLenient = SpecLicenseLenient { getSpecLicenseLenient :: Either SPDX.License License } @@ -270,14 +284,20 @@ {-# INLINE basicLibVisibility #-}  basicFieldGrammar-    :: (FieldGrammar g, Applicative (g Basic))+    :: ( FieldGrammar c g, Applicative (g Basic)+       , c (Identity LibraryVisibility)+       , c (Identity PackageName)+       , c (Identity UnqualComponentName)+       , c (MQuoted MungedPackageName)+       , c (MQuoted Version)+       )     => g Basic Basic basicFieldGrammar = mkBasic     <$> optionalFieldDefAla "name"          MQuoted  basicName (mungedPackageName emptyInstalledPackageInfo)     <*> optionalFieldDefAla "version"       MQuoted  basicVersion nullVersion     <*> optionalField       "package-name"           basicPkgName     <*> optionalField       "lib-name"               basicLibName-    <+> optionalFieldDef    "visibility"             basicLibVisibility LibraryVisibilityPrivate+    <*> optionalFieldDef    "visibility"             basicLibVisibility LibraryVisibilityPrivate   where     mkBasic n v pn ln lv = Basic n v pn ln' lv'       where
Distribution/Types/LegacyExeDependency.hs view
@@ -9,10 +9,10 @@  import Distribution.Parsec import Distribution.Pretty-import Distribution.Version      (VersionRange, anyVersion)+import Distribution.Version (VersionRange, anyVersion)  import qualified Distribution.Compat.CharParsing as P-import           Text.PrettyPrint           (text, (<+>))+import qualified Text.PrettyPrint                as Disp  -- | Describes a legacy `build-tools`-style dependency on an executable --@@ -31,8 +31,8 @@ instance NFData LegacyExeDependency where rnf = genericRnf  instance Pretty LegacyExeDependency where-  pretty (LegacyExeDependency name ver) =-    text name <+> pretty ver+    pretty (LegacyExeDependency name ver) =+        Disp.text name <+> pretty ver  instance Parsec LegacyExeDependency where     parsec = do
Distribution/Types/LibraryVisibility.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}  module Distribution.Types.LibraryVisibility(     LibraryVisibility(..),@@ -32,6 +33,7 @@ instance Parsec LibraryVisibility where   parsec = do     name <- P.munch1 isAlpha+    parsecWarning PWTExperimental "visibility is experimental feature (issue #5660)"     case name of       "public"  -> return LibraryVisibilityPublic       "private" -> return LibraryVisibilityPrivate
Distribution/Types/Mixin.hs view
@@ -3,21 +3,32 @@  module Distribution.Types.Mixin (     Mixin(..),+    mkMixin,+    normaliseMixin, ) where  import Distribution.Compat.Prelude import Prelude () -import Text.PrettyPrint ((<+>))-+import Distribution.CabalSpecVersion import Distribution.Parsec import Distribution.Pretty import Distribution.Types.IncludeRenaming+import Distribution.Types.LibraryName import Distribution.Types.PackageName+import Distribution.Types.UnqualComponentName  import qualified Distribution.Compat.CharParsing as P+import qualified Text.PrettyPrint                as PP +-- |+--+-- /Invariant:/ if 'mixinLibraryName' is 'LSubLibName', it's not+-- the same as 'mixinPackageName'. In other words,+-- the same invariant as 'Dependency' has.+-- data Mixin = Mixin { mixinPackageName :: PackageName+                   , mixinLibraryName :: LibraryName                    , mixinIncludeRenaming :: IncludeRenaming }     deriving (Show, Read, Eq, Ord, Typeable, Data, Generic) @@ -27,11 +38,56 @@ instance NFData Mixin where rnf = genericRnf  instance Pretty Mixin where-    pretty (Mixin pkg_name incl) = pretty pkg_name <+> pretty incl+    pretty (Mixin pn LMainLibName incl)     = pretty pn <+> pretty incl+    pretty (Mixin pn (LSubLibName ln) incl) = pretty pn <<>> PP.colon <<>> pretty ln <+> pretty incl +-- |+--+-- >>>  simpleParsec "mylib" :: Maybe Mixin+-- Just (Mixin {mixinPackageName = PackageName "mylib", mixinLibraryName = LMainLibName, mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})+--+-- >>>  simpleParsec "thatlib:sublib" :: Maybe Mixin+-- Just (Mixin {mixinPackageName = PackageName "thatlib", mixinLibraryName = LSubLibName (UnqualComponentName "sublib"), mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})+--+-- >>>  simpleParsec "thatlib:thatlib" :: Maybe Mixin+-- Just (Mixin {mixinPackageName = PackageName "thatlib", mixinLibraryName = LMainLibName, mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})+--+-- Sublibrary syntax is accepted since @cabal-version: 3.4@.+--+-- >>> map (`simpleParsec'` "mylib:sub") [CabalSpecV3_0, CabalSpecV3_4] :: [Maybe Mixin]+-- [Nothing,Just (Mixin {mixinPackageName = PackageName "mylib", mixinLibraryName = LSubLibName (UnqualComponentName "sub"), mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})]+-- instance Parsec Mixin where     parsec = do-        mod_name <- parsec+        pn <- parsec+        ln <- P.option LMainLibName $ do+            _ <- P.char ':'+            versionGuardMultilibs+            parsecWarning PWTExperimental "colon specifier is experimental feature (issue #5660)"+            LSubLibName <$> parsec         P.spaces         incl <- parsec-        return (Mixin mod_name incl)+        return (mkMixin pn ln incl)+      where++versionGuardMultilibs :: CabalParsing m => m ()+versionGuardMultilibs = do+  csv <- askCabalSpecVersion+  when (csv < CabalSpecV3_4) $ fail $ unwords+    [ "Sublibrary mixin syntax used."+    , "To use this syntax the package needs to specify at least 'cabal-version: 3.4'."+    ]++-- | Smart constructor of 'Mixin', enforces invariant.+-- +-- @since 3.4.0.0+mkMixin :: PackageName -> LibraryName -> IncludeRenaming -> Mixin+mkMixin pn (LSubLibName uqn) incl+    | packageNameToUnqualComponentName pn == uqn+    = Mixin pn LMainLibName incl+mkMixin pn ln incl+    = Mixin pn ln incl++-- | Restore invariant+normaliseMixin :: Mixin -> Mixin+normaliseMixin (Mixin pn ln incl) = mkMixin pn ln incl
Distribution/Types/ModuleReexport.hs view
@@ -14,8 +14,7 @@ import Distribution.Types.PackageName  import qualified Distribution.Compat.CharParsing as P-import           Text.PrettyPrint           ((<+>))-import qualified Text.PrettyPrint           as Disp+import qualified Text.PrettyPrint                as Disp  -- ----------------------------------------------------------------------------- -- Module re-exports
Distribution/Types/ModuleRenaming.hs view
@@ -20,7 +20,7 @@ import qualified Data.Map                   as Map import qualified Data.Set                   as Set import qualified Distribution.Compat.CharParsing as P-import           Text.PrettyPrint           (hsep, parens, punctuate, text, (<+>), comma)+import           Text.PrettyPrint           (hsep, parens, punctuate, text, comma)  -- | Renaming applied to the modules provided by a package. -- The boolean indicates whether or not to also include all of the
Distribution/Types/PackageDescription.hs view
@@ -28,8 +28,6 @@  module Distribution.Types.PackageDescription (     PackageDescription(..),-    specVersion,-    specVersion',     license,     license',     buildType,@@ -84,6 +82,7 @@ import Distribution.Types.SourceRepo import Distribution.Types.HookedBuildInfo +import Distribution.CabalSpecVersion import Distribution.Compiler import Distribution.License import Distribution.Package@@ -106,11 +105,7 @@         -- the following are required by all packages:          -- | The version of the Cabal spec that this package description uses.-        -- For historical reasons this is specified with a version range but-        -- only ranges of the form @>= v@ make sense. We are in the process of-        -- transitioning to specifying just a single version, not a range.-        -- See also 'specVersion'.-        specVersionRaw :: Either Version VersionRange,+        specVersion    :: CabalSpecVersion,         package        :: PackageIdentifier,         licenseRaw     :: Either SPDX.License License,         licenseFiles   :: [FilePath],@@ -160,25 +155,6 @@ instance Package PackageDescription where   packageId = package --- | The version of the Cabal spec that this package should be interpreted--- against.------ Historically we used a version range but we are switching to using a single--- version. Currently we accept either. This function converts into a single--- version by ignoring upper bounds in the version range.----specVersion :: PackageDescription -> Version-specVersion = specVersion' . specVersionRaw---- |------ @since 2.2.0.0-specVersion' :: Either Version VersionRange -> Version-specVersion' (Left version) = version-specVersion' (Right versionRange) = case asVersionIntervals versionRange of-    []                            -> mkVersion [0]-    ((LowerBound version _, _):_) -> version- -- | The SPDX 'LicenseExpression' of the package. -- -- @since 2.2.0.0@@ -208,7 +184,7 @@ -- @since 2.2 buildType :: PackageDescription -> BuildType buildType pkg-  | specVersion pkg >= mkVersion [2,1]+  | specVersion pkg >= CabalSpecV2_2     = fromMaybe newDefault (buildTypeRaw pkg)   | otherwise -- cabal-version < 2.1     = fromMaybe Custom (buildTypeRaw pkg)@@ -223,7 +199,7 @@                                                        nullVersion,                       licenseRaw   = Right UnspecifiedLicense, -- TODO:                       licenseFiles = [],-                      specVersionRaw = Right anyVersion,+                      specVersion  = CabalSpecV1_0,                       buildTypeRaw = Nothing,                       copyright    = mempty,                       maintainer   = mempty,
Distribution/Types/PackageDescription/Lens.hs view
@@ -9,6 +9,7 @@ import Distribution.Compat.Prelude import Prelude () +import Distribution.CabalSpecVersion         (CabalSpecVersion) import Distribution.Compiler                 (CompilerFlavor) import Distribution.License                  (License) import Distribution.ModuleName               (ModuleName)@@ -30,7 +31,7 @@ import Distribution.Types.TestSuite          (TestSuite, testModules) import Distribution.Types.TestSuite.Lens     (testBuildInfo, testName) import Distribution.Utils.ShortText          (ShortText)-import Distribution.Version                  (Version, VersionRange)+import Distribution.Version                  (VersionRange)  import qualified Distribution.SPDX                     as SPDX import qualified Distribution.Types.PackageDescription as T@@ -99,9 +100,9 @@ customFieldsPD f s = fmap (\x -> s { T.customFieldsPD = x }) (f (T.customFieldsPD s)) {-# INLINE customFieldsPD #-} -specVersionRaw :: Lens' PackageDescription (Either Version VersionRange)-specVersionRaw f s = fmap (\x -> s { T.specVersionRaw = x }) (f (T.specVersionRaw s))-{-# INLINE specVersionRaw #-}+specVersion :: Lens' PackageDescription CabalSpecVersion+specVersion f s = fmap (\x -> s { T.specVersion = x }) (f (T.specVersion s))+{-# INLINE specVersion #-}  buildTypeRaw :: Lens' PackageDescription (Maybe BuildType) buildTypeRaw f s = fmap (\x -> s { T.buildTypeRaw = x }) (f (T.buildTypeRaw s))
Distribution/Types/PackageId.hs view
@@ -1,5 +1,5 @@-{-# LANGUAGE DeriveDataTypeable         #-}-{-# LANGUAGE DeriveGeneric              #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-} module Distribution.Types.PackageId   ( PackageIdentifier(..)   , PackageId@@ -8,7 +8,7 @@ import Distribution.Compat.Prelude import Prelude () -import Distribution.Parsec      (Parsec (..), simpleParsec)+import Distribution.Parsec            (Parsec (..), simpleParsec) import Distribution.Pretty import Distribution.Types.PackageName import Distribution.Version           (Version, nullVersion)
Distribution/Types/PackageName.hs view
@@ -2,7 +2,9 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.Types.PackageName-  ( PackageName, unPackageName, mkPackageName+  ( PackageName+  , unPackageName, mkPackageName+  , unPackageNameST, mkPackageNameST   ) where  import Prelude ()@@ -28,6 +30,10 @@ unPackageName :: PackageName -> String unPackageName (PackageName s) = fromShortText s +-- | @since 3.4.0.0+unPackageNameST :: PackageName -> ShortText+unPackageNameST (PackageName s) = s+ -- | Construct a 'PackageName' from a 'String' -- -- 'mkPackageName' is the inverse to 'unPackageName'@@ -38,6 +44,15 @@ -- @since 2.0.0.2 mkPackageName :: String -> PackageName mkPackageName = PackageName . toShortText++-- | Construct a 'PackageName' from a 'ShortText'+--+-- Note: No validations are performed to ensure that the resulting+-- 'PackageName' is valid+--+-- @since 3.4.0.0+mkPackageNameST :: ShortText -> PackageName+mkPackageNameST = PackageName  -- | 'mkPackageName' --
Distribution/Types/PackageVersionConstraint.hs view
@@ -1,25 +1,29 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric      #-}-module Distribution.Types.PackageVersionConstraint-  ( PackageVersionConstraint(..)-  ) where+module Distribution.Types.PackageVersionConstraint (+    PackageVersionConstraint(..),+    thisPackageVersionConstraint,+    simplifyPackageVersionConstraint,+) where  import Distribution.Compat.Prelude import Prelude ()  import Distribution.Parsec import Distribution.Pretty+import Distribution.Types.PackageId import Distribution.Types.PackageName-import Distribution.Types.VersionRange+import Distribution.Types.Version+import Distribution.Types.VersionRange.Internal+import Distribution.Version                     (simplifyVersionRange)  import qualified Distribution.Compat.CharParsing as P-import           Text.PrettyPrint                ((<+>))  -- | A version constraint on a package. Different from 'ExeDependency' and -- 'Dependency' since it does not specify the need for a component, not even -- the main library.--- There are a few places in the codebase where 'Dependency' is used where--- 'PackageVersionConstraint' should be used instead (#5570).+-- There are a few places in the codebase where 'Dependency' was used where+-- 'PackageVersionConstraint' is not used instead (#5570). data PackageVersionConstraint = PackageVersionConstraint PackageName VersionRange                   deriving (Generic, Read, Show, Eq, Typeable, Data) @@ -28,13 +32,43 @@ instance NFData PackageVersionConstraint where rnf = genericRnf  instance Pretty PackageVersionConstraint where-  pretty (PackageVersionConstraint name ver) = pretty name <+> pretty ver+  -- Cannot do: PackageVersionConstraint have to be parseable+  -- as Dependency, due roundtrip problems. (e.g. talking to old ./Setup).+  --+  -- pretty (PackageVersionConstraint name (ThisVersion ver)) =+  --     pretty (PackageIdentifier name ver)+  pretty (PackageVersionConstraint name ver) =+      pretty name <+> pretty ver +-- |+--+-- >>> simpleParsec "foo" :: Maybe PackageVersionConstraint+-- Just (PackageVersionConstraint (PackageName "foo") (OrLaterVersion (mkVersion [0])))+--+-- >>> simpleParsec "foo >=2.0" :: Maybe PackageVersionConstraint+-- Just (PackageVersionConstraint (PackageName "foo") (OrLaterVersion (mkVersion [2,0])))+--+-- >>> simpleParsec "foo-2.0" :: Maybe PackageVersionConstraint+-- Just (PackageVersionConstraint (PackageName "foo") (ThisVersion (mkVersion [2,0])))+-- instance Parsec PackageVersionConstraint where   parsec = do-      name <- parsec-      P.spaces-      ver <- parsec <|> return anyVersion-      P.spaces-      return (PackageVersionConstraint name ver)+      PackageIdentifier name ver <- parsec+      if ver == nullVersion+      then do+          P.spaces+          vr <- parsec <|> return anyVersion+          P.spaces+          return (PackageVersionConstraint name vr)+      else+          pure (PackageVersionConstraint name (thisVersion ver)) +-- | @since 3.4.0.0+thisPackageVersionConstraint :: PackageIdentifier -> PackageVersionConstraint+thisPackageVersionConstraint (PackageIdentifier pn vr) =+    PackageVersionConstraint pn (thisVersion vr)++-- | @since 3.4.0.0+simplifyPackageVersionConstraint :: PackageVersionConstraint -> PackageVersionConstraint+simplifyPackageVersionConstraint (PackageVersionConstraint pn vr) =+    PackageVersionConstraint pn (simplifyVersionRange vr)
Distribution/Types/PkgconfigDependency.hs view
@@ -14,7 +14,6 @@ import Distribution.Pretty  import qualified Distribution.Compat.CharParsing as P-import           Text.PrettyPrint           ((<+>))  -- | Describes a dependency on a pkg-config library --@@ -29,8 +28,8 @@ instance NFData PkgconfigDependency where rnf = genericRnf  instance Pretty PkgconfigDependency where-  pretty (PkgconfigDependency name ver) =-    pretty name <+> pretty ver+    pretty (PkgconfigDependency name PcAnyVersion) = pretty name+    pretty (PkgconfigDependency name ver)          = pretty name <+> pretty ver  instance Parsec PkgconfigDependency where     parsec = do
Distribution/Types/PkgconfigName.hs view
@@ -56,7 +56,13 @@   pretty = Disp.text . unPkgconfigName  instance Parsec PkgconfigName where-  parsec = mkPkgconfigName <$> P.munch1 (\c -> isAlphaNum c || c `elem` "+-._")+    parsec = mkPkgconfigName <$> P.munch1 isNameChar where+        -- https://gitlab.haskell.org/ghc/ghc/issues/17752+        isNameChar '-' = True+        isNameChar '_' = True+        isNameChar '.' = True+        isNameChar '+' = True+        isNameChar c   = isAlphaNum c  instance NFData PkgconfigName where     rnf (PkgconfigName pkg) = rnf pkg
Distribution/Types/PkgconfigVersion.hs view
@@ -63,6 +63,11 @@ rpmvercmp a b = go0 (BS.unpack a) (BS.unpack b)   where     go0 :: [Word8] -> [Word8] -> Ordering+    -- if there is _any_ trailing "garbage", it seems to affect result+    -- https://github.com/haskell/cabal/issues/6805+    go0 [] [] = EQ+    go0 [] _  = LT+    go0 _  [] = GT     go0 xs ys = go1 (dropNonAlnum8 xs) (dropNonAlnum8 ys)      go1 :: [Word8] -> [Word8] -> Ordering
Distribution/Types/PkgconfigVersionRange.hs view
@@ -18,6 +18,7 @@ import Distribution.Pretty import Distribution.Types.PkgconfigVersion import Distribution.Types.Version+import Distribution.Types.VersionInterval import Distribution.Types.VersionRange  import qualified Data.ByteString.Char8           as BS8@@ -69,7 +70,7 @@         csv <- askCabalSpecVersion         if csv >= CabalSpecV3_0         then pkgconfigParser-        else versionRangeToPkgconfigVersionRange <$> versionRangeParser P.integral+        else versionRangeToPkgconfigVersionRange <$> versionRangeParser P.integral csv  -- "modern" parser of @pkg-config@ package versions. pkgconfigParser :: CabalParsing m => m PkgconfigVersionRange@@ -86,7 +87,7 @@     factor = parens expr <|> prim      prim = do-        op <- P.munch1 (`elem` "<>=^-") P.<?> "operator"+        op <- P.munch1 isOpChar P.<?> "operator"         case op of             "-"  -> anyPkgconfigVersion <$ (P.string "any" *> P.spaces) @@ -98,6 +99,14 @@              _ -> P.unexpected $ "Unknown version operator " ++ show op +    -- https://gitlab.haskell.org/ghc/ghc/issues/17752+    isOpChar '<' = True+    isOpChar '=' = True+    isOpChar '>' = True+    isOpChar '^' = True+    isOpChar '-' = True+    isOpChar _   = False+     afterOp f = do         P.spaces         v <- parsec@@ -134,10 +143,19 @@ versionToPkgconfigVersion = PkgconfigVersion . BS8.pack . prettyShow  versionRangeToPkgconfigVersionRange :: VersionRange -> PkgconfigVersionRange-versionRangeToPkgconfigVersionRange = foldVersionRange-    anyPkgconfigVersion-    (PcThisVersion . versionToPkgconfigVersion)-    (PcLaterVersion . versionToPkgconfigVersion)-    (PcEarlierVersion . versionToPkgconfigVersion)-    PcUnionVersionRanges-    PcIntersectVersionRanges+versionRangeToPkgconfigVersionRange vr+    | isAnyVersion vr+    = PcAnyVersion+    | otherwise+    = case asVersionIntervals vr of+        []     -> PcEarlierVersion (PkgconfigVersion (BS8.pack "0"))+        (i:is) -> foldl (\r j -> PcUnionVersionRanges r (conv j)) (conv i) is+  where+    conv (LowerBound v b, NoUpperBound)   = convL v b+    conv (LowerBound v b, UpperBound u c) = PcIntersectVersionRanges (convL v b) (convU u c)++    convL v ExclusiveBound = PcLaterVersion (versionToPkgconfigVersion v)+    convL v InclusiveBound = PcOrLaterVersion (versionToPkgconfigVersion v)++    convU v ExclusiveBound = PcEarlierVersion (versionToPkgconfigVersion v)+    convU v InclusiveBound = PcOrEarlierVersion (versionToPkgconfigVersion v)
Distribution/Types/SourceRepo.hs view
@@ -5,6 +5,7 @@     SourceRepo(..),     RepoKind(..),     RepoType(..),+    KnownRepoType (..),     knownRepoTypes,     emptySourceRepo,     classifyRepoType,@@ -21,6 +22,7 @@  import qualified Distribution.Compat.CharParsing as P import qualified Text.PrettyPrint as Disp+import qualified Data.Map.Strict as M  -- ------------------------------------------------------------ -- * Source repos@@ -122,8 +124,27 @@ -- 'SourceRepo' depend on the type of repo. The tools and methods used to -- obtain and track the repo depend on the repo type. ---data RepoType = Darcs | Git | SVN | CVS-              | Mercurial | GnuArch | Bazaar | Monotone+data KnownRepoType = Darcs | Git | SVN | CVS+                   | Mercurial | GnuArch | Bazaar | Monotone+                   | Pijul -- ^ @since 3.4.0.0+  deriving (Eq, Generic, Ord, Read, Show, Typeable, Data, Enum, Bounded)++instance Binary KnownRepoType+instance Structured KnownRepoType+instance NFData KnownRepoType where rnf = genericRnf++instance Parsec KnownRepoType where+  parsec = do+    str <- P.munch1 isIdent+    maybe+      (P.unexpected $ "Could not parse KnownRepoType from " ++ str)+      return+      (M.lookup str knownRepoTypeMap)++instance Pretty KnownRepoType where+  pretty = Disp.text . lowercase . show++data RepoType = KnownRepoType KnownRepoType               | OtherRepoType String   deriving (Eq, Generic, Ord, Read, Show, Typeable, Data) @@ -131,11 +152,10 @@ instance Structured RepoType instance NFData RepoType where rnf = genericRnf -knownRepoTypes :: [RepoType]-knownRepoTypes = [Darcs, Git, SVN, CVS-                 ,Mercurial, GnuArch, Bazaar, Monotone]+knownRepoTypes :: [KnownRepoType]+knownRepoTypes = [minBound .. maxBound] -repoTypeAliases :: RepoType -> [String]+repoTypeAliases :: KnownRepoType -> [String] repoTypeAliases Bazaar    = ["bzr"] repoTypeAliases Mercurial = ["hg"] repoTypeAliases GnuArch   = ["arch"]@@ -155,20 +175,27 @@   "this" -> RepoThis   _      -> RepoKindUnknown name -instance Pretty RepoType where-  pretty (OtherRepoType other) = Disp.text other-  pretty other                 = Disp.text (lowercase (show other))- instance Parsec RepoType where   parsec = classifyRepoType <$> P.munch1 isIdent +instance Pretty RepoType where+  pretty (OtherRepoType other) = Disp.text other+  pretty (KnownRepoType t) = pretty t+ classifyRepoType :: String -> RepoType classifyRepoType s =-    fromMaybe (OtherRepoType s) $ lookup (lowercase s) repoTypeMap-  where-    repoTypeMap = [ (name, repoType')-                  | repoType' <- knownRepoTypes-                  , name <- prettyShow repoType' : repoTypeAliases repoType' ]+  maybe+    (OtherRepoType s)+    KnownRepoType+    (M.lookup (lowercase s) knownRepoTypeMap)++knownRepoTypeMap :: Map String KnownRepoType+knownRepoTypeMap =+  M.fromList+    [ (name, repoType')+      | repoType' <- knownRepoTypes+      , name <- prettyShow repoType' : repoTypeAliases repoType'+    ]  isIdent :: Char -> Bool isIdent c = isAlphaNum c || c == '_' || c == '-'
Distribution/Types/TestType.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}  module Distribution.Types.TestType (     TestType(..),@@ -12,7 +13,7 @@  import Distribution.Parsec import Distribution.Pretty-import Text.PrettyPrint          (char, text)+import Text.PrettyPrint    (char, text)  -- | The \"test-type\" field in the test suite stanza. --
Distribution/Types/UnitId.hs view
@@ -78,7 +78,13 @@ -- GHC accepts for @-package-id@. -- instance Parsec UnitId where-    parsec = mkUnitId <$> P.munch1 (\c -> isAlphaNum c || c `elem` "-_.+")+    parsec = mkUnitId <$> P.munch1 isUnitChar where+        -- https://gitlab.haskell.org/ghc/ghc/issues/17752+        isUnitChar '-' = True+        isUnitChar '_' = True+        isUnitChar '.' = True+        isUnitChar '+' = True+        isUnitChar c   = isAlphaNum c  -- | If you need backwards compatibility, consider using 'display' -- instead, which is supported by all versions of Cabal.
Distribution/Types/UnqualComponentName.hs view
@@ -2,7 +2,7 @@ {-# LANGUAGE DeriveGeneric              #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} module Distribution.Types.UnqualComponentName-  ( UnqualComponentName, unUnqualComponentName, mkUnqualComponentName+  ( UnqualComponentName, unUnqualComponentName, unUnqualComponentNameST, mkUnqualComponentName   , packageNameToUnqualComponentName, unqualComponentNameToPackageName   ) where @@ -31,6 +31,10 @@ unUnqualComponentName :: UnqualComponentName -> String unUnqualComponentName (UnqualComponentName s) = fromShortText s +-- | @since 3.4.0.0+unUnqualComponentNameST :: UnqualComponentName -> ShortText+unUnqualComponentNameST (UnqualComponentName s) = s+ -- | Construct a 'UnqualComponentName' from a 'String' -- -- 'mkUnqualComponentName' is the inverse to 'unUnqualComponentName'@@ -74,7 +78,7 @@ -- -- @since 2.0.0.2 packageNameToUnqualComponentName :: PackageName -> UnqualComponentName-packageNameToUnqualComponentName = mkUnqualComponentName . unPackageName+packageNameToUnqualComponentName = UnqualComponentName . unPackageNameST  -- | Converts an unqualified component name to a package name --@@ -86,4 +90,4 @@ -- -- @since 2.0.0.2 unqualComponentNameToPackageName :: UnqualComponentName -> PackageName-unqualComponentNameToPackageName = mkPackageName . unUnqualComponentName+unqualComponentNameToPackageName = mkPackageNameST . unUnqualComponentNameST
Distribution/Types/VersionInterval.hs view
@@ -26,7 +26,7 @@ import Control.Exception (assert)  import Distribution.Types.Version-import Distribution.Types.VersionRange+import Distribution.Types.VersionRange.Internal  -- NonEmpty import qualified Prelude (foldr1)@@ -200,15 +200,18 @@ -- | Convert a 'VersionRange' to a sequence of version intervals. -- toVersionIntervals :: VersionRange -> VersionIntervals-toVersionIntervals = foldVersionRange-  (         chkIvl (minLowerBound,               NoUpperBound))-  (\v    -> chkIvl (LowerBound v InclusiveBound, UpperBound v InclusiveBound))-  (\v    -> chkIvl (LowerBound v ExclusiveBound, NoUpperBound))-  (\v    -> if isVersion0 v then VersionIntervals [] else-            chkIvl (minLowerBound,               UpperBound v ExclusiveBound))-  unionVersionIntervals-  intersectVersionIntervals-  where+toVersionIntervals = cataVersionRange alg where+    alg (ThisVersionF v)                = chkIvl (LowerBound v InclusiveBound, UpperBound v InclusiveBound)+    alg (LaterVersionF v)               = chkIvl (LowerBound v ExclusiveBound, NoUpperBound)+    alg (OrLaterVersionF v)             = chkIvl (LowerBound v InclusiveBound, NoUpperBound)+    alg (EarlierVersionF v)+        | isVersion0 v                  = VersionIntervals []+        | otherwise                     = chkIvl (minLowerBound,               UpperBound v ExclusiveBound)+    alg (OrEarlierVersionF v)           = chkIvl (minLowerBound,               UpperBound v InclusiveBound)+    alg (MajorBoundVersionF v)          = chkIvl (LowerBound v InclusiveBound, UpperBound (majorUpperBound v) ExclusiveBound)+    alg (UnionVersionRangesF v1 v2)     = unionVersionIntervals v1 v2+    alg (IntersectVersionRangesF v1 v2) = intersectVersionIntervals v1 v2+     chkIvl interval = checkInvariant (VersionIntervals [interval])  -- | Convert a 'VersionIntervals' value back into a 'VersionRange' expression@@ -223,9 +226,6 @@     interval (LowerBound v  InclusiveBound)              (UpperBound v' InclusiveBound) | v == v'                  = thisVersion v-    interval (LowerBound v  InclusiveBound)-             (UpperBound v' ExclusiveBound) | isWildcardRange v v'-                 = withinVersion v     interval l u = lowerBound l `intersectVersionRanges'` upperBound u      lowerBound (LowerBound v InclusiveBound)
Distribution/Types/VersionRange.hs view
@@ -30,6 +30,8 @@     embedVersionRange,      -- ** Utilities+    isAnyVersion,+    isAnyVersionLight,     wildcardUpperBound,     majorUpperBound,     isWildcardRange,@@ -38,8 +40,8 @@  import Distribution.Compat.Prelude import Distribution.Types.Version+import Distribution.Types.VersionInterval import Distribution.Types.VersionRange.Internal-import Distribution.Utils.Generic import Prelude ()  -- | Fold over the basic syntactic structure of a 'VersionRange'.@@ -57,26 +59,19 @@                  -> (a -> a -> a)             -- ^ @\"_ || _\"@ union                  -> (a -> a -> a)             -- ^ @\"_ && _\"@ intersection                  -> VersionRange -> a-foldVersionRange anyv this later earlier union intersect = fold+foldVersionRange _any this later earlier union intersect = fold   where     fold = cataVersionRange alg -    alg AnyVersionF                     = anyv     alg (ThisVersionF v)                = this v     alg (LaterVersionF v)               = later v     alg (OrLaterVersionF v)             = union (this v) (later v)     alg (EarlierVersionF v)             = earlier v     alg (OrEarlierVersionF v)           = union (this v) (earlier v)-    alg (WildcardVersionF v)            = fold (wildcard v)     alg (MajorBoundVersionF v)          = fold (majorBound v)     alg (UnionVersionRangesF v1 v2)     = union v1 v2     alg (IntersectVersionRangesF v1 v2) = intersect v1 v2-    alg (VersionRangeParensF v)         = v -    wildcard v = intersectVersionRanges-                   (orLaterVersion v)-                   (earlierVersion (wildcardUpperBound v))-     majorBound v = intersectVersionRanges                      (orLaterVersion v)                      (earlierVersion (majorUpperBound v))@@ -104,12 +99,11 @@  -- |  Remove 'VersionRangeParens' constructors. --+-- Since version 3.4 this function is 'id', there aren't 'VersionRangeParens' constructor in 'VersionRange' anymore.+-- -- @since 2.2 stripParensVersionRange :: VersionRange -> VersionRange-stripParensVersionRange = hyloVersionRange embed projectVersionRange-  where-    embed (VersionRangeParensF vr) = vr-    embed vr = embedVersionRange vr+stripParensVersionRange = id  -- | Does this version fall within the given range? --@@ -124,16 +118,35 @@                    (||)                    (&&) +-- | Does this 'VersionRange' place any restriction on the 'Version' or is it+-- in fact equivalent to 'AnyVersion'.+--+-- Note this is a semantic check, not simply a syntactic check. So for example+-- the following is @True@ (for all @v@).+--+-- > isAnyVersion (EarlierVersion v `UnionVersionRanges` orLaterVersion v)+--+isAnyVersion :: VersionRange -> Bool+isAnyVersion vr = case asVersionIntervals vr of+    [(LowerBound v InclusiveBound, NoUpperBound)] -> v == version0+    _                                             -> False++-- A fast and non-precise version of 'isAnyVersion',+-- returns 'True' only for @>= 0@ 'VersionRange's.+--+-- /Do not use/. The "VersionIntervals don't destroy MajorBoundVersion"+-- https://github.com/haskell/cabal/pull/6736 pull-request+-- will change 'simplifyVersionRange' to properly preserve semantics.+-- Then we can use it to normalise 'VersionRange's in tests.+--+isAnyVersionLight :: VersionRange -> Bool+isAnyVersionLight (OrLaterVersion v) = v == version0+isAnyVersionLight _vr                = False+ ---------------------------- -- Wildcard range utilities -- --- | @since 2.2-wildcardUpperBound :: Version -> Version-wildcardUpperBound = alterVersion $-    \lowerBound -> case unsnoc lowerBound of-        Nothing      -> []-        Just (xs, x) -> xs ++ [x + 1]  isWildcardRange :: Version -> Version -> Bool isWildcardRange ver1 ver2 = check (versionNumbers ver1) (versionNumbers ver2)
Distribution/Types/VersionRange/Internal.hs view
@@ -4,6 +4,7 @@ {-# LANGUAGE DeriveGeneric       #-} {-# LANGUAGE DeriveTraversable   #-} {-# LANGUAGE FlexibleContexts    #-}+{-# LANGUAGE OverloadedStrings   #-} {-# LANGUAGE ScopedTypeVariables #-}  -- | The only purpose of this module is to prevent the export of@@ -30,6 +31,7 @@   , versionRangeParser    , majorUpperBound+  , wildcardUpperBound   ) where  import Distribution.Compat.Prelude@@ -39,24 +41,21 @@ import Distribution.CabalSpecVersion import Distribution.Parsec import Distribution.Pretty-import Text.PrettyPrint              ((<+>))+import Distribution.Utils.Generic    (unsnoc)  import qualified Distribution.Compat.CharParsing as P import qualified Distribution.Compat.DList       as DList import qualified Text.PrettyPrint                as Disp  data VersionRange-  = AnyVersion-  | ThisVersion            Version -- = version+  = ThisVersion            Version -- = version   | LaterVersion           Version -- > version  (NB. not >=)   | OrLaterVersion         Version -- >= version   | EarlierVersion         Version -- < version   | OrEarlierVersion       Version -- <= version-  | WildcardVersion        Version -- == ver.*   (same as >= ver && < ver+1)   | MajorBoundVersion      Version -- @^>= ver@ (same as >= ver && < MAJ(ver)+1)   | UnionVersionRanges     VersionRange VersionRange   | IntersectVersionRanges VersionRange VersionRange-  | VersionRangeParens     VersionRange -- just '(exp)' parentheses syntax   deriving ( Data, Eq, Generic, Read, Show, Typeable )  instance Binary VersionRange@@ -69,18 +68,17 @@ -- > withinRange v anyVersion = True -- anyVersion :: VersionRange-anyVersion = AnyVersion+anyVersion = OrLaterVersion (mkVersion [0])  -- | The empty version range, that is a version range containing no versions. -- -- This can be constructed using any unsatisfiable version range expression,--- for example @> 1 && < 1@.+-- for example @< 0@. -- -- > withinRange v noVersion = False -- noVersion :: VersionRange-noVersion = IntersectVersionRanges (LaterVersion v) (EarlierVersion v)-  where v = mkVersion [1]+noVersion = EarlierVersion (mkVersion [0])  -- | The version range @== v@ --@@ -150,7 +148,9 @@ -- >     upper (Version lower t) = Version (init lower ++ [last lower + 1]) t -- withinVersion :: Version -> VersionRange-withinVersion = WildcardVersion+withinVersion v = intersectVersionRanges+    (orLaterVersion v)+    (earlierVersion (wildcardUpperBound v))  -- | The version range @^>= v@. --@@ -168,33 +168,27 @@ -- -- @since 2.2 data VersionRangeF a-  = AnyVersionF-  | ThisVersionF            Version -- = version+  = ThisVersionF            Version -- = version   | LaterVersionF           Version -- > version  (NB. not >=)   | OrLaterVersionF         Version -- >= version   | EarlierVersionF         Version -- < version   | OrEarlierVersionF       Version -- <= version-  | WildcardVersionF        Version -- == ver.*   (same as >= ver && < ver+1)   | MajorBoundVersionF      Version -- @^>= ver@ (same as >= ver && < MAJ(ver)+1)   | UnionVersionRangesF     a a   | IntersectVersionRangesF a a-  | VersionRangeParensF     a   deriving ( Data, Eq, Generic, Read, Show, Typeable            , Functor, Foldable, Traversable )  -- | @since 2.2 projectVersionRange :: VersionRange -> VersionRangeF VersionRange-projectVersionRange AnyVersion                   = AnyVersionF projectVersionRange (ThisVersion v)              = ThisVersionF v projectVersionRange (LaterVersion v)             = LaterVersionF v projectVersionRange (OrLaterVersion v)           = OrLaterVersionF v projectVersionRange (EarlierVersion v)           = EarlierVersionF v projectVersionRange (OrEarlierVersion v)         = OrEarlierVersionF v-projectVersionRange (WildcardVersion v)          = WildcardVersionF v projectVersionRange (MajorBoundVersion v)        = MajorBoundVersionF v projectVersionRange (UnionVersionRanges a b)     = UnionVersionRangesF a b projectVersionRange (IntersectVersionRanges a b) = IntersectVersionRangesF a b-projectVersionRange (VersionRangeParens a)       = VersionRangeParensF a  -- | Fold 'VersionRange'. --@@ -204,17 +198,14 @@  -- | @since 2.2 embedVersionRange :: VersionRangeF VersionRange -> VersionRange-embedVersionRange AnyVersionF                   = AnyVersion embedVersionRange (ThisVersionF v)              = ThisVersion v embedVersionRange (LaterVersionF v)             = LaterVersion v embedVersionRange (OrLaterVersionF v)           = OrLaterVersion v embedVersionRange (EarlierVersionF v)           = EarlierVersion v embedVersionRange (OrEarlierVersionF v)         = OrEarlierVersion v-embedVersionRange (WildcardVersionF v)          = WildcardVersion v embedVersionRange (MajorBoundVersionF v)        = MajorBoundVersion v embedVersionRange (UnionVersionRangesF a b)     = UnionVersionRanges a b embedVersionRange (IntersectVersionRangesF a b) = IntersectVersionRanges a b-embedVersionRange (VersionRangeParensF a)       = VersionRangeParens a  -- | Unfold 'VersionRange'. --@@ -234,34 +225,98 @@ -- Parsec & Pretty ------------------------------------------------------------------------------- +-- |+--+-- >>> fmap pretty (simpleParsec' CabalSpecV1_6 "== 3.2.*" :: Maybe VersionRange)+-- Just >=3.2 && <3.3+--+-- >>> fmap (prettyVersioned CabalSpecV1_6) (simpleParsec' CabalSpecV1_6 "== 3.2.*" :: Maybe VersionRange)+-- Just ==3.2.*+--+-- >>> fmap pretty (simpleParsec' CabalSpecV1_6 "-any" :: Maybe VersionRange)+-- Just >=0+--+-- >>> fmap (prettyVersioned CabalSpecV1_6) (simpleParsec' CabalSpecV1_6 "-any" :: Maybe VersionRange)+-- Just >=0+-- instance Pretty VersionRange where-    pretty = fst . cataVersionRange alg-      where-        alg AnyVersionF                     = (Disp.text "-any", 0 :: Int)-        alg (ThisVersionF v)                = (Disp.text "==" <<>> pretty v, 0)-        alg (LaterVersionF v)               = (Disp.char '>'  <<>> pretty v, 0)-        alg (OrLaterVersionF v)             = (Disp.text ">=" <<>> pretty v, 0)-        alg (EarlierVersionF v)             = (Disp.char '<'  <<>> pretty v, 0)-        alg (OrEarlierVersionF v)           = (Disp.text "<=" <<>> pretty v, 0)-        alg (WildcardVersionF v)            = (Disp.text "==" <<>> dispWild v, 0)-        alg (MajorBoundVersionF v)          = (Disp.text "^>=" <<>> pretty v, 0)-        alg (UnionVersionRangesF (r1, p1) (r2, p2)) =-            (punct 1 p1 r1 <+> Disp.text "||" <+> punct 2 p2 r2 , 2)-        alg (IntersectVersionRangesF (r1, p1) (r2, p2)) =-            (punct 0 p1 r1 <+> Disp.text "&&" <+> punct 1 p2 r2 , 1)-        alg (VersionRangeParensF (r, _))         =-            (Disp.parens r, 0)+    pretty = prettyVersioned cabalSpecLatest -        dispWild ver =-            Disp.hcat (Disp.punctuate (Disp.char '.')-                        (map Disp.int $ versionNumbers ver))-            <<>> Disp.text ".*"+    prettyVersioned csv+        | csv > CabalSpecV1_6 = prettyVersionRange+        | otherwise           = prettyVersionRange16 -        punct p p' | p < p'    = Disp.parens-                   | otherwise = id+prettyVersionRange :: VersionRange -> Disp.Doc+prettyVersionRange vr = cataVersionRange alg vr 0+  where+    alg :: VersionRangeF (Int -> Disp.Doc) -> Int -> Disp.Doc+    alg (ThisVersionF v)                _ = Disp.text "=="  <<>> pretty v+    alg (LaterVersionF v)               _ = Disp.text ">"   <<>> pretty v+    alg (OrLaterVersionF v)             _ = Disp.text ">="  <<>> pretty v+    alg (EarlierVersionF v)             _ = Disp.text "<"   <<>> pretty v+    alg (OrEarlierVersionF v)           _ = Disp.text "<="  <<>> pretty v+    alg (MajorBoundVersionF v)          _ = Disp.text "^>=" <<>> pretty v+    alg (UnionVersionRangesF r1 r2)     d = parens (d > 0)+        $ r1 1 <+> Disp.text "||" <+> r2 0+    alg (IntersectVersionRangesF r1 r2) d = parens (d > 1)+        $ r1 2 <+> Disp.text "&&" <+> r2 1 +    parens True  = Disp.parens+    parens False = id++-- | Don't use && and || operators. If possible.+prettyVersionRange16 :: VersionRange -> Disp.Doc+prettyVersionRange16 (IntersectVersionRanges (OrLaterVersion v) (EarlierVersion u))+    | u == wildcardUpperBound v+    = Disp.text "==" <<>> dispWild v+  where+    dispWild ver =+        Disp.hcat (Disp.punctuate (Disp.char '.')+                    (map Disp.int $ versionNumbers ver))+        <<>> Disp.text ".*"++prettyVersionRange16 vr = prettyVersionRange vr++-- |+--+-- >>> simpleParsec "^>= 3.4" :: Maybe VersionRange+-- Just (MajorBoundVersion (mkVersion [3,4]))+--+-- Small history:+--+-- @-any@ and @-none@ removed in 3.4+-- Use @>=0@ and @<0@ instead.+--+-- >>> map (`simpleParsec'` "-none") [CabalSpecV3_0, CabalSpecV3_4] :: [Maybe VersionRange]+-- [Just (EarlierVersion (mkVersion [0])),Nothing]+--+-- Set operations are introduced in 3.0+--+-- >>> map (`simpleParsec'` "^>= { 1.2 , 1.3 }") [CabalSpecV2_4, CabalSpecV3_0] :: [Maybe VersionRange]+-- [Nothing,Just (UnionVersionRanges (MajorBoundVersion (mkVersion [1,2])) (MajorBoundVersion (mkVersion [1,3])))]+--+-- @^>=@ is introduced in 2.0+--+-- >>> map (`simpleParsec'` "^>=1.2") [CabalSpecV1_24, CabalSpecV2_0] :: [Maybe VersionRange]+-- [Nothing,Just (MajorBoundVersion (mkVersion [1,2]))]+--+-- @-none@ is introduced in 1.22+--+-- >>> map (`simpleParsec'` "-none") [CabalSpecV1_20, CabalSpecV1_22] :: [Maybe VersionRange]+-- [Nothing,Just (EarlierVersion (mkVersion [0]))]+--+-- Operators are introduced in 1.8. Issues only a warning.+--+-- >>> map (`simpleParsecW'` "== 1 || ==2") [CabalSpecV1_6, CabalSpecV1_8] :: [Maybe VersionRange]+-- [Nothing,Just (UnionVersionRanges (ThisVersion (mkVersion [1])) (ThisVersion (mkVersion [2])))]+--+-- Wild-version ranges are introduced in 1.6. Issues only a warning.+--+-- >>> map (`simpleParsecW'` "== 1.2.*") [CabalSpecV1_4, CabalSpecV1_6] :: [Maybe VersionRange]+-- [Nothing,Just (IntersectVersionRanges (OrLaterVersion (mkVersion [1,2])) (EarlierVersion (mkVersion [1,3])))]+-- instance Parsec VersionRange where-    parsec = versionRangeParser versionDigitParser+    parsec = askCabalSpecVersion >>= versionRangeParser versionDigitParser  -- | 'VersionRange' parser parametrised by version digit parser --@@ -270,13 +325,14 @@ --   versions, 'PkgConfigVersionRange'. -- -- @since 3.0-versionRangeParser :: forall m. CabalParsing m => m Int -> m VersionRange-versionRangeParser digitParser = expr+versionRangeParser :: forall m. CabalParsing m => m Int -> CabalSpecVersion -> m VersionRange+versionRangeParser digitParser csv = expr       where         expr   = do P.spaces                     t <- term                     P.spaces                     (do _  <- P.string "||"+                        checkOp                         P.spaces                         e <- expr                         return (unionVersionRanges t e)@@ -285,6 +341,7 @@         term   = do f <- factor                     P.spaces                     (do _  <- P.string "&&"+                        checkOp                         P.spaces                         t <- term                         return (intersectVersionRanges f t)@@ -293,13 +350,14 @@         factor = parens expr <|> prim          prim = do-            op <- P.munch1 (`elem` "<>=^-") P.<?> "operator"+            op <- P.munch1 isOpChar P.<?> "operator"             case op of                 "-" -> anyVersion <$ P.string "any" <|> P.string "none" *> noVersion'                  "==" -> do                     P.spaces                     (do (wild, v) <- verOrWild+                        checkWild wild                         pure $ (if wild then withinVersion else thisVersion) v                      <|>                      (verSet' thisVersion =<< verSet))@@ -325,13 +383,42 @@                         ">"   -> pure $ laterVersion v                         _ -> fail $ "Unknown version operator " ++ show op -        -- Note: There are other features:-        -- && and || since 1.8-        -- x.y.* (wildcard) since 1.6+        -- Cannot be warning+        -- On 2020-03-16 there was around 27400 files on Hackage failing to parse due this+        -- For example https://hackage.haskell.org/package/haxr-3000.0.0/haxr.cabal+        --+        checkOp = when (csv < CabalSpecV1_8) $+            parsecWarning PWTVersionOperator $ unwords+                [ "version operators used."+                , "To use version operators the package needs to specify at least 'cabal-version: >= 1.8'."+                ] +        -- Cannot be warning+        -- On 2020-03-16 there was 46 files on Hackage failing to parse due this+        -- For example https://hackage.haskell.org/package/derive-0.1.2/derive.cabal+        --+        checkWild False = pure ()+        checkWild True  = when (csv < CabalSpecV1_6) $+            parsecWarning PWTVersionWildcard $ unwords+                [ "Wildcard syntax used."+                , "To use version wildcards the package needs to specify at least 'cabal-version: >= 1.6'."+                ]++        -- https://gitlab.haskell.org/ghc/ghc/issues/17752+        isOpChar '<' = True+        isOpChar '=' = True+        isOpChar '>' = True+        isOpChar '^' = True+        isOpChar '-' = csv < CabalSpecV3_4+        -- https://github.com/haskell/cabal/issues/6589+        -- Unfortunately we have must not consume the dash,+        -- as otherwise following parts may not be parsed.+        --+        -- i.e. we cannot fail here with good error.+        isOpChar _   = False+         -- -none version range is available since 1.22-        noVersion' = do-            csv <- askCabalSpecVersion+        noVersion' =             if csv >= CabalSpecV1_22             then pure noVersion             else fail $ unwords@@ -342,8 +429,7 @@                 ]          -- ^>= is available since 2.0-        majorBoundVersion' v = do-            csv <- askCabalSpecVersion+        majorBoundVersion' v =             if csv >= CabalSpecV2_0             then pure $ majorBoundVersion v             else fail $ unwords@@ -359,8 +445,7 @@             embed vr = embedVersionRange vr          -- version set notation (e.g. "== { 0.0.1.0, 0.0.2.0, 0.1.0.0 }")-        verSet' op vs = do-            csv <- askCabalSpecVersion+        verSet' op vs =             if csv >= CabalSpecV3_0             then pure $ foldr1 unionVersionRanges (fmap op vs)             else fail $ unwords@@ -404,9 +489,10 @@         parens p = P.between             ((P.char '(' P.<?> "opening paren") >> P.spaces)             (P.char ')' >> P.spaces)-            (do a <- p+            $ do+                a <- p                 P.spaces-                return (VersionRangeParens a))+                return a          tags :: CabalParsing m => m ()         tags = do@@ -431,3 +517,10 @@     []        -> [0,1] -- should not happen     [m1]      -> [m1,1] -- e.g. version '1'     (m1:m2:_) -> [m1,m2+1]++-- | @since 2.2+wildcardUpperBound :: Version -> Version+wildcardUpperBound = alterVersion $+    \lowerBound -> case unsnoc lowerBound of+        Nothing      -> []+        Just (xs, x) -> xs ++ [x + 1]
Distribution/Utils/Generic.hs view
@@ -77,6 +77,11 @@         unsnoc,         unsnocNE, +        -- * Triples+        fstOf3,+        sndOf3,+        trdOf3,+         -- * FilePath stuff         isAbsoluteOnAnyPlatform,         isRelativeOnAnyPlatform,@@ -90,12 +95,9 @@ import Data.Bits ((.&.), (.|.), shiftL) import Data.List     ( isInfixOf )-import Data.Ord-    ( comparing )-import qualified Data.ByteString.Lazy as BS import qualified Data.Set as Set- import qualified Data.ByteString as SBS+import qualified Data.ByteString.Lazy as LBS  import System.Directory     ( removeFile, renameFile )@@ -143,7 +145,7 @@ -- The file is read lazily but if it is not fully consumed by the action then -- the remaining input is truncated and the file is closed. ---withFileContents :: FilePath -> (String -> NoCallStackIO a) -> NoCallStackIO a+withFileContents :: FilePath -> (String -> IO a) -> IO a withFileContents name action =   withFile name ReadMode            (\hnd -> hGetContents hnd >>= action)@@ -156,14 +158,14 @@ -- On windows it is not possible to delete a file that is open by a process. -- This case will give an IO exception but the atomic property is not affected. ---writeFileAtomic :: FilePath -> BS.ByteString -> NoCallStackIO ()+writeFileAtomic :: FilePath -> LBS.ByteString -> IO () writeFileAtomic targetPath content = do   let (targetDir, targetFile) = splitFileName targetPath   Exception.bracketOnError     (openBinaryTempFileWithDefaultPermissions targetDir $ targetFile <.> "tmp")     (\(tmpPath, handle) -> hClose handle >> removeFile tmpPath)     (\(tmpPath, handle) -> do-        BS.hPut handle content+        LBS.hPut handle content         hClose handle         renameFile tmpPath targetPath) @@ -181,10 +183,10 @@  -- | Variant of 'fromUTF8BS' for lazy 'BS.ByteString's ---fromUTF8LBS :: BS.ByteString -> String-fromUTF8LBS = decodeStringUtf8 . BS.unpack+fromUTF8LBS :: LBS.ByteString -> String+fromUTF8LBS = decodeStringUtf8 . LBS.unpack --- | Encode 'String' to to UTF8-encoded 'SBS.ByteString'+-- | Encode 'String' to UTF8-encoded 'SBS.ByteString' -- -- Code-points in the @U+D800@-@U+DFFF@ range will be encoded -- as the replacement character (i.e. @U+FFFD@).@@ -194,8 +196,8 @@  -- | Variant of 'toUTF8BS' for lazy 'BS.ByteString's ---toUTF8LBS :: String -> BS.ByteString-toUTF8LBS = BS.pack . encodeStringUtf8+toUTF8LBS :: String -> LBS.ByteString+toUTF8LBS = LBS.pack . encodeStringUtf8  -- | Check that strict 'ByteString' is valid UTF8. Returns 'Just offset' if it's not. validateUTF8 :: SBS.ByteString -> Maybe Int@@ -247,8 +249,8 @@ -- -- Reads lazily using ordinary 'readFile'. ---readUTF8File :: FilePath -> NoCallStackIO String-readUTF8File f = (ignoreBOM . fromUTF8LBS) <$> BS.readFile f+readUTF8File :: FilePath -> IO String+readUTF8File f = (ignoreBOM . fromUTF8LBS) <$> LBS.readFile f  -- | Reads a UTF8 encoded text file as a Unicode String --@@ -257,14 +259,14 @@ withUTF8FileContents :: FilePath -> (String -> IO a) -> IO a withUTF8FileContents name action =   withBinaryFile name ReadMode-    (\hnd -> BS.hGetContents hnd >>= action . ignoreBOM . fromUTF8LBS)+    (\hnd -> LBS.hGetContents hnd >>= action . ignoreBOM . fromUTF8LBS)  -- | Writes a Unicode String as a UTF8 encoded text file. -- -- Uses 'writeFileAtomic', so provides the same guarantees. ---writeUTF8File :: FilePath -> String -> NoCallStackIO ()-writeUTF8File path = writeFileAtomic path . BS.pack . encodeStringUtf8+writeUTF8File :: FilePath -> String -> IO ()+writeUTF8File path = writeFileAtomic path . toUTF8LBS  -- | Fix different systems silly line ending conventions normaliseLineEndings :: String -> String@@ -515,6 +517,22 @@ unsnocNE (x:|xs) = go x xs where     go y []     = ([], y)     go y (z:zs) = let ~(ws, w) = go z zs in (y : ws, w)++-------------------------------------------------------------------------------+-- Triples+-------------------------------------------------------------------------------++-- | @since 3.4.0.0+fstOf3 :: (a,b,c) -> a+fstOf3 (a,_,_) = a++-- | @since 3.4.0.0+sndOf3 :: (a,b,c) -> b+sndOf3 (_,b,_) = b++-- | @since 3.4.0.0+trdOf3 :: (a,b,c) -> c+trdOf3 (_,_,c) = c  -- ------------------------------------------------------------ -- * FilePath stuff
Distribution/Utils/LogProgress.hs view
@@ -44,7 +44,7 @@  -- | Run 'LogProgress', outputting traces according to 'Verbosity', -- 'die' if there is an error.-runLogProgress :: Verbosity -> LogProgress a -> NoCallStackIO a+runLogProgress :: Verbosity -> LogProgress a -> IO a runLogProgress verbosity (LogProgress m) =     foldProgress step_fn fail_fn return (m env)   where@@ -52,11 +52,11 @@         le_verbosity = verbosity,         le_context   = []       }-    step_fn :: LogMsg -> NoCallStackIO a -> NoCallStackIO a+    step_fn :: LogMsg -> IO a -> IO a     step_fn doc go = do         putStrLn (render doc)         go-    fail_fn :: Doc -> NoCallStackIO a+    fail_fn :: Doc -> IO a     fail_fn doc = do         dieNoWrap verbosity (render doc) 
Distribution/Utils/MD5.hs view
@@ -2,6 +2,8 @@     MD5,     showMD5,     md5,+    -- * Helpers+    md5FromInteger,     -- * Binary     binaryPutMD5,     binaryGetMD5,@@ -10,6 +12,7 @@ import Data.Binary      (Get, Put) import Data.Binary.Get  (getWord64le) import Data.Binary.Put  (putWord64le)+import Data.Bits        (complement, shiftR, (.&.)) import Foreign.Ptr      (castPtr) import GHC.Fingerprint  (Fingerprint (..), fingerprintData) import Numeric          (showHex)@@ -52,3 +55,25 @@     a <- getWord64le     b <- getWord64le     return (Fingerprint a b)++-- |+--+-- >>> showMD5 $ md5FromInteger 0x37eff01866ba3f538421b30b7cbefcac+-- "37eff01866ba3f538421b30b7cbefcac"+--+-- Note: the input is truncated:+--+-- >>> showMD5 $ md5FromInteger 0x1230000037eff01866ba3f538421b30b7cbefcac+-- "37eff01866ba3f538421b30b7cbefcac"+--+-- Yet, negative numbers are not a problem...+--+-- >>> showMD5 $ md5FromInteger (-1)+-- "ffffffffffffffffffffffffffffffff"+--+-- @since 3.4.0.0+md5FromInteger :: Integer -> MD5+md5FromInteger i = Fingerprint hi lo where+    mask = complement 0+    lo   = mask .&. fromInteger i+    hi   = mask .&. fromInteger (i `shiftR` 64)
Distribution/Utils/ShortText.hs view
@@ -8,7 +8,7 @@ -- -- @ -- import Distribution.Utils.ShortText (ShortText)--- import qualifeid Distribution.Utils.ShortText as ShortText+-- import qualified Distribution.Utils.ShortText as ShortText -- @ module Distribution.Utils.ShortText     ( -- * 'ShortText' type
Distribution/Utils/Structured.hs view
@@ -87,7 +87,11 @@  import qualified Data.ByteString              as BS import qualified Data.ByteString.Lazy         as LBS+#if MIN_VERSION_bytestring(0,10,4)+import qualified Data.ByteString.Builder      as Builder+#else import qualified Data.ByteString.Lazy.Builder as Builder+#endif import qualified Data.IntMap                  as IM import qualified Data.IntSet                  as IS import qualified Data.Map                     as Map
Distribution/Verbosity.hs view
@@ -48,6 +48,10 @@   -- * timestamps   verboseTimestamp, isVerboseTimestamp,   verboseNoTimestamp,++  -- * Stderr+  verboseStderr, isVerboseStderr,+  verboseNoStderr,   ) where  import Prelude ()@@ -57,10 +61,13 @@  import Data.List (elemIndex) import Distribution.Parsec+import Distribution.Pretty import Distribution.Verbosity.Internal+import Distribution.Utils.Generic (isAsciiAlpha)  import qualified Data.Set as Set import qualified Distribution.Compat.CharParsing as P+import qualified Text.PrettyPrint as PP  data Verbosity = Verbosity {     vLevel :: VerbosityLevel,@@ -146,74 +153,94 @@ -- | Parser verbosity -- -- >>> explicitEitherParsec parsecVerbosity "normal"--- Right (Right (Verbosity {vLevel = Normal, vFlags = fromList [], vQuiet = False}))+-- Right (Verbosity {vLevel = Normal, vFlags = fromList [], vQuiet = False}) -- -- >>> explicitEitherParsec parsecVerbosity "normal+nowrap  "--- Right (Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap], vQuiet = False}))+-- Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap], vQuiet = False}) -- -- >>> explicitEitherParsec parsecVerbosity "normal+nowrap +markoutput"--- Right (Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False}))+-- Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False}) -- -- >>> explicitEitherParsec parsecVerbosity "normal +nowrap +markoutput"--- Right (Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False}))+-- Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False}) -- -- >>> explicitEitherParsec parsecVerbosity "normal+nowrap+markoutput"--- Right (Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False}))+-- Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False}) --+-- >>> explicitEitherParsec parsecVerbosity "deafening+nowrap+stdout+stderr+callsite+callstack"+-- Right (Verbosity {vLevel = Deafening, vFlags = fromList [VCallStack,VCallSite,VNoWrap,VStderr], vQuiet = False})+-- -- /Note:/ this parser will eat trailing spaces. ---parsecVerbosity :: CabalParsing m => m (Either Int Verbosity)+instance Parsec Verbosity where+    parsec = parsecVerbosity++instance Pretty Verbosity where+    pretty = PP.text . showForCabal++parsecVerbosity :: CabalParsing m => m Verbosity parsecVerbosity = parseIntVerbosity <|> parseStringVerbosity   where-    parseIntVerbosity = fmap Left P.integral-    parseStringVerbosity = fmap Right $ do+    parseIntVerbosity = do+        i <- P.integral+        case intToVerbosity i of+            Just v  -> return v+            Nothing -> P.unexpected $ "Bad integral verbosity: " ++ show i ++ ". Valid values are 0..3"++    parseStringVerbosity = do         level <- parseVerbosityLevel         _ <- P.spaces-        extras <- many (parseExtra <* P.spaces)-        return (foldr (.) id extras (mkVerbosity level))-    parseVerbosityLevel = P.choice-        [ P.string "silent" >> return Silent-        , P.string "normal" >> return Normal-        , P.string "verbose" >> return Verbose-        , P.string "debug"  >> return Deafening-        , P.string "deafening" >> return Deafening-        ]-    parseExtra = P.char '+' >> P.choice-        [ P.string "callsite"  >> return verboseCallSite-        , P.string "callstack" >> return verboseCallStack-        , P.string "nowrap"    >> return verboseNoWrap-        , P.string "markoutput" >> return verboseMarkOutput-        , P.string "timestamp" >> return verboseTimestamp-        ]+        flags <- many (parseFlag <* P.spaces)+        return $ foldl' (flip ($)) (mkVerbosity level) flags -flagToVerbosity :: ReadE Verbosity-flagToVerbosity = parsecToReadE id $ do-    e <- parsecVerbosity-    case e of-       Right v -> return v-       Left i -> case intToVerbosity i of-           Just v  -> return v-           Nothing -> fail $ "Bad verbosity: " ++ show i ++ ". Valid values are 0..3"+    parseVerbosityLevel = do+        token <- P.munch1 isAsciiAlpha+        case token of+            "silent"    -> return Silent+            "normal"    -> return Normal+            "verbose"   -> return Verbose+            "debug"     -> return Deafening+            "deafening" -> return Deafening+            _           -> P.unexpected $ "Bad verbosity level: " ++ token+    parseFlag = do+        _ <- P.char '+'+        token <- P.munch1 isAsciiAlpha+        case token of+            "callsite"   -> return verboseCallSite+            "callstack"  -> return verboseCallStack+            "nowrap"     -> return verboseNoWrap+            "markoutput" -> return verboseMarkOutput+            "timestamp"  -> return verboseTimestamp+            "stderr"     -> return verboseStderr+            "stdout"     -> return verboseNoStderr+            _            -> P.unexpected $ "Bad verbosity flag: " ++ token -showForCabal, showForGHC :: Verbosity -> String+flagToVerbosity :: ReadE Verbosity+flagToVerbosity = parsecToReadE id parsecVerbosity +showForCabal :: Verbosity -> String showForCabal v     | Set.null (vFlags v)     = maybe (error "unknown verbosity") show $         elemIndex v [silent,normal,verbose,deafening]     | otherwise-    = unwords $ (case vLevel v of-                    Silent -> "silent"-                    Normal -> "normal"-                    Verbose -> "verbose"-                    Deafening -> "debug")-              : concatMap showFlag (Set.toList (vFlags v))+    = unwords+        $ showLevel (vLevel v)+        : concatMap showFlag (Set.toList (vFlags v))   where+    showLevel Silent    = "silent"+    showLevel Normal    = "normal"+    showLevel Verbose   = "verbose"+    showLevel Deafening = "debug"+     showFlag VCallSite   = ["+callsite"]     showFlag VCallStack  = ["+callstack"]     showFlag VNoWrap     = ["+nowrap"]     showFlag VMarkOutput = ["+markoutput"]     showFlag VTimestamp  = ["+timestamp"]+    showFlag VStderr     = ["+stderr"]++showForGHC :: Verbosity -> String showForGHC   v = maybe (error "unknown verbosity") show $     elemIndex v [silent,normal,__,verbose,deafening]         where __ = silent -- this will be always ignored by elemIndex@@ -251,6 +278,18 @@ verboseNoTimestamp :: Verbosity -> Verbosity verboseNoTimestamp = verboseNoFlag VTimestamp +-- | Turn on timestamps for log messages.+--+-- @since 3.4.0.0+verboseStderr :: Verbosity -> Verbosity+verboseStderr = verboseFlag VStderr++-- | Turn off timestamps for log messages.+--+-- @since 3.4.0.0+verboseNoStderr :: Verbosity -> Verbosity+verboseNoStderr = verboseNoFlag VStderr+ -- | Helper function for flag enabling functions verboseFlag :: VerbosityFlag -> (Verbosity -> Verbosity) verboseFlag flag v = v { vFlags = Set.insert flag (vFlags v) }@@ -286,9 +325,15 @@ isVerboseQuiet :: Verbosity -> Bool isVerboseQuiet = vQuiet --- | Test if if we should output timestamps when we log.+-- | Test if we should output timestamps when we log. isVerboseTimestamp :: Verbosity -> Bool isVerboseTimestamp = isVerboseFlag VTimestamp++-- | Test if we should output to stderr when we log.+--+-- @since 3.4.0.0+isVerboseStderr :: Verbosity -> Bool+isVerboseStderr = isVerboseFlag VStderr  -- | Helper function for flag testing functions. isVerboseFlag :: VerbosityFlag -> Verbosity -> Bool
Distribution/Verbosity/Internal.hs view
@@ -20,6 +20,7 @@     | VNoWrap     | VMarkOutput     | VTimestamp+    | VStderr -- ^ @since 3.4.0.0     deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded, Typeable)  instance Binary VerbosityFlag
Distribution/Version.hs view
@@ -97,23 +97,6 @@ -- Utilities on VersionRange requiring VersionInterval ------------------------------------------------------------------------------- --- | Does this 'VersionRange' place any restriction on the 'Version' or is it--- in fact equivalent to 'AnyVersion'.------ Note this is a semantic check, not simply a syntactic check. So for example--- the following is @True@ (for all @v@).------ > isAnyVersion (EarlierVersion v `UnionVersionRanges` orLaterVersion v)----isAnyVersion :: VersionRange -> Bool-isAnyVersion vr = case asVersionIntervals vr of-  [(LowerBound v InclusiveBound, NoUpperBound)] | isVersion0 v -> True-  _                                                            -> False-  where-    isVersion0 :: Version -> Bool-    isVersion0 = (== mkVersion [0])-- -- | This is the converse of 'isAnyVersion'. It check if the version range is -- empty, if there is no possible version that satisfies the version range. --
+ Distribution/ZinzaPrelude.hs view
@@ -0,0 +1,43 @@+-- | A small prelude used in @zinza@ generated+-- template modules.+module Distribution.ZinzaPrelude (+    Writer,+    execWriter,+    tell,+    -- * Re-exports+    forM_,+    Generic,+    PackageName,+    Version,+    prettyShow+    ) where++import Distribution.Compat.Prelude+import Prelude ()++import Control.Monad                  (forM_)+import Distribution.Pretty            (prettyShow)+import Distribution.Types.PackageName (PackageName)+import Distribution.Types.Version     (Version)++newtype Writer a = W { unW :: ShowS -> (ShowS, a) }++instance Functor Writer where+    fmap = liftM++instance Applicative Writer where+    pure x = W $ \ss -> (ss, x)+    (<*>) = ap++instance Monad Writer where+    return = pure+    m >>= k = W $ \s1 ->+        let (s2, x) = unW m s1+        in unW (k x) s2+    {-# INLINE (>>=) #-}++execWriter :: Writer a -> String+execWriter w = fst (unW w id) ""++tell :: String -> Writer ()+tell s = W $ \s' -> (s' . showString s, ())
LICENSE view
@@ -1,5 +1,8 @@-Copyright (c) 2003-2017, Cabal Development Team.+Copyright (c) 2003-2020, Cabal Development Team. See the AUTHORS file for the full list of copyright holders.++See */LICENSE for the copyright holders of the subcomponents.+ All rights reserved.  Redistribution and use in source and binary forms, with or without
Language/Haskell/Extension.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}  ----------------------------------------------------------------------------- -- |@@ -838,6 +839,15 @@    -- | Enable unlifted newtypes.   | UnliftedNewtypes++  -- | Use whitespace to determine whether the minus sign stands for negation or subtraction.+  | LexicalNegation++  -- | Enable qualified do-notation desugaring.+  | QualifiedDo++  -- | Enable linear types.+  | LinearTypes    deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded, Typeable, Data) 
doc/README.md view
@@ -11,16 +11,11 @@  ### How to build it -* Currently requires python-2-* `> pip install sphinx`-* `> pip install sphinx_rtd_theme`+Building the documentation requires Python 3 be installed * `> cd Cabal` * `> make clean users-guide`-* if you are missing any other dependencies, install them with `pip` as needed-¯\\\_(ツ)_/¯ * Python on Mac OS X dislikes `LC_CTYPE=UTF-8`, unset the env var in terminal preferences and instead set `LC_ALL=en_US.UTF-8` or something-* On archlinux, package `python2-sphinx` is sufficient.  ### Caveats, for newcomers to RST from MD RST does not allow you to skip section levels when nesting, like MD@@ -61,7 +56,7 @@     """""""""""""""""""""" ``` -* RST simply parses a file and interpretes headings to indicate the+* RST simply parses a file and interprets headings to indicate the   start of a new block,   * at the level implied by the header's *adornment*, if the adornment was   previously encountered in this file,
doc/conf.py view
@@ -13,7 +13,7 @@ sys.path.insert(0, os.path.abspath('.')) import cabaldomain -version = "3.2.0.0"+version = "3.4.0.0"  extensions = ['sphinx.ext.extlinks', 'sphinx.ext.todo'] @@ -26,15 +26,15 @@ extlinks = {     'issue': ('https://github.com/haskell/cabal/issues/%s', '#'), -    'ghc-wiki': ('http://ghc.haskell.org/trac/ghc/wiki/%s', ''),-    'ghc-ticket': ('http://ghc.haskell.org/trac/ghc/ticket/%s', 'GHC #'),+    'ghc-wiki': ('https://gitlab.haskell.org/ghc/ghc/-/wikis/%s', ''),+    'ghc-ticket': ('https://gitlab.haskell.org/ghc/ghc/-/issues/%s', 'GHC #'),      'hackage-pkg': ('http://hackage.haskell.org/package/%s', ''), }  # General information about the project. project = u'Cabal'-copyright = u'2003-2017, Cabal Team'+copyright = u'2003-2020, Cabal Team' # N.B. version comes from ghc_config release = version  # The full version, including alpha/beta/rc tags. @@ -90,13 +90,16 @@ # Output file base name for HTML help builder. htmlhelp_basename = 'CabalUsersGuide' +# MathJax to use SVG rendering by default+mathjax_path = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_SVG' + # -- Options for LaTeX output ---------------------------------------------  latex_elements = {     'inputenc': '',     'utf8extra': '',-    'preamble': '''+    'preamble': r''' \usepackage{fontspec} \usepackage{makeidx} \setsansfont{DejaVu Sans}@@ -171,7 +174,7 @@         name = parts[0]         names.append(name)         sig = sep + ' '.join(parts[1:])-        sig = re.sub(ur'<([-a-zA-Z ]+)>', ur'⟨\1⟩', sig)+        sig = re.sub(r'<([-a-zA-Z ]+)>', r'⟨\1⟩', sig)         if i > 0:             signode += addnodes.desc_name(', ', ', ')         signode += addnodes.desc_name(name, name)
doc/developing-packages.rst view
@@ -1,3752 +1,488 @@ Quickstart ========== -Lets assume we have created a project directory and already have a-Haskell module or two.--Every project needs a name, we'll call this example "proglet".--.. highlight:: console--::--    $ cd proglet/-    $ ls-    Proglet.hs--It is assumed that (apart from external dependencies) all the files that-make up a package live under a common project root directory. This-simple example has all the project files in one directory, but most-packages will use one or more subdirectories.--To turn this into a Cabal package we need two extra files in the-project's root directory:---  ``proglet.cabal``: containing package metadata and build information.---  ``Setup.hs``: usually containing a few standardized lines of code,-   but can be customized if necessary.--We can create both files manually or we can use ``cabal init`` to create-them for us.--Using "cabal init"---------------------The ``cabal init`` command is interactive. It asks us a number of-questions starting with the package name and version.--::--    $ cabal init-    Package name [default "proglet"]?-    Package version [default "0.1"]?-    ...--It also asks questions about various other bits of package metadata. For-a package that you never intend to distribute to others, these fields-can be left blank.--One of the important questions is whether the package contains a library-or an executable. Libraries are collections of Haskell modules that can-be re-used by other Haskell libraries and programs, while executables-are standalone programs.--::--    What does the package build:-       1) Library-       2) Executable-    Your choice?--For the moment these are the only choices. For more complex packages-(e.g. a library and multiple executables or test suites) the ``.cabal``-file can be edited afterwards.--Finally, ``cabal init`` creates the initial ``proglet.cabal`` and-``Setup.hs`` files, and depending on your choice of license, a-``LICENSE`` file as well.--::--    Generating LICENSE...-    Generating Setup.hs...-    Generating proglet.cabal...--    You may want to edit the .cabal file and add a Description field.--As this stage the ``proglet.cabal`` is not quite complete and before you-are able to build the package you will need to edit the file and add-some build information about the library or executable.--Editing the .cabal file--------------------------.. highlight:: cabal--Load up the ``.cabal`` file in a text editor. The first part of the-``.cabal`` file has the package metadata and towards the end of the file-you will find the :pkg-section:`executable` or :pkg-section:`library` section.--You will see that the fields that have yet to be filled in are commented-out. Cabal files use "``--``" Haskell-style comment syntax. (Note that-comments are only allowed on lines on their own. Trailing comments on-other lines are not allowed because they could be confused with program-options.)--If you selected earlier to create a library package then your ``.cabal``-file will have a section that looks like this:--::--    library-      exposed-modules:     Proglet-      -- other-modules:-      -- build-depends:--Alternatively, if you selected an executable then there will be a-section like:--::--    executable proglet-      -- main-is:-      -- other-modules:-      -- build-depends:--The build information fields listed (but commented out) are just the few-most important and common fields. There are many others that are covered-later in this chapter.--Most of the build information fields are the same between libraries and-executables. The difference is that libraries have a number of "exposed"-modules that make up the public interface of the library, while-executables have a file containing a ``Main`` module.--The name of a library always matches the name of the package, so it is-not specified in the library section. Executables often follow the name-of the package too, but this is not required and the name is given-explicitly.--Modules included in the package----------------------------------For a library, ``cabal init`` looks in the project directory for files-that look like Haskell modules and adds all the modules to the-:pkg-field:`library:exposed-modules` field. For modules that do not form part-of your package's public interface, you can move those modules to the-:pkg-field:`other-modules` field. Either way, all modules in the library need-to be listed.--For an executable, ``cabal init`` does not try to guess which file-contains your program's ``Main`` module. You will need to fill in the-:pkg-field:`executable:main-is` field with the file name of your program's-``Main`` module (including ``.hs`` or ``.lhs`` extension). Other modules-included in the executable should be listed in the :pkg-field:`other-modules`-field.--Modules imported from other packages---------------------------------------While your library or executable may include a number of modules, it-almost certainly also imports a number of external modules from the-standard libraries or other pre-packaged libraries. (These other-libraries are of course just Cabal packages that contain a library.)--You have to list all of the library packages that your library or-executable imports modules from. Or to put it another way: you have to-list all the other packages that your package depends on.--For example, suppose the example ``Proglet`` module imports the module-``Data.Map``. The ``Data.Map`` module comes from the ``containers``-package, so we must list it:--::--    library-      exposed-modules:     Proglet-      other-modules:-      build-depends:       containers, base == 4.*--In addition, almost every package also depends on the ``base`` library-package because it exports the standard ``Prelude`` module plus other-basic modules like ``Data.List``.--You will notice that we have listed ``base == 4.*``. This gives a-constraint on the version of the base package that our package will work-with. The most common kinds of constraints are:---  ``pkgname >= n``--  ``pkgname ^>= n`` (since Cabal 2.0)--  ``pkgname >= n && < m``--  ``pkgname == n.*`` (since Cabal 1.6)--The last is just shorthand, for example ``base == 4.*`` means exactly-the same thing as ``base >= 4 && < 5``. Please refer to the documentation-on the :pkg-field:`build-depends` field for more information.--Also, you can factor out shared ``build-depends`` (and other fields such-as ``ghc-options``) into a ``common`` stanza which you can ``import`` in-your libraries and executable sections. For example:--::--    common shared-properties-      default-language: Haskell2010-      build-depends:-        base == 4.*-      ghc-options:-        -Wall--    library-      import: shared-properties-      exposed-modules:-        Proglet--Note that the ``import`` **must** be the first thing in the stanza. For more-information see the `Common stanzas`_ section.--Building the package-----------------------For simple packages that's it! We can now try configuring and building-the package:--.. code-block:: console--    $ cabal configure-    $ cabal build--Assuming those two steps worked then you can also install the package:--.. code-block:: console--    $ cabal install--For libraries this makes them available for use in GHCi or to be used by-other packages. For executables it installs the program so that you can-run it (though you may first need to adjust your system's ``$PATH``).--Next steps-------------What we have covered so far should be enough for very simple packages-that you use on your own system.--The next few sections cover more details needed for more complex-packages and details needed for distributing packages to other people.--The previous chapter covers building and installing packages -- your own-packages or ones developed by other people.--Package concepts-================--Before diving into the details of writing packages it helps to-understand a bit about packages in the Haskell world and the particular-approach that Cabal takes.--The point of packages------------------------Packages are a mechanism for organising and distributing code. Packages-are particularly suited for "programming in the large", that is building-big systems by using and re-using code written by different people at-different times.--People organise code into packages based on functionality and-dependencies. Social factors are also important: most packages have a-single author, or a relatively small team of authors.--Packages are also used for distribution: the idea is that a package can-be created in one place and be moved to a different computer and be-usable in that different environment. There are a surprising number of-details that have to be got right for this to work, and a good package-system helps to simplify this process and make it reliable.--Packages come in two main flavours: libraries of reusable code, and-complete programs. Libraries present a code interface, an API, while-programs can be run directly. In the Haskell world, library packages-expose a set of Haskell modules as their public interface. Cabal-packages can contain a library or executables or both.--Some programming languages have packages as a builtin language concept.-For example in Java, a package provides a local namespace for types and-other definitions. In the Haskell world, packages are not a part of the-language itself. Haskell programs consist of a number of modules, and-packages just provide a way to partition the modules into sets of-related functionality. Thus the choice of module names in Haskell is-still important, even when using packages.--Package names and versions-----------------------------All packages have a name, e.g. "HUnit". Package names are assumed to be-unique. Cabal package names may contain letters, numbers and hyphens,-but not spaces and may also not contain a hyphened section consisting of-only numbers. The namespace for Cabal packages is flat, not-hierarchical.--Packages also have a version, e.g "1.1". This matches the typical way in-which packages are developed. Strictly speaking, each version of a-package is independent, but usually they are very similar. Cabal package-versions follow the conventional numeric style, consisting of a sequence-of digits such as "1.0.1" or "2.0". There are a range of common-conventions for "versioning" packages, that is giving some meaning to-the version number in terms of changes in the package, such as-e.g. `SemVer <http://semver.org>`__; however, for packages intended to be-distributed via Hackage Haskell's `Package Versioning Policy`_ applies-(see also the `PVP/SemVer FAQ section <https://pvp.haskell.org/faq/#semver>`__).--The combination of package name and version is called the *package ID*-and is written with a hyphen to separate the name and version, e.g.-"HUnit-1.1".--For Cabal packages, the combination of the package name and version-*uniquely* identifies each package. Or to put it another way: two-packages with the same name and version are considered to *be* the same.--Strictly speaking, the package ID only identifies each Cabal *source*-package; the same Cabal source package can be configured and built in-different ways. There is a separate installed package ID that uniquely-identifies each installed package instance. Most of the time however,-users need not be aware of this detail.--Kinds of package: Cabal vs GHC vs system-------------------------------------------It can be slightly confusing at first because there are various-different notions of package floating around. Fortunately the details-are not very complicated.--Cabal packages-    Cabal packages are really source packages. That is they contain-    Haskell (and sometimes C) source code.--    Cabal packages can be compiled to produce GHC packages. They can-    also be translated into operating system packages.--GHC packages-    This is GHC's view on packages. GHC only cares about library-    packages, not executables. Library packages have to be registered-    with GHC for them to be available in GHCi or to be used when-    compiling other programs or packages.--    The low-level tool ``ghc-pkg`` is used to register GHC packages and-    to get information on what packages are currently registered.--    You never need to make GHC packages manually. When you build and-    install a Cabal package containing a library then it gets registered-    with GHC automatically.--    Haskell implementations other than GHC have essentially the same-    concept of registered packages. For the most part, Cabal hides the-    slight differences.--Operating system packages-    On operating systems like Linux and Mac OS X, the system has a-    specific notion of a package and there are tools for installing and-    managing packages.--    The Cabal package format is designed to allow Cabal packages to be-    translated, mostly-automatically, into operating system packages.-    They are usually translated 1:1, that is a single Cabal package-    becomes a single system package.--    It is also possible to make Windows installers from Cabal packages,-    though this is typically done for a program together with all of its-    library dependencies, rather than packaging each library separately.--Unit of distribution-----------------------The Cabal package is the unit of distribution. What this means is that-each Cabal package can be distributed on its own in source or binary-form. Of course there may dependencies between packages, but there is-usually a degree of flexibility in which versions of packages can work-together so distributing them independently makes sense.--It is perhaps easiest to see what being "the unit of distribution"-means by contrast to an alternative approach. Many projects are made up-of several interdependent packages and during development these might-all be kept under one common directory tree and be built and tested-together. When it comes to distribution however, rather than-distributing them all together in a single tarball, it is required that-they each be distributed independently in their own tarballs.--Cabal's approach is to say that if you can specify a dependency on a-package then that package should be able to be distributed-independently. Or to put it the other way round, if you want to-distribute it as a single unit, then it should be a single package.--Explicit dependencies and automatic package management---------------------------------------------------------Cabal takes the approach that all packages dependencies are specified-explicitly and specified in a declarative way. The point is to enable-automatic package management. This means tools like ``cabal`` can-resolve dependencies and install a package plus all of its dependencies-automatically. Alternatively, it is possible to mechanically (or mostly-mechanically) translate Cabal packages into system packages and let the-system package manager install dependencies automatically.--It is important to track dependencies accurately so that packages can-reliably be moved from one system to another system and still be able to-build it there. Cabal is therefore relatively strict about specifying-dependencies. For example Cabal's default build system will not even let-code build if it tries to import a module from a package that isn't-listed in the ``.cabal`` file, even if that package is actually-installed. This helps to ensure that there are no "untracked-dependencies" that could cause the code to fail to build on some other-system.--The explicit dependency approach is in contrast to the traditional-"./configure" approach where instead of specifying dependencies-declaratively, the ``./configure`` script checks if the dependencies are-present on the system. Some manual work is required to transform a-``./configure`` based package into a Linux distribution package (or-similar). This conversion work is usually done by people other than the-package author(s). The practical effect of this is that only the most-popular packages will benefit from automatic package management.-Instead, Cabal forces the original author to specify the dependencies-but the advantage is that every package can benefit from automatic-package management.--The "./configure" approach tends to encourage packages that adapt-themselves to the environment in which they are built, for example by-disabling optional features so that they can continue to work when a-particular dependency is not available. This approach makes sense in a-world where installing additional dependencies is a tiresome manual-process and so minimising dependencies is important. The automatic-package management view is that packages should just declare what they-need and the package manager will take responsibility for ensuring that-all the dependencies are installed.--Sometimes of course optional features and optional dependencies do make-sense. Cabal packages can have optional features and varying-dependencies. These conditional dependencies are still specified in a-declarative way however and remain compatible with automatic package-management. The need to remain compatible with automatic package-management means that Cabal's conditional dependencies system is a bit-less flexible than with the "./configure" approach.--.. note::-   `GNU autoconf places restrictions on paths, including the-   path that the user builds a package from.-   <https://www.gnu.org/software/autoconf/manual/autoconf.html#File-System-Conventions>`_-   Package authors using ``build-type: configure`` should be aware of-   these restrictions; because users may be unexpectedly constrained and-   face mysterious errors, it is recommended that ``build-type: configure``-   is only used where strictly necessary.--Portability--------------One of the purposes of Cabal is to make it easier to build packages on-different platforms (operating systems and CPU architectures), with-different compiler versions and indeed even with different Haskell-implementations. (Yes, there are Haskell implementations other than-GHC!)--Cabal provides abstractions of features present in different Haskell-implementations and wherever possible it is best to take advantage of-these to increase portability. Where necessary however it is possible to-use specific features of specific implementations.--For example a package author can list in the package's ``.cabal`` what-language extensions the code uses. This allows Cabal to figure out if-the language extension is supported by the Haskell implementation that-the user picks. Additionally, certain language extensions such as-Template Haskell require special handling from the build system and by-listing the extension it provides the build system with enough-information to do the right thing.--Another similar example is linking with foreign libraries. Rather than-specifying GHC flags directly, the package author can list the libraries-that are needed and the build system will take care of using the right-flags for the compiler. Additionally this makes it easier for tools to-discover what system C libraries a package needs, which is useful for-tracking dependencies on system libraries (e.g. when translating into-Linux distribution packages).--In fact both of these examples fall into the category of explicitly-specifying dependencies. Not all dependencies are other Cabal packages.-Foreign libraries are clearly another kind of dependency. It's also-possible to think of language extensions as dependencies: the package-depends on a Haskell implementation that supports all those extensions.--Where compiler-specific options are needed however, there is an "escape-hatch" available. The developer can specify implementation-specific-options and more generally there is a configuration mechanism to-customise many aspects of how a package is built depending on the-Haskell implementation, the operating system, computer architecture and-user-specified configuration flags.--Developing packages-===================--The Cabal package is the unit of distribution. When installed, its-purpose is to make available:---  One or more Haskell programs.---  At most one library, exposing a number of Haskell modules.--However having both a library and executables in a package does not work-very well; if the executables depend on the library, they must-explicitly list all the modules they directly or indirectly import from-that library. Fortunately, starting with Cabal 1.8.0.4, executables can-also declare the package that they are in as a dependency, and Cabal-will treat them as if they were in another package that depended on the-library.--Internally, the package may consist of much more than a bunch of Haskell-modules: it may also have C source code and header files, source code-meant for preprocessing, documentation, test cases, auxiliary tools etc.--A package is identified by a globally-unique *package name*, which-consists of one or more alphanumeric words separated by hyphens. To-avoid ambiguity, each of these words should contain at least one letter.-Chaos will result if two distinct packages with the same name are-installed on the same system. A particular version of the package is-distinguished by a *version number*, consisting of a sequence of one or-more integers separated by dots. These can be combined to form a single-text string called the *package ID*, using a hyphen to separate the name-from the version, e.g. "``HUnit-1.1``".--.. Note::--   Packages are not part of the Haskell language; they simply-   populate the hierarchical space of module names. In GHC 6.6 and later a-   program may contain multiple modules with the same name if they come-   from separate packages; in all other current Haskell systems packages-   may not overlap in the modules they provide, including hidden modules.--Creating a package---------------------Suppose you have a directory hierarchy containing the source files that-make up your package. You will need to add two more files to the root-directory of the package:--:file:`{package-name}.cabal`-    a Unicode UTF-8 text file containing a package description. For-    details of the syntax of this file, see the section on-    `package descriptions`_.--:file:`Setup.hs`-    a single-module Haskell program to perform various setup tasks (with-    the interface described in the section on :ref:`installing-packages`).-    This module should import only modules that will be present in all Haskell-    implementations, including modules of the Cabal library. The content of-    this file is determined by the :pkg-field:`build-type` setting in the-    ``.cabal`` file. In most cases it will be trivial, calling on the Cabal-    library to do most of the work.--Once you have these, you can create a source bundle of this directory-for distribution. Building of the package is discussed in the section on-:ref:`installing-packages`.--One of the purposes of Cabal is to make it easier to build a package-with different Haskell implementations. So it provides abstractions of-features present in different Haskell implementations and wherever-possible it is best to take advantage of these to increase portability.-Where necessary however it is possible to use specific features of-specific implementations. For example one of the pieces of information a-package author can put in the package's ``.cabal`` file is what language-extensions the code uses. This is far preferable to specifying flags for-a specific compiler as it allows Cabal to pick the right flags for the-Haskell implementation that the user picks. It also allows Cabal to-figure out if the language extension is even supported by the Haskell-implementation that the user picks. Where compiler-specific options are-needed however, there is an "escape hatch" available. The developer can-specify implementation-specific options and more generally there is a-configuration mechanism to customise many aspects of how a package is-built depending on the Haskell implementation, the Operating system,-computer architecture and user-specified configuration flags.--::--    name:     Foo-    version:  1.0--    library-      build-depends:   base >= 4 && < 5-      exposed-modules: Foo-      extensions:      ForeignFunctionInterface-      ghc-options:     -Wall-      if os(windows)-        build-depends: Win32 >= 2.1 && < 2.6--Example: A package containing a simple library-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--The HUnit package contains a file ``HUnit.cabal`` containing:--::--    name:           HUnit-    version:        1.1.1-    synopsis:       A unit testing framework for Haskell-    homepage:       http://hunit.sourceforge.net/-    category:       Testing-    author:         Dean Herington-    license:        BSD3-    license-file:   LICENSE-    cabal-version:  1.12-    build-type:     Simple--    library-      build-depends:      base >= 2 && < 4-      exposed-modules:    Test.HUnit.Base, Test.HUnit.Lang,-                          Test.HUnit.Terminal, Test.HUnit.Text, Test.HUnit-      default-extensions: CPP--and the following ``Setup.hs``:--.. code-block:: haskell--    import Distribution.Simple-    main = defaultMain--Example: A package containing executable programs-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--::--    name:           TestPackage-    version:        0.0-    synopsis:       Small package with two programs-    author:         Angela Author-    license:        BSD3-    build-type:     Simple-    cabal-version:  >= 1.8--    executable program1-      build-depends:  HUnit >= 1.1.1 && < 1.2-      main-is:        Main.hs-      hs-source-dirs: prog1--    executable program2-      main-is:        Main.hs-      build-depends:  HUnit >= 1.1.1 && < 1.2-      hs-source-dirs: prog2-      other-modules:  Utils--with ``Setup.hs`` the same as above.--Example: A package containing a library and executable programs-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--::--    name:            TestPackage-    version:         0.0-    synopsis:        Package with library and two programs-    license:         BSD3-    author:          Angela Author-    build-type:      Simple-    cabal-version:   >= 1.8--    library-      build-depends:   HUnit >= 1.1.1 && < 1.2-      exposed-modules: A, B, C--    executable program1-      main-is:         Main.hs-      hs-source-dirs:  prog1-      other-modules:   A, B--    executable program2-      main-is:         Main.hs-      hs-source-dirs:  prog2-      other-modules:   A, C, Utils--with ``Setup.hs`` the same as above. Note that any library modules-required (directly or indirectly) by an executable must be listed again.--The trivial setup script used in these examples uses the *simple build-infrastructure* provided by the Cabal library (see-`Distribution.Simple <../release/cabal-latest/doc/API/Cabal/Distribution-Simple.html>`__).-The simplicity lies in its interface rather that its implementation. It-automatically handles preprocessing with standard preprocessors, and-builds packages for all the Haskell implementations.--The simple build infrastructure can also handle packages where building-is governed by system-dependent parameters, if you specify a little more-(see the section on `system-dependent parameters`_).-A few packages require `more elaborate solutions <more complex packages>`_.--.. _pkg-desc:--Package descriptions-----------------------The package description file must have a name ending in "``.cabal``". It-must be a Unicode text file encoded using valid UTF-8. There must be-exactly one such file in the directory. The first part of the name is-usually the package name, and some of the tools that operate on Cabal-packages require this; specifically, Hackage rejects packages which-don't follow this rule.--In the package description file, lines whose first non-whitespace-characters are "``--``" are treated as comments and ignored.--This file should contain of a number global property descriptions and-several sections.---  The `package properties`_ describe the package-   as a whole, such as name, license, author, etc.---  Optionally, a number of *configuration flags* can be declared. These-   can be used to enable or disable certain features of a package. (see-   the section on `configurations`_).---  The (optional) library section specifies the `library`_ properties and-   relevant `build information`_.---  Following is an arbitrary number of executable sections which describe-   an executable program and relevant `build information`_.--Each section consists of a number of property descriptions in the form-of field/value pairs, with a syntax roughly like mail message headers.---  Case is not significant in field names, but is significant in field-   values.---  To continue a field value, indent the next line relative to the field-   name.---  Field names may be indented, but all field values in the same section-   must use the same indentation.---  Tabs are *not* allowed as indentation characters due to a missing-   standard interpretation of tab width.---  Before Cabal 3.0, to get a blank line in a field value, use an indented "``.``"--The syntax of the value depends on the field. Field types include:--*token*, *filename*, *directory*-    Either a sequence of one or more non-space non-comma characters, or-    a quoted string in Haskell 98 lexical syntax. The latter can be used-    for escaping whitespace, for example:-    ``ghc-options: -Wall "-with-rtsopts=-T -I1"``. Unless otherwise-    stated, relative filenames and directories are interpreted from the-    package root directory.-*freeform*, *URL*, *address*-    An arbitrary, uninterpreted string.-*identifier*-    A letter followed by zero or more alphanumerics or underscores.-*compiler*-    A compiler flavor (one of: ``GHC``, ``UHC`` or ``LHC``)-    followed by a version range. For example, ``GHC ==6.10.3``, or-    ``LHC >=0.6 && <0.8``.--Modules and preprocessors-^^^^^^^^^^^^^^^^^^^^^^^^^--Haskell module names listed in the :pkg-field:`library:exposed-modules` and-:pkg-field:`library:other-modules` fields may correspond to Haskell source-files, i.e. with names ending in "``.hs``" or "``.lhs``", or to inputs for-various Haskell preprocessors. The simple build infrastructure understands the-extensions:---  ``.gc`` (:hackage-pkg:`greencard`)--  ``.chs`` (:hackage-pkg:`c2hs`)--  ``.hsc`` (:hackage-pkg:`hsc2hs`)--  ``.y`` and ``.ly`` (happy_)--  ``.x`` (alex_)--  ``.cpphs`` (cpphs_)--When building, Cabal will automatically run the appropriate preprocessor-and compile the Haskell module it produces. For the ``c2hs`` and-``hsc2hs`` preprocessors, Cabal will also automatically add, compile and-link any C sources generated by the preprocessor (produced by-``hsc2hs``'s ``#def`` feature or ``c2hs``'s auto-generated wrapper-functions). Dependencies on pre-processors are specified via the-:pkg-field:`build-tools` or :pkg-field:`build-tool-depends` fields.--Some fields take lists of values, which are optionally separated by-commas, except for the :pkg-field:`build-depends` field, where the commas are-mandatory.--Some fields are marked as required. All others are optional, and unless-otherwise specified have empty default values.--Package properties-^^^^^^^^^^^^^^^^^^--These fields may occur in the first top-level properties section and-describe the package as a whole:--.. pkg-field:: name: package-name (required)--    The unique name of the package, without the version number.--    As pointed out in the section on `package descriptions`_, some-    tools require the package-name specified for this field to match-    the package description's file-name :file:`{package-name}.cabal`.--    Package names are case-sensitive and must match the regular expression-    (i.e. alphanumeric "words" separated by dashes; each alphanumeric-    word must contain at least one letter):-    ``[[:digit:]]*[[:alpha:]][[:alnum:]]*(-[[:digit:]]*[[:alpha:]][[:alnum:]]*)*``.--    Or, expressed in ABNF_:--    .. code-block:: abnf--        package-name      = package-name-part *("-" package-name-part)-        package-name-part = *DIGIT UALPHA *UALNUM--        UALNUM = UALPHA / DIGIT-        UALPHA = ... ; set of alphabetic Unicode code-points--    .. note::--        Hackage restricts package names to the ASCII subset.--.. pkg-field:: version: numbers (required)--    The package version number, usually consisting of a sequence of-    natural numbers separated by dots, i.e. as the regular-    expression ``[0-9]+([.][0-9]+)*`` or expressed in ABNF_:--    .. code-block:: abnf--        package-version = 1*DIGIT *("." 1*DIGIT)--.. pkg-field:: cabal-version: x.y[.z]--    The version of the Cabal specification that this package-    description uses. The Cabal specification does slowly evolve (see-    also :ref:`spec-history`), introducing new features and-    occasionally changing the meaning of existing features. By-    specifying which version of the specification you are using it-    enables programs which process the package description to know-    what syntax to expect and what each part means.--    The version number you specify will affect both compatibility and-    behaviour. Most tools (including the Cabal library and the ``cabal``-    program) understand a range of versions of the Cabal specification.-    Older tools will of course only work with older versions of the-    Cabal specification that was known at the time. Most of the time,-    tools that are too old will recognise this fact and produce a-    suitable error message. Likewise, ``cabal check`` will tell you-    whether the version number is sufficiently high for the features-    you use in the package description.--    As for behaviour, new versions of the Cabal specification can change the-    meaning of existing syntax. This means if you want to take advantage-    of the new meaning or behaviour then you must specify the newer-    Cabal version. Tools are expected to use the meaning and behaviour-    appropriate to the version given in the package description.--    In particular, the syntax of package descriptions changed-    significantly with Cabal version 1.2 and the :pkg-field:`cabal-version`-    field is now required. Files written in the old syntax are still-    recognized, so if you require compatibility with very old Cabal-    versions then you may write your package description file using the-    old syntax. Please consult the user's guide of an older Cabal-    version for a description of that syntax.--    Starting with ``cabal-version: 2.2`` this field is only valid if-    fully contained in the very first line of a package description-    and ought to adhere to the ABNF_ grammar--    .. code-block:: abnf--        newstyle-spec-version-decl = "cabal-version" *WS ":" *WS newstyle-spec-version *WS--        newstyle-spec-version      = NUM "." NUM [ "." NUM ]--        NUM    = DIGIT0 / DIGITP 1*DIGIT0-        DIGIT0 = %x30-39-        DIGITP = %x31-39-        WS     = %20---    .. note::--        For package descriptions using a format prior to-        ``cabal-version: 1.12`` the legacy syntax resembling a version-        range syntax--        .. code-block:: cabal--            cabal-version: >= 1.10--        needs to be used.--        This legacy syntax is supported up until ``cabal-version: >=-        2.0`` it is however strongly recommended to avoid using the-        legacy syntax. See also :issue:`4899`.----.. pkg-field:: build-type: identifier--    :default: ``Custom`` or ``Simple``--    The type of build used by this package. Build types are the-    constructors of the-    `BuildType <../release/cabal-latest/doc/API/Cabal/Distribution-PackageDescription.html#t:BuildType>`__-    type. This field is optional and when missing, its default value-    is inferred according to the following rules:--     - When :pkg-field:`cabal-version` is set to ``2.2`` or higher,-       the default is ``Simple`` unless a :pkg-section:`custom-setup`-       exists, in which case the inferred default is ``Custom``.--     - For lower :pkg-field:`cabal-version` values, the default is-       ``Custom`` unconditionally.--    If the build type is anything other than ``Custom``, then the-    ``Setup.hs`` file *must* be exactly the standardized content-    discussed below. This is because in these cases, ``cabal`` will-    ignore the ``Setup.hs`` file completely, whereas other methods of-    package management, such as ``runhaskell Setup.hs [CMD]``, still-    rely on the ``Setup.hs`` file.--    For build type ``Simple``, the contents of ``Setup.hs`` must be:--    .. code-block:: haskell--        import Distribution.Simple-        main = defaultMain--    For build type ``Configure`` (see the section on `system-dependent-    parameters`_ below), the contents of-    ``Setup.hs`` must be:--    .. code-block:: haskell--        import Distribution.Simple-        main = defaultMainWithHooks autoconfUserHooks--    For build type ``Make`` (see the section on `more complex packages`_ below),-    the contents of ``Setup.hs`` must be:--    .. code-block:: haskell--        import Distribution.Make-        main = defaultMain--    For build type ``Custom``, the file ``Setup.hs`` can be customized,-    and will be used both by ``cabal`` and other tools.--    For most packages, the build type ``Simple`` is sufficient.--.. pkg-field:: license: SPDX expression--    :default: ``NONE``--    The type of license under which this package is distributed.--    Starting with ``cabal-version: 2.2`` the ``license`` field takes a-    (case-sensitive) SPDX expression such as--    .. code-block:: cabal--        license: Apache-2.0 AND (MIT OR GPL-2.0-or-later)--    See `SPDX IDs: How to use <https://spdx.org/ids-how>`__ for more-    examples of SPDX expressions.--    The version of the-    `list of SPDX license identifiers <https://spdx.org/licenses/>`__-    is a function of the :pkg-field:`cabal-version` value as defined-    in the following table:--    +--------------------------+--------------------+-    | Cabal specification      | SPDX license list  |-    | version                  | version            |-    |                          |                    |-    +==========================+====================+-    | ``cabal-version: 2.2``   | ``3.0 2017-12-28`` |-    +--------------------------+--------------------+-    | ``cabal-version: 2.4``   | ``3.2 2018-07-10`` |-    +--------------------------+--------------------+--    **Pre-SPDX Legacy Identifiers**--    The license identifier in the table below are defined for-    ``cabal-version: 2.0`` and previous versions of the Cabal-    specification.--    +--------------------------+-----------------+-    | :pkg-field:`license`     | Note            |-    | identifier               |                 |-    |                          |                 |-    +==========================+=================+-    | ``GPL``                  |                 |-    | ``GPL-2``                |                 |-    | ``GPL-3``                |                 |-    +--------------------------+-----------------+-    | ``LGPL``                 |                 |-    | ``LGPL-2.1``             |                 |-    | ``LGPL-3``               |                 |-    +--------------------------+-----------------+-    | ``AGPL``                 | since 1.18      |-    | ``AGPL-3``               |                 |-    +--------------------------+-----------------+-    | ``BSD2``                 | since 1.20      |-    +--------------------------+-----------------+-    | ``BSD3``                 |                 |-    +--------------------------+-----------------+-    | ``MIT``                  |                 |-    +--------------------------+-----------------+-    | ``ISC``                  | since 1.22      |-    +--------------------------+-----------------+-    | ``MPL-2.0``              | since 1.20      |-    +--------------------------+-----------------+-    | ``Apache``               |                 |-    | ``Apache-2.0``           |                 |-    +--------------------------+-----------------+-    | ``PublicDomain``         |                 |-    +--------------------------+-----------------+-    | ``AllRightsReserved``    |                 |-    +--------------------------+-----------------+-    | ``OtherLicense``         |                 |-    +--------------------------+-----------------+---.. pkg-field:: license-file: filename--    See :pkg-field:`license-files`.--.. pkg-field:: license-files: filename list-    :since: 1.20--    The name of a file(s) containing the precise copyright license for-    this package. The license file(s) will be installed with the-    package.--    If you have multiple license files then use the :pkg-field:`license-files`-    field instead of (or in addition to) the :pkg-field:`license-file` field.--.. pkg-field:: copyright: freeform--    The content of a copyright notice, typically the name of the holder-    of the copyright on the package and the year(s) from which copyright-    is claimed. For example::--      copyright: (c) 2006-2007 Joe Bloggs--.. pkg-field:: author: freeform--    The original author of the package.--    Remember that ``.cabal`` files are Unicode, using the UTF-8-    encoding.--.. pkg-field:: maintainer: address--    The current maintainer or maintainers of the package. This is an-    e-mail address to which users should send bug reports, feature-    requests and patches.--.. pkg-field:: stability: freeform--    The stability level of the package, e.g. ``alpha``,-    ``experimental``, ``provisional``, ``stable``.--.. pkg-field:: homepage: URL--    The package homepage.--.. pkg-field:: bug-reports: URL--    The URL where users should direct bug reports. This would normally-    be either:--    -  A ``mailto:`` URL, e.g. for a person or a mailing list.--    -  An ``http:`` (or ``https:``) URL for an online bug tracking-       system.--    For example Cabal itself uses a web-based bug tracking system--    ::--        bug-reports: https://github.com/haskell/cabal/issues--.. pkg-field:: package-url: URL--    The location of a source bundle for the package. The distribution-    should be a Cabal package.--.. pkg-field:: synopsis: freeform--    A very short description of the package, for use in a table of-    packages. This is your headline, so keep it short (one line) but as-    informative as possible. Save space by not including the package-    name or saying it's written in Haskell.--.. pkg-field:: description: freeform--    Description of the package. This may be several paragraphs, and-    should be aimed at a Haskell programmer who has never heard of your-    package before.--    For library packages, this field is used as prologue text by-    :ref:`setup-haddock` and thus may contain the same markup as Haddock_-    documentation comments.--.. pkg-field:: category: freeform--    A classification category for future use by the package catalogue-    Hackage_. These categories have not-    yet been specified, but the upper levels of the module hierarchy-    make a good start.--.. pkg-field:: tested-with: compiler list--    A list of compilers and versions against which the package has been-    tested (or at least built). The value of this field is not used by Cabal-    and is rather intended as extra metadata for use by third party-    tooling, such as e.g. CI tooling.--    Here's a typical usage example--    ::--        tested-with: GHC == 8.6.3, GHC == 8.4.4, GHC == 8.2.2, GHC == 8.0.2,-                     GHC == 7.10.3, GHC == 7.8.4, GHC == 7.6.3, GHC == 7.4.2--    which can (starting with Cabal 3.0) also be written using the more-    concise set notation syntax--    ::--        tested-with: GHC == { 8.6.3, 8.4.4, 8.2.2, 8.0.2, 7.10.3, 7.8.4, 7.6.3, 7.4.2 }--.. pkg-field:: data-files: filename list--    A list of files to be installed for run-time use by the package.-    This is useful for packages that use a large amount of static data,-    such as tables of values or code templates. Cabal provides a way to-    `find these files at run-time <#accessing-data-files-from-package-code>`_.--    A limited form of ``*`` wildcards in file names, for example-    ``data-files: images/*.png`` matches all the ``.png`` files in the-    ``images`` directory. ``data-files: audio/**/*.mp3`` matches all-    the ``.mp3`` files in the ``audio`` directory, including-    subdirectories.--    The specific limitations of this wildcard syntax are--    - ``*`` wildcards are only allowed in place of the file name, not-      in the directory name or file extension. It must replace the-      whole file name (e.g., ``*.html`` is allowed, but-      ``chapter-*.html`` is not). If a wildcard is used, it must be-      used with an extension, so ``data-files: data/*`` is not-      allowed.--    - Prior to Cabal 2.4, when matching a wildcard plus extension, a-      file's full extension must match exactly, so ``*.gz`` matches-      ``foo.gz`` but not ``foo.tar.gz``. This restriction has been-      lifted when ``cabal-version: 2.4`` or greater so that ``*.gz``-      does match ``foo.tar.gz``--    - ``*`` wildcards will not match if the file name is empty (e.g.,-      ``*.html`` will not match ``foo/.html``).--    - ``**`` wildcards can only appear as the final path component-      before the file name (e.g., ``data/**/images/*.jpg`` is not-      allowed). If a ``**`` wildcard is used, then the file name must-      include a ``*`` wildcard (e.g., ``data/**/README.rst`` is not-      allowed).--    - A wildcard that does not match any files is an error.--    The reason for providing only a very limited form of wildcard is to-    concisely express the common case of a large number of related files-    of the same file type without making it too easy to accidentally-    include unwanted files.--    On efficiency: if you use ``**`` patterns, the directory tree will-    be walked starting with the parent directory of the ``**``. If-    that's the root of the project, this might include ``.git/``,-    ``dist-newstyle/``, or other large directories! To avoid this-    behaviour, put the files that wildcards will match against in-    their own folder.--    ``**`` wildcards are available starting in Cabal 2.4.--.. pkg-field:: data-dir: directory--    The directory where Cabal looks for data files to install, relative-    to the source directory. By default, Cabal will look in the source-    directory itself.--.. pkg-field:: extra-source-files: filename list--    A list of additional files to be included in source distributions-    built with :ref:`setup-sdist`. As with :pkg-field:`data-files` it can use-    a limited form of ``*`` wildcards in file names.--.. pkg-field:: extra-doc-files: filename list-    :since: 1.18--    A list of additional files to be included in source distributions,-    and also copied to the html directory when Haddock documentation is-    generated. As with :pkg-field:`data-files` it can use a limited form of-    ``*`` wildcards in file names.--.. pkg-field:: extra-tmp-files: filename list--    A list of additional files or directories to be removed by-    :ref:`setup-clean`. These  would typically be additional files created by-    additional hooks, such as the scheme described in the section on-    `system-dependent parameters`_--Library-^^^^^^^--.. pkg-section:: library name-    :synopsis: Library build information.--    Build information for libraries.--    Currently, there can only be one publicly exposed library in a-    package, and its name is the same as package name set by global-    :pkg-field:`name` field. In this case, the ``name`` argument to-    the :pkg-section:`library` section must be omitted.--    Starting with Cabal 2.0, private internal sub-library components-    can be defined by using setting the ``name`` field to a name-    different from the current package's name; see section on-    :ref:`Internal Libraries <sublibs>` for more information.--The library section should contain the following fields:--.. pkg-field:: exposed-modules: identifier list--    :required: if this package contains a library--    A list of modules added by this package.--.. pkg-field:: virtual-modules: identifier list-    :since: 2.2--    A list of virtual modules provided by this package.  Virtual modules-    are modules without a source file.  See for example the ``GHC.Prim``-    module from the ``ghc-prim`` package.  Modules listed here will not be-    built, but still end up in the list of ``exposed-modules`` in the-    installed package info when the package is registered in the package-    database.--.. pkg-field:: exposed: boolean--    :default: ``True``--    Some Haskell compilers (notably GHC) support the notion of packages-    being "exposed" or "hidden" which means the modules they provide can-    be easily imported without always having to specify which package-    they come from. However this only works effectively if the modules-    provided by all exposed packages do not overlap (otherwise a module-    import would be ambiguous).--    Almost all new libraries use hierarchical module names that do not-    clash, so it is very uncommon to have to use this field. However it-    may be necessary to set ``exposed: False`` for some old libraries-    that use a flat module namespace or where it is known that the-    exposed modules would clash with other common modules.--.. pkg-field:: visibility: visibilty specifiers--    :since 3.0--    :default: ``private`` for internal libraries. Cannot be set for public library.--    Cabal recognizes ``public`` and ``private`` here...--    Multiple public libraries...--.. pkg-field:: reexported-modules: exportlist-    :since: 1.22--    Supported only in GHC 7.10 and later. A list of modules to-    *reexport* from this package. The syntax of this field is-    ``orig-pkg:Name as NewName`` to reexport module ``Name`` from-    ``orig-pkg`` with the new name ``NewName``. We also support-    abbreviated versions of the syntax: if you omit ``as NewName``,-    we'll reexport without renaming; if you omit ``orig-pkg``, then we-    will automatically figure out which package to reexport from, if-    it's unambiguous.--    Reexported modules are useful for compatibility shims when a package-    has been split into multiple packages, and they have the useful-    property that if a package provides a module, and another package-    reexports it under the same name, these are not considered a-    conflict (as would be the case with a stub module.) They can also be-    used to resolve name conflicts.--.. pkg-field:: signatures: signature list-    :since: 2.0--    Supported only in GHC 8.2 and later. A list of `module signatures <https://downloads.haskell.org/~ghc/master/users-guide/separate_compilation.html#module-signatures>`__ required by this package.--    Module signatures are part of the Backpack_ extension to-    the Haskell module system.--    Packages that do not export any modules and only export required signatures-    are called "signature-only packages", and their signatures are subjected to-    `signature thinning-    <https://wiki.haskell.org/Module_signature#How_to_use_a_signature_package>`__.----The library section may also contain build information fields (see the-section on `build information`_).--.. _sublibs:--**Internal Libraries**--Cabal 2.0 and later support "internal libraries", which are extra named-libraries (as opposed to the usual unnamed library section). For-example, suppose that your test suite needs access to some internal-modules in your library, which you do not otherwise want to export. You-could put these modules in an internal library, which the main library-and the test suite :pkg-field:`build-depends` upon. Then your Cabal file might-look something like this:--::--    cabal-version:  2.0-    name:           foo-    version:        0.1.0.0-    license:        BSD3-    build-type:     Simple--    library foo-internal-        exposed-modules: Foo.Internal-        -- NOTE: no explicit constraints on base needed-        --       as they're inherited from the 'library' stanza-        build-depends: base--    library-        exposed-modules: Foo.Public-        build-depends: foo-internal, base >= 4.3 && < 5--    test-suite test-foo-        type:       exitcode-stdio-1.0-        main-is:    test-foo.hs-        -- NOTE: no constraints on 'foo-internal' as same-package-        --       dependencies implicitly refer to the same package instance-        build-depends: foo-internal, base--Internal libraries are also useful for packages that define multiple-executables, but do not define a publicly accessible library. Internal-libraries are only visible internally in the package (so they can only-be added to the :pkg-field:`build-depends` of same-package libraries,-executables, test suites, etc.) Internal libraries locally shadow any-packages which have the same name; consequently, don't name an internal-library with the same name as an external dependency if you need to be-able to refer to the external dependency in a-:pkg-field:`build-depends` declaration.--Shadowing can be used to vendor an external dependency into a package-and thus emulate *private dependencies*. Below is an example based on-a real-world use case:--::--    cabal-version: 2.2-    name: haddock-library-    version: 1.6.0--    library-      build-depends:-        , base         ^>= 4.11.1.0-        , bytestring   ^>= 0.10.2.0-        , containers   ^>= 0.4.2.1 || ^>= 0.5.0.0-        , transformers ^>= 0.5.0.0--      hs-source-dirs:       src--      -- internal sub-lib-      build-depends:        attoparsec--      exposed-modules:-        Documentation.Haddock--    library attoparsec-      build-depends:-        , base         ^>= 4.11.1.0-        , bytestring   ^>= 0.10.2.0-        , deepseq      ^>= 1.4.0.0--      hs-source-dirs:       vendor/attoparsec-0.13.1.0--      -- NB: haddock-library needs only small part of lib:attoparsec-      --     internally, so we only bundle that subset here-      exposed-modules:-        Data.Attoparsec.ByteString-        Data.Attoparsec.Combinator--      other-modules:-        Data.Attoparsec.Internal--      ghc-options: -funbox-strict-fields -Wall -fwarn-tabs -O2---Opening an interpreter session-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--While developing a package, it is often useful to make its code-available inside an interpreter session. This can be done with the-``repl`` command:--.. code-block:: console--    $ cabal repl--The name comes from the acronym-`REPL <http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop>`__,-which stands for "read-eval-print-loop". By default ``cabal repl`` loads-the first component in a package. If the package contains several named-components, the name can be given as an argument to ``repl``. The name-can be also optionally prefixed with the component's type for-disambiguation purposes. Example:--.. code-block:: console--    $ cabal repl foo-    $ cabal repl exe:foo-    $ cabal repl test:bar-    $ cabal repl bench:baz--Freezing dependency versions-""""""""""""""""""""""""""""--If a package is built in several different environments, such as a-development environment, a staging environment and a production-environment, it may be necessary or desirable to ensure that the same-dependency versions are selected in each environment. This can be done-with the ``freeze`` command:--.. code-block:: console--    $ cabal freeze--The command writes the selected version for all dependencies to the-``cabal.config`` file. All environments which share this file will use-the dependency versions specified in it.--Generating dependency version bounds-""""""""""""""""""""""""""""""""""""--Cabal also has the ability to suggest dependency version bounds that-conform to `Package Versioning Policy`_, which is-a recommended versioning system for publicly released Cabal packages.-This is done by running the ``gen-bounds`` command:--.. code-block:: console--    $ cabal gen-bounds--For example, given the following dependencies specified in-:pkg-field:`build-depends`:--::--    build-depends:-      foo == 0.5.2-      bar == 1.1--``gen-bounds`` will suggest changing them to the following:--::--    build-depends:-      foo >= 0.5.2 && < 0.6-      bar >= 1.1 && < 1.2--Listing outdated dependency version bounds-""""""""""""""""""""""""""""""""""""""""""--Manually updating dependency version bounds in a ``.cabal`` file or a-freeze file can be tedious, especially when there's a lot of-dependencies. The ``cabal outdated`` command is designed to help with-that. It will print a list of packages for which there is a new-version on Hackage that is outside the version bound specified in the-``build-depends`` field. The ``outdated`` command can also be-configured to act on the freeze file (both old- and v2-style) and-ignore major (or all) version bumps on Hackage for a subset of-dependencies.--The following flags are supported by the ``outdated`` command:--``--freeze-file``-    Read dependency version bounds from the freeze file (``cabal.config``)-    instead of the package description file (``$PACKAGENAME.cabal``).-    ``--v1-freeze-file`` is an alias for this flag starting in Cabal 2.4.-``--v2-freeze-file``-    :since: 2.4--    Read dependency version bounds from the v2-style freeze file-    (by default, ``cabal.project.freeze``) instead of the package-    description file. ``--new-freeze-file`` is an alias for this flag-    that can be used with pre-2.4 ``cabal``.-``--project-file`` *PROJECTFILE*-    :since: 2.4--    Read dependendency version bounds from the v2-style freeze file-    related to the named project file (i.e., ``$PROJECTFILE.freeze``)-    instead of the package desctription file. If multiple ``--project-file``-    flags are provided, only the final one is considered. This flag-    must only be passed in when ``--new-freeze-file`` is present.-``--simple-output``-    Print only the names of outdated dependencies, one per line.-``--exit-code``-    Exit with a non-zero exit code when there are outdated dependencies.-``-q, --quiet``-    Don't print any output. Implies ``-v0`` and ``--exit-code``.-``--ignore`` *PACKAGENAMES*-    Don't warn about outdated dependency version bounds for the packages in this-    list.-``--minor`` *[PACKAGENAMES]*-    Ignore major version bumps for these packages. E.g. if there's a version 2.0-    of a package ``pkg`` on Hackage and the freeze file specifies the constraint-    ``pkg == 1.9``, ``cabal outdated --freeze --minor=pkg`` will only consider-    the ``pkg`` outdated when there's a version of ``pkg`` on Hackage satisfying-    ``pkg > 1.9 && < 2.0``. ``--minor`` can also be used without arguments, in-    that case major version bumps are ignored for all packages.--Examples:--.. code-block:: console--    $ cd /some/package-    $ cabal outdated-    Outdated dependencies:-    haskell-src-exts <1.17 (latest: 1.19.1)-    language-javascript <0.6 (latest: 0.6.0.9)-    unix ==2.7.2.0 (latest: 2.7.2.1)--    $ cabal outdated --simple-output-    haskell-src-exts-    language-javascript-    unix--    $ cabal outdated --ignore=haskell-src-exts-    Outdated dependencies:-    language-javascript <0.6 (latest: 0.6.0.9)-    unix ==2.7.2.0 (latest: 2.7.2.1)--    $ cabal outdated --ignore=haskell-src-exts,language-javascript,unix-    All dependencies are up to date.--    $ cabal outdated --ignore=haskell-src-exts,language-javascript,unix -q-    $ echo $?-    0--    $ cd /some/other/package-    $ cabal outdated --freeze-file-    Outdated dependencies:-    HTTP ==4000.3.3 (latest: 4000.3.4)-    HUnit ==1.3.1.1 (latest: 1.5.0.0)--    $ cabal outdated --freeze-file --ignore=HTTP --minor=HUnit-    Outdated dependencies:-    HUnit ==1.3.1.1 (latest: 1.3.1.2)---Executables-^^^^^^^^^^^--.. pkg-section:: executable name-    :synopsis: Executable build info section.--    Executable sections (if present) describe executable programs contained-    in the package and must have an argument after the section label, which-    defines the name of the executable. This is a freeform argument but may-    not contain spaces.--The executable may be described using the following fields, as well as-build information fields (see the section on `build information`_).--.. pkg-field:: main-is: filename (required)--    The name of the ``.hs`` or ``.lhs`` file containing the ``Main``-    module. Note that it is the ``.hs`` filename that must be listed,-    even if that file is generated using a preprocessor. The source file-    must be relative to one of the directories listed in-    :pkg-field:`hs-source-dirs`. Further, while the name of the file may-    vary, the module itself must be named ``Main``.--    Starting with ``cabal-version: 1.18`` this field supports-    specifying a C, C++, or objC source file as the main entry point.--.. pkg-field:: scope: token-    :since: 2.0--    Whether the executable is ``public`` (default) or ``private``, i.e. meant to-    be run by other programs rather than the user. Private executables are-    installed into `$libexecdir/$libexecsubdir`.--Running executables-"""""""""""""""""""--You can have Cabal build and run your executables by using the ``run``-command:--.. code-block:: console--    $ cabal run EXECUTABLE [-- EXECUTABLE_FLAGS]--This command will configure, build and run the executable-``EXECUTABLE``. The double dash separator is required to distinguish-executable flags from ``run``'s own flags. If there is only one-executable defined in the whole package, the executable's name can be-omitted. See the output of ``cabal help run`` for a list of options you-can pass to ``cabal run``.--Test suites-^^^^^^^^^^^--.. pkg-section:: test-suite name-    :synopsis: Test suite build information.--    Test suite sections (if present) describe package test suites and must-    have an argument after the section label, which defines the name of the-    test suite. This is a freeform argument, but may not contain spaces. It-    should be unique among the names of the package's other test suites, the-    package's executables, and the package itself. Using test suite sections-    requires at least Cabal version 1.9.2.--The test suite may be described using the following fields, as well as-build information fields (see the section on `build information`_).--.. pkg-field:: type: interface (required)--    The interface type and version of the test suite. Cabal supports two-    test suite interfaces, called ``exitcode-stdio-1.0`` and-    ``detailed-0.9``. Each of these types may require or disallow other-    fields as described below.--Test suites using the ``exitcode-stdio-1.0`` interface are executables-that indicate test failure with a non-zero exit code when run; they may-provide human-readable log information through the standard output and-error channels. The ``exitcode-stdio-1.0`` type requires the ``main-is``-field.--.. pkg-field:: main-is: filename-    :synopsis: Module containing tests main function.--    :required: ``exitcode-stdio-1.0``-    :disallowed: ``detailed-0.9``--    The name of the ``.hs`` or ``.lhs`` file containing the ``Main``-    module. Note that it is the ``.hs`` filename that must be listed,-    even if that file is generated using a preprocessor. The source file-    must be relative to one of the directories listed in-    :pkg-field:`hs-source-dirs`. This field is analogous to the ``main-is`` field-    of an executable section.--Test suites using the ``detailed-0.9`` interface are modules exporting-the symbol ``tests :: IO [Test]``. The ``Test`` type is exported by the-module ``Distribution.TestSuite`` provided by Cabal. For more details,-see the example below.--The ``detailed-0.9`` interface allows Cabal and other test agents to-inspect a test suite's results case by case, producing detailed human--and machine-readable log files. The ``detailed-0.9`` interface requires-the :pkg-field:`test-module` field.--.. pkg-field:: test-module: identifier--    :required: ``detailed-0.9``-    :disallowed: ``exitcode-stdio-1.0``--    The module exporting the ``tests`` symbol.--Example: Package using ``exitcode-stdio-1.0`` interface-"""""""""""""""""""""""""""""""""""""""""""""""""""""""--The example package description and executable source file below-demonstrate the use of the ``exitcode-stdio-1.0`` interface.--.. code-block:: cabal-    :caption: foo.cabal--    Name:           foo-    Version:        1.0-    License:        BSD3-    Cabal-Version:  >= 1.9.2-    Build-Type:     Simple--    Test-Suite test-foo-        type:       exitcode-stdio-1.0-        main-is:    test-foo.hs-        build-depends: base >= 4 && < 5--.. code-block:: haskell-    :caption: test-foo.hs--    module Main where--    import System.Exit (exitFailure)--    main = do-        putStrLn "This test always fails!"-        exitFailure--Example: Package using ``detailed-0.9`` interface-"""""""""""""""""""""""""""""""""""""""""""""""""--The example package description and test module source file below-demonstrate the use of the ``detailed-0.9`` interface. The test module-also develops a simple implementation of the interface set by-``Distribution.TestSuite``, but in actual usage the implementation would-be provided by the library that provides the testing facility.--.. code-block:: cabal-    :caption: bar.cabal--    Name:           bar-    Version:        1.0-    License:        BSD3-    Cabal-Version:  >= 1.9.2-    Build-Type:     Simple--    Test-Suite test-bar-        type:       detailed-0.9-        test-module: Bar-        build-depends: base >= 4 && < 5, Cabal >= 1.9.2 && < 2---.. code-block:: haskell-    :caption: Bar.hs--    module Bar ( tests ) where--    import Distribution.TestSuite--    tests :: IO [Test]-    tests = return [ Test succeeds, Test fails ]-      where-        succeeds = TestInstance-            { run = return $ Finished Pass-            , name = "succeeds"-            , tags = []-            , options = []-            , setOption = \_ _ -> Right succeeds-            }-        fails = TestInstance-            { run = return $ Finished $ Fail "Always fails!"-            , name = "fails"-            , tags = []-            , options = []-            , setOption = \_ _ -> Right fails-            }--Running test suites-"""""""""""""""""""--You can have Cabal run your test suites using its built-in test runner:--::--    $ cabal configure --enable-tests-    $ cabal build-    $ cabal test--See the output of ``cabal help test`` for a list of options you can pass-to ``cabal test``.--Benchmarks-^^^^^^^^^^--.. pkg-section:: benchmark name-    :since: 1.9.2-    :synopsis: Benchmark build information.--    Benchmark sections (if present) describe benchmarks contained in the-    package and must have an argument after the section label, which defines-    the name of the benchmark. This is a freeform argument, but may not-    contain spaces. It should be unique among the names of the package's-    other benchmarks, the package's test suites, the package's executables,-    and the package itself. Using benchmark sections requires at least Cabal-    version 1.9.2.--The benchmark may be described using the following fields, as well as-build information fields (see the section on `build information`_).--.. pkg-field:: type: interface (required)--    The interface type and version of the benchmark. At the moment Cabal-    only support one benchmark interface, called ``exitcode-stdio-1.0``.--Benchmarks using the ``exitcode-stdio-1.0`` interface are executables-that indicate failure to run the benchmark with a non-zero exit code-when run; they may provide human-readable information through the-standard output and error channels.--.. pkg-field:: main-is: filename--    :required: ``exitcode-stdio-1.0``--    The name of the ``.hs`` or ``.lhs`` file containing the ``Main``-    module. Note that it is the ``.hs`` filename that must be listed,-    even if that file is generated using a preprocessor. The source file-    must be relative to one of the directories listed in-    :pkg-field:`hs-source-dirs`. This field is analogous to the ``main-is``-    field of an executable section. Further, while the name of the file may-    vary, the module itself must be named ``Main``.--Example: Package using ``exitcode-stdio-1.0`` interface-"""""""""""""""""""""""""""""""""""""""""""""""""""""""--The example package description and executable source file below-demonstrate the use of the ``exitcode-stdio-1.0`` interface.--.. code-block:: cabal-    :caption: foo.cabal-    :name: foo-bench.cabal--    Name:           foo-    Version:        1.0-    License:        BSD3-    Cabal-Version:  >= 1.9.2-    Build-Type:     Simple--    Benchmark bench-foo-        type:       exitcode-stdio-1.0-        main-is:    bench-foo.hs-        build-depends: base >= 4 && < 5, time >= 1.1 && < 1.7--.. code-block:: haskell-    :caption: bench-foo.hs--    {-# LANGUAGE BangPatterns #-}-    module Main where--    import Data.Time.Clock--    fib 0 = 1-    fib 1 = 1-    fib n = fib (n-1) + fib (n-2)--    main = do-        start <- getCurrentTime-        let !r = fib 20-        end <- getCurrentTime-        putStrLn $ "fib 20 took " ++ show (diffUTCTime end start)--Running benchmarks-""""""""""""""""""--You can have Cabal run your benchmark using its built-in benchmark-runner:--::--    $ cabal configure --enable-benchmarks-    $ cabal build-    $ cabal bench--See the output of ``cabal help bench`` for a list of options you can-pass to ``cabal bench``.--Foreign libraries-^^^^^^^^^^^^^^^^^--Foreign libraries are system libraries intended to be linked against-programs written in C or other "foreign" languages. They-come in two primary flavours: dynamic libraries (``.so`` files on Linux,-``.dylib`` files on OSX, ``.dll`` files on Windows, etc.) are linked against-executables when the executable is run (or even lazily during-execution), while static libraries (``.a`` files on Linux/OSX, ``.lib``-files on Windows) get linked against the executable at compile time.--Foreign libraries only work with GHC 7.8 and later.--A typical stanza for a foreign library looks like--::--    foreign-library myforeignlib-      type:                native-shared-      lib-version-info:    6:3:2--      if os(Windows)-        options: standalone-        mod-def-file: MyForeignLib.def--      other-modules:       MyForeignLib.SomeModule-                           MyForeignLib.SomeOtherModule-      build-depends:       base >=4.7 && <4.9-      hs-source-dirs:      src-      c-sources:           csrc/MyForeignLibWrapper.c-      default-language:    Haskell2010---.. pkg-section:: foreign-library name-    :since: 2.0-    :synopsis: Foriegn library build information.--    Build information for `foreign libraries`_.--.. pkg-field:: type: foreign library type--   Cabal recognizes ``native-static`` and ``native-shared`` here, although-   we currently only support building `native-shared` libraries.--.. pkg-field:: options: foreign library option list--   Options for building the foreign library, typically specific to the-   specified type of foreign library. Currently we only support-   ``standalone`` here. A standalone dynamic library is one that does not-   have any dependencies on other (Haskell) shared libraries; without-   the ``standalone`` option the generated library would have dependencies-   on the Haskell runtime library (``libHSrts``), the base library-   (``libHSbase``), etc. Currently, ``standalone`` *must* be used on Windows-   and *must not* be used on any other platform.--.. pkg-field:: mod-def-file: filename--   This option can only be used when creating dynamic Windows libraries-   (that is, when using ``native-shared`` and the ``os`` is ``Windows``). If-   used, it must be a path to a *module definition file*. The details of-   module definition files are beyond the scope of this document; see the-   `GHC <https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/win32-dlls.html>`_-   manual for some details and some further pointers.--.. pkg-field:: lib-version-info: current:revision:age--   This field is currently only used on Linux.--   This field specifies a Libtool-style version-info field that sets-   an appropriate ABI version for the foreign library. Note that the-   three numbers specified in this field do not directly specify the-   actual ABI version: ``6:3:2`` results in library version ``4.2.3``.--   With this field set, the SONAME of the library is set, and symlinks-   are installed.--   How you should bump this field on an ABI change depends on the-   breakage you introduce:--   -  Programs using the previous version may use the new version as-      drop-in replacement, and programs using the new version can also-      work with the previous one. In other words, no recompiling nor-      relinking is needed. In this case, bump ``revision`` only, don't-      touch current nor age.-   -  Programs using the previous version may use the new version as-      drop-in replacement, but programs using the new version may use-      APIs not present in the previous one. In other words, a program-      linking against the new version may fail with "unresolved-      symbols" if linking against the old version at runtime: set-      revision to 0, bump current and age.-   -  Programs may need to be changed, recompiled, and relinked in-      order to use the new version. Bump current, set revision and age-      to 0.--   Also refer to the Libtool documentation on the version-info field.--.. pkg-field:: lib-version-linux: version--   This field is only used on Linux.--   Specifies the library ABI version directly for foreign libraries-   built on Linux: so specifying ``4.2.3`` causes a library-   ``libfoo.so.4.2.3`` to be built with SONAME ``libfoo.so.4``, and-   appropriate symlinks ``libfoo.so.4`` and ``libfoo.so`` to be-   installed.--Note that typically foreign libraries should export a way to initialize-and shutdown the Haskell runtime. In the example above, this is done by-the ``csrc/MyForeignLibWrapper.c`` file, which might look something like--.. code-block:: c--    #include <stdlib.h>-    #include "HsFFI.h"--    HsBool myForeignLibInit(void){-      int argc = 2;-      char *argv[] = { "+RTS", "-A32m", NULL };-      char **pargv = argv;--      // Initialize Haskell runtime-      hs_init(&argc, &pargv);--      // do any other initialization here and-      // return false if there was a problem-      return HS_BOOL_TRUE;-    }--    void myForeignLibExit(void){-      hs_exit();-    }--With modern ghc regular libraries are installed in directories that contain-package keys. This isn't usually a problem because the package gets registered-in ghc's package DB and so we can figure out what the location of the library-is. Foreign libraries however don't get registered, which means that we'd have-to have a way of finding out where a platform library got installed (other than by-searching the ``lib/`` directory). Instead, we install foreign libraries in-``~/.cabal/lib``, much like we install executables in ``~/.cabal/bin``.--Build information-^^^^^^^^^^^^^^^^^-.. pkg-section:: None--The following fields may be optionally present in a library, executable,-test suite or benchmark section, and give information for the building-of the corresponding library or executable. See also the sections on-`system-dependent parameters`_ and `configurations`_ for a way to supply-system-dependent values for these fields.--.. pkg-field:: build-depends: library list--    Declares the *library* dependencies required to build the current-    package component; see :pkg-field:`build-tool-depends` for-    declaring build-time *tool* dependencies. External library-    dependencies should be annotated with a version constraint.--    **Library Names**--    External libraries are identified by the package's name they're-    provided by (currently a package can only publicly expose its-    main library compeonent; in future, packages with multiple exposed-    public library components will be supported and a syntax for-    referring to public sub-libraries will be provided).--    In order to specify an intra-package dependency on an internal-    library component you can use the unqualified name of the-    component library component. Note that locally defined sub-library-    names shadow external package names of the same name. See section on-    :ref:`Internal Libraries <sublibs>` for examples and more information.--    **Version Constraints**--    Version constraints use the operators ``==, >=, >, <, <=`` and a-    version number. Multiple constraints can be combined using ``&&`` or-    ``||``. If no version constraint is specified, any version is-    assumed to be acceptable. For example:--    ::--        library-          build-depends:-            base >= 2,-            foo >= 1.2.3 && < 1.3,-            bar--    Dependencies like ``foo >= 1.2.3 && < 1.3`` turn out to be very-    common because it is recommended practise for package versions to-    correspond to API versions (see PVP_).--    Since Cabal 1.6, there is a special wildcard syntax to help with-    such ranges--    ::--        build-depends: foo ==1.2.*--    It is only syntactic sugar. It is exactly equivalent to-    ``foo >= 1.2 && < 1.3``.--    .. Warning::--       A potential pitfall of the wildcard syntax is that the-       constraint ``nats == 1.0.*`` doesn't match the release-       ``nats-1`` because the version ``1`` is lexicographically less-       than ``1.0``. This is not an issue with the caret-operator-       ``^>=`` described below.--    Starting with Cabal 2.0, there's a new version operator to express-    PVP_-style major upper bounds conveniently, and is inspired by similar-    syntactic sugar found in other language ecosystems where it's often-    called the "Caret" operator:--    ::--        build-depends:-          foo ^>= 1.2.3.4,-          bar ^>= 1--    This allows to assert the positive knowledge that this package is-    *known* to be semantically compatible with the releases-    ``foo-1.2.3.4`` and ``bar-1`` respectively. The information-    encoded via such ``^>=``-assertions is used by the cabal solver to-    infer version constraints describing semantically compatible-    version ranges according to the PVP_ contract (see below).--    Another way to say this is that ``foo < 1.3`` expresses *negative*-    information, i.e. "``foo-1.3`` or ``foo-1.4.2`` will *not* be-    compatible"; whereas ``foo ^>= 1.2.3.4`` asserts the *positive*-    information that "``foo-1.2.3.4`` is *known* to be compatible" and (in-    the absence of additional information) according to the PVP_-    contract we can (positively) infer right away that all versions-    satisfying ``foo >= 1.2.3.4 && < 1.3`` will be compatible as well.--    .. Note::--       More generally, the PVP_ contract implies that we can safely-       relax the lower bound to ``>= 1.2``, because if we know that-       ``foo-1.2.3.4`` is semantically compatible, then so is-       ``foo-1.2`` (if it typechecks). But we'd need to perform-       additional static analysis (i.e. perform typechecking) in order-       to know if our package in the role of an API consumer will-       successfully typecheck against the dependency ``foo-1.2``.  But-       since we cannot do this analysis during constraint solving and-       to keep things simple, we pragmatically use ``foo >= 1.2.3.4``-       as the initially inferred approximation for the lower bound-       resulting from the assertion ``foo ^>= 1.2.3.4``. If further-       evidence becomes available that e.g. ``foo-1.2`` typechecks,-       one can simply revise the dependency specification to include-       the assertion ``foo ^>= 1.2``.--    The subtle but important difference in signaling allows tooling to-    treat explicitly expressed ``<``-style constraints and inferred-    (``^>=``-style) upper bounds differently.  For instance,-    :option:`--allow-newer`'s ``^``-modifier allows to relax only-    ``^>=``-style bounds while leaving explicitly stated-    ``<``-constraints unaffected.--    Ignoring the signaling intent, the default syntactic desugaring rules are--    - ``^>= x`` == ``>= x && < x.1``-    - ``^>= x.y`` == ``>= x.y && < x.(y+1)``-    - ``^>= x.y.z`` == ``>= x.y.z && < x.(y+1)``-    - ``^>= x.y.z.u`` == ``>= x.y.z.u && < x.(y+1)``-    - etc.--    .. Note::--       One might expected the desugaring to truncate all version-       components below (and including) the patch-level, i.e.-       ``^>= x.y.z.u`` == ``>= x.y.z && < x.(y+1)``,-       as the major and minor version components alone are supposed to-       uniquely identify the API according to the PVP_.  However, by-       designing ``^>=`` to be closer to the ``>=`` operator, we avoid-       the potentially confusing effect of ``^>=`` being more liberal-       than ``>=`` in the presence of patch-level versions.--    Consequently, the example declaration above is equivalent to--    ::--        build-depends:-          foo >= 1.2.3.4 && < 1.3,-          bar >= 1 && < 1.1--    .. Note::--       Prior to Cabal 1.8, ``build-depends`` specified in each-       section were global to all sections. This was unintentional, but-       some packages were written to depend on it, so if you need your-       :pkg-field:`build-depends` to be local to each section, you must specify-       at least ``Cabal-Version: >= 1.8`` in your ``.cabal`` file.--    .. Note::--       Cabal 1.20 experimentally supported module thinning and-       renaming in ``build-depends``; however, this support has since been-       removed and should not be used.--    Starting with Cabal 3.0, a set notation for the ``==`` and ``^>=`` operator-    is available. For instance,--    ::--        tested-with: GHC == 8.6.3, GHC == 8.4.4, GHC == 8.2.2, GHC == 8.0.2,-                     GHC == 7.10.3, GHC == 7.8.4, GHC == 7.6.3, GHC == 7.4.2--        build-depends: network ^>= 2.6.3.6 || ^>= 2.7.0.2 || ^>= 2.8.0.0 || ^>= 3.0.1.0--    can be then written in a more convenient and concise form--    ::--        tested-with: GHC == { 8.6.3, 8.4.4, 8.2.2, 8.0.2, 7.10.3, 7.8.4, 7.6.3, 7.4.2 }--        build-depends: network ^>= { 2.6.3.6, 2.7.0.2, 2.8.0.0, 3.0.1.0 }---.. pkg-field:: other-modules: identifier list--    A list of modules used by the component but not exposed to users.-    For a library component, these would be hidden modules of the-    library. For an executable, these would be auxiliary modules to be-    linked with the file named in the ``main-is`` field.--    .. Note::--       Every module in the package *must* be listed in one of-       :pkg-field:`other-modules`, :pkg-field:`library:exposed-modules` or-       :pkg-field:`executable:main-is` fields.--.. pkg-field:: hs-source-dir: directory list-    :deprecated: 2.0-    :removed: 3.0-    :default: ``.``--    Root directories for the module hierarchy.--    Deprecated in favor of :pkg-field:`hs-source-dirs`.--.. pkg-field:: hs-source-dirs: directory list--    :default: ``.``--    Root directories for the module hierarchy.--    .. note::--      Components can share source directories but modules found there will be-      recompiled even if other components already built them, i.e., if a-      library and an executable share a source directory and the executable-      depends on the library and imports its ``Foo`` module, ``Foo`` will be-      compiled twice, once as part of the library and again for the executable.--.. pkg-field:: default-extensions: identifier list--    A list of Haskell extensions used by every module. These determine-    corresponding compiler options enabled for all files. Extension-    names are the constructors of the-    `Extension <../release/cabal-latest/doc/API/Cabal/Language-Haskell-Extension.html#t:Extension>`__-    type. For example, ``CPP`` specifies that Haskell source files are-    to be preprocessed with a C preprocessor.--.. pkg-field:: other-extensions: identifier list--    A list of Haskell extensions used by some (but not necessarily all)-    modules. From GHC version 6.6 onward, these may be specified by-    placing a ``LANGUAGE`` pragma in the source files affected e.g.--    .. code-block:: haskell--        {-# LANGUAGE CPP, MultiParamTypeClasses #-}--    In Cabal-1.24 the dependency solver will use this and-    :pkg-field:`default-extensions` information. Cabal prior to 1.24 will abort-    compilation if the current compiler doesn't provide the extensions.--    If you use some extensions conditionally, using CPP or conditional-    module lists, it is good to replicate the condition in-    :pkg-field:`other-extensions` declarations:--    ::--        other-extensions: CPP-        if impl(ghc >= 7.5)-          other-extensions: PolyKinds--    You could also omit the conditionally used extensions, as they are-    for information only, but it is recommended to replicate them in-    :pkg-field:`other-extensions` declarations.--.. pkg-field:: extensions: identifier list-   :deprecated: 1.12-   :removed: 3.0--   Deprecated in favor of :pkg-field:`default-extensions`.--.. pkg-field:: build-tool-depends: package:executable list-    :since: 2.0--    A list of Haskell executables needed to build this component. Executables are provided-    during the whole duration of the component, so this field can be used for executables-    needed during :pkg-section:`test-suite` as well.--    Each is specified by the package containing the executable and the name of the-    executable itself, separated by a colon, and optionally followed by a version bound.--    All executables defined in the given Cabal file are termed as *internal* dependencies-    as opposed to the rest which are *external* dependencies.--    Each of the two is handled differently:--    1. External dependencies can (and should) contain a version bound like conventional-       :pkg-field:`build-depends` dependencies.-    2. Internal depenedencies should not contain a version bound, as they will be always-       resolved within the same configuration of the package in the build plan.-       Specifically, version bounds that include the package's version will be warned for-       being extraneous, and version bounds that exclude the package's version will raise-       an error for being impossible to follow.--    For example (1) using a test-suite to make sure README.md Haskell snippets are tested using-    `markdown-unlit <http://hackage.haskell.org/package/markdown-unlit>`__:--    ::--        build-tool-depends: markdown-unlit:markdown-unlit >= 0.5.0 && < 0.6--    For example (2) using a test-suite to test executable behaviour in the same package:--    ::--        build-tool-depends: mypackage:executable--    Cabal tries to make sure that all specified programs are atomically built and prepended-    on the ``$PATH`` shell variable before building the component in question, but can only do-    so for Nix-style builds. Specifically:--    a) For Nix-style local builds, both internal and external dependencies.-    b) For old-style builds, only for internal dependencies [#old-style-build-tool-depends]_.-       It's up to the user to provide needed executables in this case under `$PATH.`---    .. note::--      :pkg-field:`build-tool-depends` was added in Cabal 2.0, and it will-      be ignored (with a warning) with old versions of Cabal.  See-      :pkg-field:`build-tools` for more information about backwards-      compatibility.--.. pkg-field:: build-tools: program list-    :deprecated: 2.0-    :removed: 3.0--    Deprecated in favor of :pkg-field:`build-tool-depends`, but :ref:`see below for backwards compatibility information <buildtoolsbc>`.--    A list of Haskell programs needed to build this component.-    Each may be followed by an optional version bound.-    Confusingly, each program in the list either refer to one of three things:--      1. Another executables in the same package (supported since Cabal 1.12)--      2. Tool name contained in Cabal's :ref:`hard-coded set of common tools <buildtoolsmap>`--      3. A pre-built executable that should already be on the ``PATH``-         (supported since Cabal 2.0)--    These cases are listed in order of priority:-    an executable in the package will override any of the hard-coded packages with the same name,-    and a hard-coded package will override any executable on the ``PATH``.--    In the first two cases, the list entry is desugared into a :pkg-field:`build-tool-depends` entry.-    In the first case, the entry is desugared into a :pkg-field:`build-tool-depends` entry by prefixing with ``$pkg:``.-    In the second case, it is desugared by looking up the package and executable name in a hard-coded table.-    In either case, the optional version bound is passed through unchanged.-    Refer to the documentation for :pkg-field:`build-tool-depends` to understand the desugared field's meaning, along with restrictions on version bounds.--    .. _buildtoolsbc:--    **Backward Compatibility**--    Although this field is deprecated in favor of :pkg-field:`build-tool-depends`, there are some situations where you may prefer to use :pkg-field:`build-tools` in cases (1) and (2), as it is supported by more versions of Cabal.-    In case (3), :pkg-field:`build-tool-depends` is better for backwards-compatibility, as it will be ignored by old versions of Cabal; if you add the executable to :pkg-field:`build-tools`, a setup script built against old Cabal will choke.-    If an old version of Cabal is used, an end-user will have to manually arrange for the requested executable to be in your ``PATH``.--    .. _buildtoolsmap:--    **Set of Known Tool Names**--    Identifiers specified in :pkg-field:`build-tools` are desugared into their respective equivalent :pkg-field:`build-tool-depends` form according to the table below. Consequently, a legacy specification such as::--        build-tools: alex >= 3.2.1 && < 3.3, happy >= 1.19.5 && < 1.20--    is simply desugared into the equivalent specification::--        build-tool-depends: alex:alex >= 3.2.1 && < 3.3, happy:happy >= 1.19.5 && < 1.20--    +--------------------------+-----------------------------------+-----------------+-    | :pkg-field:`build-tools` | desugared                         | Note            |-    | identifier               | :pkg-field:`build-tool-depends`   |                 |-    |                          | identifier                        |                 |-    +==========================+===================================+=================+-    | ``alex``                 | ``alex:alex``                     |                 |-    +--------------------------+-----------------------------------+-----------------+-    | ``c2hs``                 | ``c2hs:c2hs``                     |                 |-    +--------------------------+-----------------------------------+-----------------+-    | ``cpphs``                | ``cpphs:cpphs``                   |                 |-    +--------------------------+-----------------------------------+-----------------+-    | ``greencard``            | ``greencard:greencard``           |                 |-    +--------------------------+-----------------------------------+-----------------+-    | ``haddock``              | ``haddock:haddock``               |                 |-    +--------------------------+-----------------------------------+-----------------+-    | ``happy``                | ``happy:happy``                   |                 |-    +--------------------------+-----------------------------------+-----------------+-    | ``hsc2hs``               | ``hsc2hs:hsc2hs``                 |                 |-    +--------------------------+-----------------------------------+-----------------+-    | ``hscolour``             | ``hscolour:hscolour``             |                 |-    +--------------------------+-----------------------------------+-----------------+-    | ``hspec-discover``       | ``hspec-discover:hspec-discover`` | since Cabal 2.0 |-    +--------------------------+-----------------------------------+-----------------+--    This built-in set can be programmatically extended via ``Custom`` setup scripts; this, however, is of limited use since the Cabal solver cannot access information injected by ``Custom`` setup scripts.--.. pkg-field:: buildable: boolean--    :default: ``True``--    Is the component buildable? Like some of the other fields below,-    this field is more useful with the slightly more elaborate form of-    the simple build infrastructure described in the section on-    `system-dependent parameters`_.--.. pkg-field:: ghc-options: token list--    Additional options for GHC. You can often achieve the same effect-    using the :pkg-field:`extensions` field, which is preferred.--    Options required only by one module may be specified by placing an-    ``OPTIONS_GHC`` pragma in the source file affected.--    As with many other fields, whitespace can be escaped by using-    Haskell string syntax. Example:-    ``ghc-options: -Wcompat "-with-rtsopts=-T -I1" -Wall``.--.. pkg-field:: ghc-prof-options: token list--    Additional options for GHC when the package is built with profiling-    enabled.--    Note that as of Cabal-1.24, the default profiling detail level-    defaults to ``exported-functions`` for libraries and-    ``toplevel-functions`` for executables. For GHC these correspond to-    the flags ``-fprof-auto-exported`` and ``-fprof-auto-top``. Prior to-    Cabal-1.24 the level defaulted to ``none``. These levels can be-    adjusted by the person building the package with the-    ``--profiling-detail`` and ``--library-profiling-detail`` flags.--    It is typically better for the person building the package to pick-    the profiling detail level rather than for the package author. So-    unless you have special needs it is probably better not to specify-    any of the GHC ``-fprof-auto*`` flags here. However if you wish to-    override the profiling detail level, you can do so using the-    :pkg-field:`ghc-prof-options` field: use ``-fno-prof-auto`` or one of the-    other ``-fprof-auto*`` flags.--.. pkg-field:: ghc-shared-options: token list--    Additional options for GHC when the package is built as shared-    library. The options specified via this field are combined with the-    ones specified via :pkg-field:`ghc-options`, and are passed to GHC during-    both the compile and link phases.--.. pkg-field:: includes: filename list--    A list of header files to be included in any compilations via C.-    This field applies to both header files that are already installed-    on the system and to those coming with the package to be installed.-    The former files should be found in absolute paths, while the latter-    files should be found in paths relative to the top of the source-    tree or relative to one of the directories listed in-    :pkg-field:`include-dirs`.--    These files typically contain function prototypes for foreign-    imports used by the package. This is in contrast to-    :pkg-field:`install-includes`, which lists header files that are intended-    to be exposed to other packages that transitively depend on this-    library.--.. pkg-field:: install-includes: filename list--    A list of header files from this package to be installed into-    ``$libdir/includes`` when the package is installed. Files listed in-    :pkg-field:`install-includes` should be found in relative to the top of the-    source tree or relative to one of the directories listed in-    :pkg-field:`include-dirs`.--    :pkg-field:`install-includes` is typically used to name header files that-    contain prototypes for foreign imports used in Haskell code in this-    package, for which the C implementations are also provided with the-    package. For example, here is a ``.cabal`` file for a hypothetical-    ``bindings-clib`` package that bundles the C source code for ``clib``::--        include-dirs:     cbits-        c-sources:        clib.c-        install-includes: clib.h--    Now any package that depends (directly or transitively) on the-    ``bindings-clib`` library can use ``clib.h``.--    Note that in order for files listed in :pkg-field:`install-includes` to be-    usable when compiling the package itself, they need to be listed in-    the :pkg-field:`includes` field as well.--.. pkg-field:: include-dirs: directory list--    A list of directories to search for header files, when preprocessing-    with ``c2hs``, ``hsc2hs``, ``cpphs`` or the C preprocessor, and also-    when compiling via C. Directories can be absolute paths (e.g., for-    system directories) or paths that are relative to the top of the-    source tree. Cabal looks in these directories when attempting to-    locate files listed in :pkg-field:`includes` and-    :pkg-field:`install-includes`.--.. pkg-field:: c-sources: filename list--    A list of C source files to be compiled and linked with the Haskell-    files.--.. pkg-field:: cxx-sources: filename list-    :since: 2.2--    A list of C++ source files to be compiled and linked with the Haskell-    files. Useful for segregating C and C++ sources when supplying different-    command-line arguments to the compiler via the :pkg-field:`cc-options`-    and the :pkg-field:`cxx-options` fields. The files listed in the-    :pkg-field:`cxx-sources` can reference files listed in the-    :pkg-field:`c-sources` field and vice-versa. The object files will be linked-    appropriately.--.. pkg-field:: asm-sources: filename list-    :since: 3.0--    A list of assembly source files to be compiled and linked with the-    Haskell files.--.. pkg-field:: cmm-sources: filename list-    :since: 3.0--    A list of C-- source files to be compiled and linked with the Haskell-    files.--.. pkg-field:: js-sources: filename list--    A list of JavaScript source files to be linked with the Haskell-    files (only for JavaScript targets).--.. pkg-field:: extra-libraries: token list--    A list of extra libraries to link with.--.. pkg-field:: extra-ghci-libraries: token list--    A list of extra libraries to be used instead of 'extra-libraries'-    when the package is loaded with GHCi.--.. pkg-field:: extra-bundled-libraries: token list-   :since: 2.2--   A list of libraries that are supposed to be copied from the build-   directory alongside the produced Haskell libraries.  Note that you-   are under the obligation to produce those libraries in the build-   directory (e.g. via a custom setup).  Libraries listed here will-   be included when ``copy``-ing packages and be listed in the-   ``hs-libraries`` of the package configuration in the package database.-   Library names must either be prefixed with "HS" or "C" and corresponding-   library file names must match:--      - Libraries with name "HS<library-name>":-         - `libHS<library-name>.a`-         - `libHS<library-name>-ghc<ghc-flavour><ghc-version>.<dyn-library-extension>*`-      - Libraries with name "C<library-name>":-         - `libC<library-name>.a`-         - `lib<library-name>.<dyn-library-extension>*`--.. pkg-field:: extra-lib-dirs: directory list--    A list of directories to search for libraries.--.. pkg-field:: cc-options: token list--    Command-line arguments to be passed to the C compiler. Since the-    arguments are compiler-dependent, this field is more useful with the-    setup described in the section on `system-dependent parameters`_.--.. pkg-field:: cpp-options: token list--    Command-line arguments for pre-processing Haskell code. Applies to-    Haskell source and other pre-processed Haskell source like .hsc-    .chs. Does not apply to C code, that's what cc-options is for.--.. pkg-field:: cxx-options: token list-    :since: 2.2--    Command-line arguments to be passed to the compiler when compiling-    C++ code. The C++ sources to which these command-line arguments-    should be applied can be specified with the :pkg-field:`cxx-sources`-    field. Command-line options for C and C++ can be passed separately to-    the compiler when compiling both C and C++ sources by segregating the C-    and C++ sources with the :pkg-field:`c-sources` and-    :pkg-field:`cxx-sources` fields respectively, and providing different-    command-line arguments with the :pkg-field:`cc-options` and the-    :pkg-field:`cxx-options` fields.--.. pkg-field:: cmm-options: token list-    :since: 3.0--    Command-line arguments to be passed to the compiler when compiling-    C-- code. See also :pkg-field:`cmm-sources`.--.. pkg-field:: asm-options: token list-    :since: 3.0--    Command-line arguments to be passed to the assembler when compiling-    assembler code. See also :pkg-field:`asm-sources`.--.. pkg-field:: ld-options: token list--    Command-line arguments to be passed to the linker. Since the-    arguments are compiler-dependent, this field is more useful with the-    setup described in the section on `system-dependent parameters`_.--.. pkg-field:: pkgconfig-depends: package list--    A list of-    `pkg-config <http://www.freedesktop.org/wiki/Software/pkg-config/>`__-    packages, needed to build this package. They can be annotated with-    versions, e.g. ``gtk+-2.0 >= 2.10, cairo >= 1.0``. If no version-    constraint is specified, any version is assumed to be acceptable.-    Cabal uses ``pkg-config`` to find if the packages are available on-    the system and to find the extra compilation and linker options-    needed to use the packages.--    If you need to bind to a C library that supports ``pkg-config`` then-    it is much preferable to use this field rather than hard code options-    into the other fields. ``pkg-config --list-all`` will show you all-    supported libraries. Depending on your system you may need to adjust-    ``PKG_CONFIG_PATH``.--.. pkg-field:: frameworks: token list--    On Darwin/MacOS X, a list of frameworks to link to. See Apple's-    developer documentation for more details on frameworks. This entry-    is ignored on all other platforms.--.. pkg-field:: extra-frameworks-dirs: directory list-    :since: 1.24--    On Darwin/MacOS X, a list of directories to search for frameworks.-    This entry is ignored on all other platforms.--.. pkg-field:: mixins: mixin list-    :since: 2.0--    Supported only in GHC 8.2 and later. A list of packages mentioned in the-    :pkg-field:`build-depends` field, each optionally accompanied by a list of-    module and module signature renamings.--    The simplest mixin syntax is simply the name of a package mentioned in the-    :pkg-field:`build-depends` field. For example:--    ::--        library-          build-depends:-            foo ^>= 1.2.3-          mixins:-            foo--    But this doesn't have any effect. More interesting is to use the mixin-    entry to rename one or more modules from the package, like this:--    ::--        library-          mixins:-            foo (Foo.Bar as AnotherFoo.Bar, Foo.Baz as AnotherFoo.Baz)--    Note that renaming a module like this will hide all the modules-    that are not explicitly named.--    Modules can also be hidden:--    ::--        library:-          mixins:-            foo hiding (Foo.Bar)--    Hiding modules exposes everything that is not explicitly hidden.--    .. Note::--       The current version of Cabal suffers from an infelicity in how the-       entries of :pkg-field:`mixins` are parsed: an entry will fail to parse-       if the provided renaming clause has whitespace after the opening-       parenthesis. This will be fixed in future versions of Cabal.--       See issues :issue:`5150`, :issue:`4864`, and :issue:`5293`.--    There can be multiple mixin entries for a given package, in effect creating-    multiple copies of the dependency:--    ::--        library-          mixins:-            foo (Foo.Bar as AnotherFoo.Bar, Foo.Baz as AnotherFoo.Baz),-            foo (Foo.Bar as YetAnotherFoo.Bar)--    The ``requires`` clause is used to rename the module signatures required by-    a package:--    ::--        library-          mixins:-            foo (Foo.Bar as AnotherFoo.Bar) requires (Foo.SomeSig as AnotherFoo.SomeSig)--    Signature-only packages don't have any modules, so only the signatures can-    be renamed, with the following syntax:--    ::--        library-          mixins:-            sigonly requires (SigOnly.SomeSig as AnotherSigOnly.SomeSig)--    See the :pkg-field:`library:signatures` field for more details.--    Mixin packages are part of the Backpack_ extension to the-    Haskell module system.--    The matching of the module signatures required by a-    :pkg-field:`build-depends` dependency with the implementation modules-    present in another dependency is triggered by a coincidence of names. When-    the names of the signature and of the implementation are already the same,-    the matching is automatic. But when the names don't coincide, or we want to-    instantiate a signature in two different ways, adding mixin entries that-    perform renamings becomes necessary.--    .. Warning::--       Backpack_ has the limitation that implementation modules that instantiate-       signatures required by a :pkg-field:`build-depends` dependency can't-       reside in the same component that has the dependency. They must reside-       in a different package dependency, or at least in a separate internal-       library.--Configurations-^^^^^^^^^^^^^^--Library and executable sections may include conditional blocks, which-test for various system parameters and configuration flags. The flags-mechanism is rather generic, but most of the time a flag represents-certain feature, that can be switched on or off by the package user.-Here is an example package description file using configurations:--Example: A package containing a library and executable programs-"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""--::--    Name: Test1-    Version: 0.0.1-    Cabal-Version: >= 1.8-    License: BSD3-    Author:  Jane Doe-    Synopsis: Test package to test configurations-    Category: Example-    Build-Type: Simple--    Flag Debug-      Description: Enable debug support-      Default:     False-      Manual:      True--    Flag WebFrontend-      Description: Include API for web frontend.-      Default:     False-      Manual:      True--    Flag NewDirectory-      description: Whether to build against @directory >= 1.2@-      -- This is an automatic flag which the solver will be-      -- assign automatically while searching for a solution--    Library-      Build-Depends:   base >= 4.2 && < 4.9-      Exposed-Modules: Testing.Test1-      Extensions:      CPP--      GHC-Options: -Wall-      if flag(Debug)-        CPP-Options: -DDEBUG-        if !os(windows)-          CC-Options: "-DDEBUG"-        else-          CC-Options: "-DNDEBUG"--      if flag(WebFrontend)-        Build-Depends: cgi >= 0.42 && < 0.44-        Other-Modules: Testing.WebStuff-        CPP-Options: -DWEBFRONTEND--        if flag(NewDirectory)-            build-depends: directory >= 1.2 && < 1.4-            Build-Depends: time >= 1.0 && < 1.9-        else-            build-depends: directory == 1.1.*-            Build-Depends: old-time >= 1.0 && < 1.2--    Executable test1-      Main-is: T1.hs-      Other-Modules: Testing.Test1-      Build-Depends: base >= 4.2 && < 4.9--      if flag(debug)-        CC-Options: "-DDEBUG"-        CPP-Options: -DDEBUG--Layout-""""""--Flags, conditionals, library and executable sections use layout to-indicate structure. This is very similar to the Haskell layout rule.-Entries in a section have to all be indented to the same level which-must be more than the section header. Tabs are not allowed to be used-for indentation.--As an alternative to using layout you can also use explicit braces-``{}``. In this case the indentation of entries in a section does not-matter, though different fields within a block must be on different-lines. Here is a bit of the above example again, using braces:--Example: Using explicit braces rather than indentation for layout-"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""--::--    Name: Test1-    Version: 0.0.1-    Cabal-Version: >= 1.8-    License: BSD3-    Author:  Jane Doe-    Synopsis: Test package to test configurations-    Category: Example-    Build-Type: Simple--    Flag Debug {-      Description: Enable debug support-      Default:     False-      Manual:      True-    }--    Library {-      Build-Depends:   base >= 4.2 && < 4.9-      Exposed-Modules: Testing.Test1-      Extensions:      CPP-      if flag(debug) {-        CPP-Options: -DDEBUG-        if !os(windows) {-          CC-Options: "-DDEBUG"-        } else {-          CC-Options: "-DNDEBUG"-        }-      }-    }--Configuration Flags-"""""""""""""""""""--.. pkg-section:: flag name-    :synopsis: Flag declaration.--    Flag section declares a flag which can be used in `conditional blocks`_.--    Flag names are case-insensitive and must match ``[[:alnum:]_][[:alnum:]_-]*``-    regular expression, or expressed as ABNF_:--    .. code-block:: abnf--       flag-name = (UALNUM / "_") *(UALNUM / "_" / "-")--       UALNUM = UALPHA / DIGIT-       UALPHA = ... ; set of alphabetic Unicode code-points--    .. note::--        Hackage accepts ASCII-only flags, ``[a-zA-Z0-9_][a-zA-Z0-9_-]*`` regexp.--.. pkg-field:: description: freeform--    The description of this flag.--.. pkg-field:: default: boolean--    :default: ``True``--    The default value of this flag.--    .. note::--      This value may be `overridden in several-      ways <installing-packages.html#controlling-flag-assignments>`__. The-      rationale for having flags default to True is that users usually-      want new features as soon as they are available. Flags representing-      features that are not (yet) recommended for most users (such as-      experimental features or debugging support) should therefore-      explicitly override the default to False.--.. pkg-field:: manual: boolean--    :default: ``False``-    :since: 1.6--    By default, Cabal will first try to satisfy dependencies with the-    default flag value and then, if that is not possible, with the-    negated value. However, if the flag is manual, then the default-    value (which can be overridden by commandline flags) will be used.--Conditional Blocks-^^^^^^^^^^^^^^^^^^--Conditional blocks may appear anywhere inside a library or executable-section. They have to follow rather strict formatting rules. Conditional-blocks must always be of the shape--::--      if condition-         property-descriptions-or-conditionals--or--::--      if condition-           property-descriptions-or-conditionals-      else-           property-descriptions-or-conditionals--Note that the ``if`` and the condition have to be all on the same line.--Since Cabal 2.2 conditional blocks support ``elif`` construct.--::--      if condition1-           property-descriptions-or-conditionals-      elif condition2-           property-descriptions-or-conditionals-      else-           property-descriptions-or-conditionals--Conditions-""""""""""--Conditions can be formed using boolean tests and the boolean operators-``||`` (disjunction / logical "or"), ``&&`` (conjunction / logical-"and"), or ``!`` (negation / logical "not"). The unary ``!`` takes-highest precedence, ``||`` takes lowest. Precedence levels may be-overridden through the use of parentheses. For example,-``os(darwin) && !arch(i386) || os(freebsd)`` is equivalent to-``(os(darwin) && !(arch(i386))) || os(freebsd)``.--The following tests are currently supported.--:samp:`os({name})`-    Tests if the current operating system is *name*. The argument is-    tested against ``System.Info.os`` on the target system. There is-    unfortunately some disagreement between Haskell implementations-    about the standard values of ``System.Info.os``. Cabal canonicalises-    it so that in particular ``os(windows)`` works on all-    implementations. If the canonicalised os names match, this test-    evaluates to true, otherwise false. The match is case-insensitive.-:samp:`arch({name})`-    Tests if the current architecture is *name*. The argument is matched-    against ``System.Info.arch`` on the target system. If the arch names-    match, this test evaluates to true, otherwise false. The match is-    case-insensitive.-:samp:`impl({compiler})`-    Tests for the configured Haskell implementation. An optional version-    constraint may be specified (for example ``impl(ghc >= 6.6.1)``). If-    the configured implementation is of the right type and matches the-    version constraint, then this evaluates to true, otherwise false.-    The match is case-insensitive.--    Note that including a version constraint in an ``impl`` test causes-    it to check for two properties:--    -  The current compiler has the specified name, and--    -  The compiler's version satisfied the specified version constraint--    As a result, ``!impl(ghc >= x.y.z)`` is not entirely equivalent to-    ``impl(ghc < x.y.z)``. The test ``!impl(ghc >= x.y.z)`` checks that:--    -  The current compiler is not GHC, or--    -  The version of GHC is earlier than version x.y.z.--:samp:`flag({name})`-    Evaluates to the current assignment of the flag of the given name.-    Flag names are case insensitive. Testing for flags that have not-    been introduced with a flag section is an error.-``true``-    Constant value true.-``false``-    Constant value false.--Resolution of Conditions and Flags-""""""""""""""""""""""""""""""""""--If a package descriptions specifies configuration flags the package user-can `control these in several-ways <installing-packages.html#controlling-flag-assignments>`__. If the-user does not fix the value of a flag, Cabal will try to find a flag-assignment in the following way.---  For each flag specified, it will assign its default value, evaluate-   all conditions with this flag assignment, and check if all-   dependencies can be satisfied. If this check succeeded, the package-   will be configured with those flag assignments.---  If dependencies were missing, the last flag (as by the order in which-   the flags were introduced in the package description) is tried with-   its alternative value and so on. This continues until either an-   assignment is found where all dependencies can be satisfied, or all-   possible flag assignments have been tried.--To put it another way, Cabal does a complete backtracking search to find-a satisfiable package configuration. It is only the dependencies-specified in the :pkg-field:`build-depends` field in conditional blocks that-determine if a particular flag assignment is satisfiable-(:pkg-field:`build-tools` are not considered). The order of the declaration and-the default value of the flags determines the search order. Flags-overridden on the command line fix the assignment of that flag, so no-backtracking will be tried for that flag.--If no suitable flag assignment could be found, the configuration phase-will fail and a list of missing dependencies will be printed. Note that-this resolution process is exponential in the worst case (i.e., in the-case where dependencies cannot be satisfied). There are some-optimizations applied internally, but the overall complexity remains-unchanged.--Meaning of field values when using conditionals-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--During the configuration phase, a flag assignment is chosen, all-conditionals are evaluated, and the package description is combined into-a flat package descriptions. If the same field both inside a conditional-and outside then they are combined using the following rules.---  Boolean fields are combined using conjunction (logical "and").---  List fields are combined by appending the inner items to the outer-   items, for example--   ::--       other-extensions: CPP-       if impl(ghc)-         other-extensions: MultiParamTypeClasses--   when compiled using GHC will be combined to--   ::--       other-extensions: CPP, MultiParamTypeClasses--   Similarly, if two conditional sections appear at the same nesting-   level, properties specified in the latter will come after properties-   specified in the former.---  All other fields must not be specified in ambiguous ways. For example--   ::--       Main-is: Main.hs-       if flag(useothermain)-         Main-is: OtherMain.hs--   will lead to an error. Instead use--   ::--       if flag(useothermain)-         Main-is: OtherMain.hs-       else-         Main-is: Main.hs--Common stanzas-^^^^^^^^^^^^^^--.. pkg-section:: common name-    :since: 2.2-    :synopsis: Common build info section--Starting with Cabal-2.2 it's possible to use common build info stanzas.--::--      common deps-        build-depends: base ^>= 4.11-        ghc-options: -Wall--      common test-deps-        build-depends: tasty ^>= 0.12.0.1--      library-        import: deps-        exposed-modules: Foo--      test-suite tests-        import: deps, test-deps-        type: exitcode-stdio-1.0-        main-is: Tests.hs-        build-depends: foo---  You can use `build information`_ fields in common stanzas.---  Common stanzas must be defined before use.---  Common stanzas can import other common stanzas.---  You can import multiple stanzas at once. Stanza names must be separated by commas.---  ``import`` must be the first field in a section. Since Cabal 3.0 imports-   are also allowed inside conditionals.--.. Note::--    The name `import` was chosen, because there is ``includes`` field.--Source Repositories-^^^^^^^^^^^^^^^^^^^--.. pkg-section:: source-repository-    :since: 1.6--It is often useful to be able to specify a source revision control-repository for a package. Cabal lets you specifying this information in-a relatively structured form which enables other tools to interpret and-make effective use of the information. For example the information-should be sufficient for an automatic tool to checkout the sources.--Cabal supports specifying different information for various common-source control systems. Obviously not all automated tools will support-all source control systems.--Cabal supports specifying repositories for different use cases. By-declaring which case we mean automated tools can be more useful. There-are currently two kinds defined:---  The ``head`` kind refers to the latest development branch of the-   package. This may be used for example to track activity of a project-   or as an indication to outside developers what sources to get for-   making new contributions.---  The ``this`` kind refers to the branch and tag of a repository that-   contains the sources for this version or release of a package. For-   most source control systems this involves specifying a tag, id or-   hash of some form and perhaps a branch. The purpose is to be able to-   reconstruct the sources corresponding to a particular package-   version. This might be used to indicate what sources to get if-   someone needs to fix a bug in an older branch that is no longer an-   active head branch.--You can specify one kind or the other or both. As an example here are-the repositories for the Cabal library. Note that the ``this`` kind of-repository specifies a tag.--::--    source-repository head-      type:     darcs-      location: http://darcs.haskell.org/cabal/--    source-repository this-      type:     darcs-      location: http://darcs.haskell.org/cabal-branches/cabal-1.6/-      tag:      1.6.1--The exact fields are as follows:--.. pkg-field:: type: token--    The name of the source control system used for this repository. The-    currently recognised types are:--    -  ``darcs``-    -  ``git``-    -  ``svn``-    -  ``cvs``-    -  ``mercurial`` (or alias ``hg``)-    -  ``bazaar`` (or alias ``bzr``)-    -  ``arch``-    -  ``monotone``--    This field is required.--.. pkg-field:: location: URL--    The location of the repository. The exact form of this field depends-    on the repository type. For example:--    -  for darcs: ``http://code.haskell.org/foo/``-    -  for git: ``git://github.com/foo/bar.git``-    -  for CVS: ``anoncvs@cvs.foo.org:/cvs``--    This field is required.--.. pkg-field:: module: token--    CVS requires a named module, as each CVS server can host multiple-    named repositories.--    This field is required for the CVS repository type and should not be-    used otherwise.--.. pkg-field:: branch: token--    Many source control systems support the notion of a branch, as a-    distinct concept from having repositories in separate locations. For-    example CVS, SVN and git use branches while for darcs uses different-    locations for different branches. If you need to specify a branch to-    identify a your repository then specify it in this field.--    This field is optional.--.. pkg-field:: tag: token--    A tag identifies a particular state of a source repository. The tag-    can be used with a ``this`` repository kind to identify the state of-    a repository corresponding to a particular package version or-    release. The exact form of the tag depends on the repository type.--    This field is required for the ``this`` repository kind.--.. pkg-field:: subdir: directory--    Some projects put the sources for multiple packages under a single-    source repository. This field lets you specify the relative path-    from the root of the repository to the top directory for the-    package, i.e. the directory containing the package's ``.cabal``-    file.--    This field is optional. It default to empty which corresponds to the-    root directory of the repository.--Downloading a package's source-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--The ``cabal get`` command allows to access a package's source code --either by unpacking a tarball downloaded from Hackage (the default) or-by checking out a working copy from the package's source repository.--::--    $ cabal get [FLAGS] PACKAGES--The ``get`` command supports the following options:--``-d --destdir`` *PATH*-    Where to place the package source, defaults to (a subdirectory of)-    the current directory.-``-s --source-repository`` *[head\|this\|...]*-    Fork the package's source repository using the appropriate version-    control system. The optional argument allows to choose a specific-    repository kind.-``--index-state`` *[HEAD\|@<unix-timestamp>\|<iso8601-utc-timestamp>]*-    Use source package index state as it existed at a previous time. Accepts-    unix-timestamps (e.g. ``@1474732068``), ISO8601 UTC timestamps (e.g.-    ``2016-09-24T17:47:48Z``), or ``HEAD`` (default).-    This determines which package versions are available as well as which-    ``.cabal`` file revision is selected (unless ``--pristine`` is used).-``--pristine``-    Unpack the original pristine tarball, rather than updating the-    ``.cabal`` file with the latest revision from the package archive.--Custom setup scripts-----------------------Since Cabal 1.24, custom ``Setup.hs`` are required to accurately track-their dependencies by declaring them in the ``.cabal`` file rather than-rely on dependencies being implicitly in scope.  Please refer-`this article <https://www.well-typed.com/blog/2015/07/cabal-setup-deps/>`__-for more details.--As of Cabal library version 3.0, ``defaultMain*`` variants implement support-for response files. Custom ``Setup.hs`` files that do not use one of these-main functions are required to implement their own support, such as by using-``GHC.ResponseFile.getArgsWithResponseFiles``.--Declaring a ``custom-setup`` stanza also enables the generation of-``MIN_VERSION_package_(A,B,C)`` CPP macros for the Setup component.--.. pkg-section:: custom-setup-   :synopsis: Custom Setup.hs build information.-   :since: 1.24--   The optional :pkg-section:`custom-setup` stanza contains information needed-   for the compilation of custom ``Setup.hs`` scripts,--::--    custom-setup-      setup-depends:-        base  >= 4.5 && < 4.11,-        Cabal >= 1.14 && < 1.25--.. pkg-field:: setup-depends: package list-    :since: 1.24--    The dependencies needed to compile ``Setup.hs``. See the-    :pkg-field:`build-depends` field for a description of the syntax expected by-    this field.--Backward compatibility and ``custom-setup``-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--Versions prior to Cabal 1.24 don't recognise ``custom-setup`` stanzas,-and will behave agnostic to them (except for warning about an unknown-section). Consequently, versions prior to Cabal 1.24 can't ensure the-declared dependencies ``setup-depends`` are in scope, and instead-whatever is registered in the current package database environment-will become eligible (and resolved by the compiler) for the-``Setup.hs`` module.--The availability of the-``MIN_VERSION_package_(A,B,C)`` CPP macros-inside ``Setup.hs`` scripts depends on the condition that either--- a ``custom-setup`` section has been declared (or ``cabal v2-build`` is being-  used which injects an implicit hard-coded ``custom-setup`` stanza if it's missing), or-- GHC 8.0 or later is used (which natively injects package version CPP macros)--Consequently, if you need to write backward compatible ``Setup.hs``-scripts using CPP, you should declare a ``custom-setup`` stanza and-use the pattern below:--.. code-block:: haskell--    {-# LANGUAGE CPP #-}-    import Distribution.Simple--    #if defined(MIN_VERSION_Cabal)-    -- version macros are available and can be used as usual-    # if MIN_VERSION_Cabal(a,b,c)-    -- code specific to lib:Cabal >= a.b.c-    # else-    -- code specific to lib:Cabal < a.b.c-    # endif-    #else-    # warning Enabling heuristic fall-back. Please upgrade cabal-install to 1.24 or later if Setup.hs fails to compile.--    -- package version macros not available; except for exotic environments,-    -- you can heuristically assume that lib:Cabal's version is correlated-    -- with __GLASGOW_HASKELL__, and specifically since we can assume that-    -- GHC < 8.0, we can assume that lib:Cabal is version 1.22 or older.-    #endif--    main = ...--The simplified (heuristic) CPP pattern shown below is useful if all you need-is to distinguish ``Cabal < 2.0`` from ``Cabal >= 2.0``.--.. code-block:: haskell--    {-# LANGUAGE CPP #-}-    import Distribution.Simple--    #if !defined(MIN_VERSION_Cabal)-    # define MIN_VERSION_Cabal(a,b,c) 0-    #endif--    #if MIN_VERSION_Cabal(2,0,0)-    -- code for lib:Cabal >= 2.0-    #else-    -- code for lib:Cabal < 2.0-    #endif--    main = ...----Autogenerated modules and includes-------------------------------------Modules that are built automatically at setup, created with a custom-setup script, must appear on :pkg-field:`other-modules` for the library,-executable, test-suite or benchmark stanzas or also on-:pkg-field:`library:exposed-modules` for libraries to be used, but are not-really on the package when distributed. This makes commands like sdist fail-because the file is not found.--These special modules must appear again on the :pkg-field:`autogen-modules`-field of the stanza that is using it, besides :pkg-field:`other-modules` or-:pkg-field:`library:exposed-modules`. With this there is no need to create-complex build hooks for this poweruser case.--.. pkg-field:: autogen-modules: module list-   :since: 2.0--   .. todo:: document autogen-modules field--Right now :pkg-field:`executable:main-is` modules are not supported on-:pkg-field:`autogen-modules`.--::--    Library-        default-language: Haskell2010-        build-depends: base-        exposed-modules:-            MyLibrary-            MyLibHelperModule-        other-modules:-            MyLibModule-        autogen-modules:-            MyLibHelperModule--    Executable Exe-        default-language: Haskell2010-        main-is: Dummy.hs-        build-depends: base-        other-modules:-            MyExeModule-            MyExeHelperModule-        autogen-modules:-            MyExeHelperModule--.. pkg-field:: autogen-includes: filename list-   :since: 3.0--   A list of header files from this package which are autogenerated-   (e.g. by a ``configure`` script). Autogenerated header files are not-   packaged by ``sdist`` command.--Accessing data files from package code-----------------------------------------The placement on the target system of files listed in-the :pkg-field:`data-files` field varies between systems, and in some cases-one can even move packages around after installation (see `prefix-independence <installing-packages.html#prefix-independence>`__). To-enable packages to find these files in a portable way, Cabal generates a-module called :file:`Paths_{pkgname}` (with any hyphens in *pkgname*-replaced by underscores) during building, so that it may be imported by-modules of the package. This module defines a function--.. code-block:: haskell--    getDataFileName :: FilePath -> IO FilePath--If the argument is a filename listed in the :pkg-field:`data-files` field, the-result is the name of the corresponding file on the system on which the-program is running.--.. Note::--   If you decide to import the :file:`Paths_{pkgname}` module then it-   *must* be listed in the :pkg-field:`other-modules` field just like any other-   module in your package and on :pkg-field:`autogen-modules` as the file is-   autogenerated.--The :file:`Paths_{pkgname}` module is not platform independent, as any-other autogenerated module, so it does not get included in the source-tarballs generated by ``sdist``.--The :file:`Paths_{pkgname}` module also includes some other useful-functions and values, which record the version of the package and some-other directories which the package has been configured to be installed-into (e.g. data files live in ``getDataDir``):--.. code-block:: haskell--    version :: Version--    getBinDir :: IO FilePath-    getLibDir :: IO FilePath-    getDynLibDir :: IO FilePath-    getDataDir :: IO FilePath-    getLibexecDir :: IO FilePath-    getSysconfDir :: IO FilePath--The actual location of all these directories can be individually-overridden at runtime using environment variables of the form-``pkg_name_var``, where ``pkg_name`` is the name of the package with all-hyphens converted into underscores, and ``var`` is either ``bindir``,-``libdir``, ``dynlibdir``, ``datadir``, ``libexedir`` or ``sysconfdir``. For example,-the configured data directory for ``pretty-show`` is controlled with the-``pretty_show_datadir`` environment variable.--Accessing the package version-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--The aforementioned auto generated :file:`Paths_{pkgname}` module also-exports the constant ``version ::``-`Version <http://hackage.haskell.org/package/base/docs/Data-Version.html>`__-which is defined as the version of your package as specified in the-``version`` field.--System-dependent parameters------------------------------For some packages, especially those interfacing with C libraries,-implementation details and the build procedure depend on the build-environment. The ``build-type`` ``Configure`` can be used to handle many-such situations. In this case, ``Setup.hs`` should be:--.. code-block:: haskell--    import Distribution.Simple-    main = defaultMainWithHooks autoconfUserHooks--Most packages, however, would probably do better using the ``Simple``-build type and `configurations`_.--The :pkg-field:`build-type` ``Configure`` differs from ``Simple`` in two ways:---  The package root directory must contain a shell script called-   ``configure``. The configure step will run the script. This-   ``configure`` script may be produced by-   `autoconf <http://www.gnu.org/software/autoconf/>`__ or may be-   hand-written. The ``configure`` script typically discovers-   information about the system and records it for later steps, e.g. by-   generating system-dependent header files for inclusion in C source-   files and preprocessed Haskell source files. (Clearly this won't work-   for Windows without MSYS or Cygwin: other ideas are needed.)---  If the package root directory contains a file called-   *package*\ ``.buildinfo`` after the configuration step, subsequent-   steps will read it to obtain additional settings for `build-   information`_ fields,to be merged with the ones-   given in the ``.cabal`` file. In particular, this file may be-   generated by the ``configure`` script mentioned above, allowing these-   settings to vary depending on the build environment.--The build information file should have the following structure:--    *buildinfo*--    ``executable:`` *name* *buildinfo*--    ``executable:`` *name* *buildinfo* ...--where each *buildinfo* consists of settings of fields listed in the-section on `build information`_. The first one (if-present) relates to the library, while each of the others relate to the-named executable. (The names must match the package description, but you-don't have to have entries for all of them.)--Neither of these files is required. If they are absent, this setup-script is equivalent to ``defaultMain``.--Example: Using autoconf-^^^^^^^^^^^^^^^^^^^^^^^--This example is for people familiar with the-`autoconf <http://www.gnu.org/software/autoconf/>`__ tools.--In the X11 package, the file ``configure.ac`` contains:--.. code-block:: shell--    AC_INIT([Haskell X11 package], [1.1], [libraries@haskell.org], [X11])--    # Safety check: Ensure that we are in the correct source directory.-    AC_CONFIG_SRCDIR([X11.cabal])--    # Header file to place defines in-    AC_CONFIG_HEADERS([include/HsX11Config.h])--    # Check for X11 include paths and libraries-    AC_PATH_XTRA-    AC_TRY_CPP([#include <X11/Xlib.h>],,[no_x=yes])--    # Build the package if we found X11 stuff-    if test "$no_x" = yes-    then BUILD_PACKAGE_BOOL=False-    else BUILD_PACKAGE_BOOL=True-    fi-    AC_SUBST([BUILD_PACKAGE_BOOL])--    AC_CONFIG_FILES([X11.buildinfo])-    AC_OUTPUT--Then the setup script will run the ``configure`` script, which checks-for the presence of the X11 libraries and substitutes for variables in-the file ``X11.buildinfo.in``:--::--    buildable: @BUILD_PACKAGE_BOOL@-    cc-options: @X_CFLAGS@-    ld-options: @X_LIBS@--This generates a file ``X11.buildinfo`` supplying the parameters needed-by later stages:--::--    buildable: True-    cc-options:  -I/usr/X11R6/include-    ld-options:  -L/usr/X11R6/lib--The ``configure`` script also generates a header file-``include/HsX11Config.h`` containing C preprocessor defines recording-the results of various tests. This file may be included by C source-files and preprocessed Haskell source files in the package.--.. Note::--   Packages using these features will also need to list additional-   files such as ``configure``, templates for ``.buildinfo`` files, files-   named only in ``.buildinfo`` files, header files and so on in the-   :pkg-field:`extra-source-files` field to ensure that they are included in-   source distributions. They should also list files and directories generated-   by ``configure`` in the :pkg-field:`extra-tmp-files` field to ensure that-   they are removed by ``setup clean``.--Quite often the files generated by ``configure`` need to be listed-somewhere in the package description (for example, in the-:pkg-field:`install-includes` field). However, we usually don't want generated-files to be included in the source tarball. The solution is again-provided by the ``.buildinfo`` file. In the above example, the following-line should be added to ``X11.buildinfo``:--::--    install-includes: HsX11Config.h--In this way, the generated ``HsX11Config.h`` file won't be included in-the source tarball in addition to ``HsX11Config.h.in``, but it will be-copied to the right location during the install process. Packages that-use custom ``Setup.hs`` scripts can update the necessary fields-programmatically instead of using the ``.buildinfo`` file.--Conditional compilation--------------------------Sometimes you want to write code that works with more than one version-of a dependency. You can specify a range of versions for the dependency-in the :pkg-field:`build-depends`, but how do you then write the code that can-use different versions of the API?--Haskell lets you preprocess your code using the C preprocessor (either-the real C preprocessor, or ``cpphs``). To enable this, add-``extensions: CPP`` to your package description. When using CPP, Cabal-provides some pre-defined macros to let you test the version of-dependent packages; for example, suppose your package works with either-version 3 or version 4 of the ``base`` package, you could select the-available version in your Haskell modules like this:--.. code-block:: cpp--    #if MIN_VERSION_base(4,0,0)-    ... code that works with base-4 ...-    #else-    ... code that works with base-3 ...-    #endif--In general, Cabal supplies a macro-``MIN_VERSION_``\ *``package``*\ ``_(A,B,C)`` for each package depended-on via :pkg-field:`build-depends`. This macro is true if the actual version of-the package in use is greater than or equal to ``A.B.C`` (using the-conventional ordering on version numbers, which is lexicographic on the-sequence, but numeric on each component, so for example 1.2.0 is greater-than 1.0.3).--Since version 1.20, the ``MIN_TOOL_VERSION_``\ *``tool``*-family of macros lets you condition on the version of build tools used to-build the program (e.g. ``hsc2hs``).--Since version 1.24, the macro ``CURRENT_COMPONENT_ID``, which-expands to the string of the component identifier that uniquely-identifies this component.  Furthermore, if the package is a library,-the macro ``CURRENT_PACKAGE_KEY`` records the identifier that was passed-to GHC for use in symbols and for type equality.--Since version 2.0, the macro ``CURRENT_PACKAGE_VERSION`` expands-to the string version number of the current package.--Cabal places the definitions of these macros into an-automatically-generated header file, which is included when-preprocessing Haskell source code by passing options to the C-preprocessor.--Cabal also allows to detect when the source code is being used for-generating documentation. The ``__HADDOCK_VERSION__`` macro is defined-only when compiling via Haddock_-instead of a normal Haskell compiler. The value of the-``__HADDOCK_VERSION__`` macro is defined as ``A*1000 + B*10 + C``, where-``A.B.C`` is the Haddock version. This can be useful for working around-bugs in Haddock or generating prettier documentation in some special-cases.--More complex packages------------------------For packages that don't fit the simple schemes described above, you have-a few options:---  By using the :pkg-field:`build-type` ``Custom``, you can supply your own-   ``Setup.hs`` file, and customize the simple build infrastructure-   using *hooks*. These allow you to perform additional actions before-   and after each command is run, and also to specify additional-   preprocessors. A typical ``Setup.hs`` may look like this:--   .. code-block:: haskell--       import Distribution.Simple-       main = defaultMainWithHooks simpleUserHooks { postHaddock = posthaddock }--       posthaddock args flags desc info = ....--   See ``UserHooks`` in-   `Distribution.Simple <../release/cabal-latest/doc/API/Cabal/Distribution-Simple.html>`__-   for the details, but note that this interface is experimental, and-   likely to change in future releases.--   If you use a custom ``Setup.hs`` file you should strongly consider-   adding a :pkg-section:`custom-setup` stanza with a-   :pkg-field:`custom-setup:setup-depends` field to ensure that your setup-   script does not break with future dependency versions.---  You could delegate all the work to ``make``, though this is unlikely-   to be very portable. Cabal supports this with the :pkg-field:`build-type`-   ``Make`` and a trivial setup library-   `Distribution.Make <../release/cabal-latest/doc/API/Cabal/Distribution-Make.html>`__,-   which simply parses the command line arguments and invokes ``make``.-   Here ``Setup.hs`` should look like this:--   .. code-block:: haskell--       import Distribution.Make-       main = defaultMain--   The root directory of the package should contain a ``configure``-   script, and, after that has run, a ``Makefile`` with a default target-   that builds the package, plus targets ``install``, ``register``,-   ``unregister``, ``clean``, ``dist`` and ``docs``. Some options to-   commands are passed through as follows:--   -  The ``--with-hc-pkg``, ``--prefix``, ``--bindir``, ``--libdir``,-      ``--dynlibdir``, ``--datadir``, ``--libexecdir`` and ``--sysconfdir`` options to-      the ``configure`` command are passed on to the ``configure``-      script. In addition the value of the ``--with-compiler`` option is-      passed in a ``--with-hc`` option and all options specified with-      ``--configure-option=`` are passed on.--   -  The ``--destdir`` option to the ``copy`` command becomes a setting-      of a ``destdir`` variable on the invocation of ``make copy``. The-      supplied ``Makefile`` should provide a ``copy`` target, which will-      probably look like this:--      .. code-block:: make--          copy :-                  $(MAKE) install prefix=$(destdir)/$(prefix) \-                                  bindir=$(destdir)/$(bindir) \-                                  libdir=$(destdir)/$(libdir) \-                                  dynlibdir=$(destdir)/$(dynlibdir) \-                                  datadir=$(destdir)/$(datadir) \-                                  libexecdir=$(destdir)/$(libexecdir) \-                                  sysconfdir=$(destdir)/$(sysconfdir) \---  Finally, with the :pkg-field:`build-type` ``Custom``, you can also write your-   own setup script from scratch. It must conform to the interface-   described in the section on `building and installing-   packages <installing-packages.html>`__, and you may use the Cabal-   library for all or part of the work. One option is to copy the source-   of ``Distribution.Simple``, and alter it for your needs. Good luck.---.. include:: references.inc--.. rubric:: Footnotes--.. [#old-style-build-tool-depends]--  Some packages (ab)use :pkg-field:`build-depends` on old-style builds, but this has a few major drawbacks:--    - using Nix-style builds it's considered an error if you depend on a exe-only package via build-depends: the solver will refuse it.-    - it may or may not place the executable on ``$PATH``.-    - it does not ensure the correct version of the package is installed, so you might end up overwriting versions with each other.+.. TIP::+    If this is your first time using `cabal` you should check out the `Getting Started guide <getting-started.html>`__.++Let's assume we have created a project directory and already have a+Haskell module or two.++Every project needs a name, we'll call this example "proglet".++.. highlight:: console++::++    $ cd proglet/+    $ ls+    Proglet.hs++It is assumed that (apart from external dependencies) all the files that+make up a package live under a common project root directory. This+simple example has all the project files in one directory, but most+packages will use one or more subdirectories.++To turn this into a Cabal package we need two extra files in the+project's root directory:++-  ``proglet.cabal``: containing package metadata and build information.++-  ``Setup.hs``: usually containing a few standardized lines of code,+   but can be customized if necessary.++We can create both files manually or we can use ``cabal init`` to create+them for us.++Using "cabal init"+------------------++The ``cabal init --interactive`` command is interactive. If we answer+"no" to using the "sensible defaults" it asks a number of questions.++::++    $ cabal init --interactive+    Should I generate a simple project with sensible defaults? [default: y] n+    What does the package build:+       1) Executable+       2) Library+       3) Library and Executable+    Your choice?+    ...++One of the important questions is whether the package contains a library+and/or an executable. Libraries are collections of Haskell modules that+can be re-used by other Haskell libraries and programs, while executables+are standalone programs.++For the moment these are the only choices. For more complex packages+(e.g. a library and multiple executables or test suites) the ``.cabal``+file can be edited afterwards.++After you make your selection (executable; library; or: library+and executable) cabal asks us a number of questions starting with+which version of the cabal specification to use, our package's name+(for example, "proglet"), and our package's version.++It also asks questions about various other bits of package metadata. For+a package that you never intend to distribute to others, these fields+can be left blank.++Finally, ``cabal init --interactive`` creates the initial ``proglet.cabal``+and ``Setup.hs`` files, and depending on your choice of license, a+``LICENSE`` file as well.++::++    Generating LICENSE...+    Generating Setup.hs...+    Generating proglet.cabal...++    You may want to edit the .cabal file and add a Description field.++At this stage the ``proglet.cabal`` is not quite complete and before you+are able to build the package you will need to edit the file and add+some build information about the library or executable.++Editing the .cabal file+-----------------------++.. highlight:: cabal++Load up the ``.cabal`` file in a text editor. The first part of the+``.cabal`` file has the package metadata and towards the end of the file+you will find the :pkg-section:`executable` or :pkg-section:`library` section.++You will see that the fields that have yet to be filled in are commented+out. Cabal files use "``--``" Haskell-style comment syntax. (Note that+comments are only allowed on lines on their own. Trailing comments on+other lines are not allowed because they could be confused with program+options.)++If you selected earlier to create a library package then your ``.cabal``+file will have a section that looks like this:++::++    library+      exposed-modules:     Proglet+      -- other-modules:+      -- build-depends:++Alternatively, if you selected an executable then there will be a+section like:++::++    executable proglet+      -- main-is:+      -- other-modules:+      -- build-depends:++The build information fields listed (but commented out) are just the few+most important and common fields. There are many others that are covered+later in this chapter.++Most of the build information fields are the same between libraries and+executables. The difference is that libraries have a number of "exposed"+modules that make up the public interface of the library, while+executables have a file containing a ``Main`` module.++The name of a library always matches the name of the package, so it is+not specified in the library section. Executables often follow the name+of the package too, but this is not required and the name is given+explicitly.++Modules included in the package+-------------------------------++For a library, ``cabal init`` looks in the project directory for files+that look like Haskell modules and adds all the modules to the+:pkg-field:`library:exposed-modules` field. For modules that do not form part+of your package's public interface, you can move those modules to the+:pkg-field:`other-modules` field. Either way, all modules in the library need+to be listed.++For an executable, ``cabal init`` does not try to guess which file+contains your program's ``Main`` module. You will need to fill in the+:pkg-field:`executable:main-is` field with the file name of your program's+``Main`` module (including ``.hs`` or ``.lhs`` extension). Other modules+included in the executable should be listed in the :pkg-field:`other-modules`+field.++Modules imported from other packages+------------------------------------++While your library or executable may include a number of modules, it+almost certainly also imports a number of external modules from the+standard libraries or other pre-packaged libraries. (These other+libraries are of course just Cabal packages that contain a library.)++You have to list all of the library packages that your library or+executable imports modules from. Or to put it another way: you have to+list all the other packages that your package depends on.++For example, suppose the example ``Proglet`` module imports the module+``Data.Map``. The ``Data.Map`` module comes from the ``containers``+package, so we must list it:++::++    library+      exposed-modules:     Proglet+      other-modules:+      build-depends:       containers, base == 4.*++In addition, almost every package also depends on the ``base`` library+package because it exports the standard ``Prelude`` module plus other+basic modules like ``Data.List``.++You will notice that we have listed ``base == 4.*``. This gives a+constraint on the version of the base package that our package will work+with. The most common kinds of constraints are:++-  ``pkgname >= n``+-  ``pkgname ^>= n`` (since Cabal 2.0)+-  ``pkgname >= n && < m``+-  ``pkgname == n.*`` (since Cabal 1.6)++The last is just shorthand, for example ``base == 4.*`` means exactly+the same thing as ``base >= 4 && < 5``. Please refer to the documentation+on the :pkg-field:`build-depends` field for more information.++Also, you can factor out shared ``build-depends`` (and other fields such+as ``ghc-options``) into a ``common`` stanza which you can ``import`` in+your libraries and executable sections. For example:++::++    common shared-properties+      default-language: Haskell2010+      build-depends:+        base == 4.*+      ghc-options:+        -Wall++    library+      import: shared-properties+      exposed-modules:+        Proglet++Note that the ``import`` **must** be the first thing in the stanza. For more+information see the :ref:`common-stanzas` section.++Building the package+--------------------++For simple packages that's it! We can now try configuring and building+the package:++.. code-block:: console++    $ cabal configure+    $ cabal build++Assuming those two steps worked then you can also install the package:++.. code-block:: console++    $ cabal install++For libraries this makes them available for use in GHCi or to be used by+other packages. For executables it installs the program so that you can+run it (though you may first need to adjust your system's ``$PATH``).++Next steps+----------++What we have covered so far should be enough for very simple packages+that you use on your own system.++The next few sections cover more details needed for more complex+packages and details needed for distributing packages to other people.++The previous chapter covers building and installing packages -- your own+packages or ones developed by other people.++Package concepts+================++Before diving into the details of writing packages it helps to+understand a bit about packages in the Haskell world and the particular+approach that Cabal takes.++The point of packages+---------------------++Packages are a mechanism for organising and distributing code. Packages+are particularly suited for "programming in the large", that is building+big systems by using and re-using code written by different people at+different times.++People organise code into packages based on functionality and+dependencies. Social factors are also important: most packages have a+single author, or a relatively small team of authors.++Packages are also used for distribution: the idea is that a package can+be created in one place and be moved to a different computer and be+usable in that different environment. There are a surprising number of+details that have to be got right for this to work, and a good package+system helps to simplify this process and make it reliable.++Packages come in two main flavours: libraries of reusable code, and+complete programs. Libraries present a code interface, an API, while+programs can be run directly. In the Haskell world, library packages+expose a set of Haskell modules as their public interface. Cabal+packages can contain a library or executables or both.++Some programming languages have packages as a builtin language concept.+For example in Java, a package provides a local namespace for types and+other definitions. In the Haskell world, packages are not a part of the+language itself. Haskell programs consist of a number of modules, and+packages just provide a way to partition the modules into sets of+related functionality. Thus the choice of module names in Haskell is+still important, even when using packages.++Package names and versions+--------------------------++All packages have a name, e.g. "HUnit". Package names are assumed to be+unique. Cabal package names may contain letters, numbers and hyphens,+but not spaces and may also not contain a hyphened section consisting of+only numbers. The namespace for Cabal packages is flat, not+hierarchical.++Packages also have a version, e.g "1.1". This matches the typical way in+which packages are developed. Strictly speaking, each version of a+package is independent, but usually they are very similar. Cabal package+versions follow the conventional numeric style, consisting of a sequence+of digits such as "1.0.1" or "2.0". There are a range of common+conventions for "versioning" packages, that is giving some meaning to+the version number in terms of changes in the package, such as+e.g. `SemVer <http://semver.org>`__; however, for packages intended to be+distributed via Hackage Haskell's `Package Versioning Policy <https://pvp.haskell.org/>`_ applies+(see also the `PVP/SemVer FAQ section <https://pvp.haskell.org/faq/#semver>`__).++The combination of package name and version is called the *package ID*+and is written with a hyphen to separate the name and version, e.g.+"HUnit-1.1".++For Cabal packages, the combination of the package name and version+*uniquely* identifies each package. Or to put it another way: two+packages with the same name and version are considered to *be* the same.++Strictly speaking, the package ID only identifies each Cabal *source*+package; the same Cabal source package can be configured and built in+different ways. There is a separate installed package ID that uniquely+identifies each installed package instance. Most of the time however,+users need not be aware of this detail.++Kinds of package: Cabal vs GHC vs system+----------------------------------------++It can be slightly confusing at first because there are various+different notions of package floating around. Fortunately the details+are not very complicated.++Cabal packages+    Cabal packages are really source packages. That is they contain+    Haskell (and sometimes C) source code.++    Cabal packages can be compiled to produce GHC packages. They can+    also be translated into operating system packages.++GHC packages+    This is GHC's view on packages. GHC only cares about library+    packages, not executables. Library packages have to be registered+    with GHC for them to be available in GHCi or to be used when+    compiling other programs or packages.++    The low-level tool ``ghc-pkg`` is used to register GHC packages and+    to get information on what packages are currently registered.++    You never need to make GHC packages manually. When you build and+    install a Cabal package containing a library then it gets registered+    with GHC automatically.++    Haskell implementations other than GHC have essentially the same+    concept of registered packages. For the most part, Cabal hides the+    slight differences.++Operating system packages+    On operating systems like Linux and Mac OS X, the system has a+    specific notion of a package and there are tools for installing and+    managing packages.++    The Cabal package format is designed to allow Cabal packages to be+    translated, mostly-automatically, into operating system packages.+    They are usually translated 1:1, that is a single Cabal package+    becomes a single system package.++    It is also possible to make Windows installers from Cabal packages,+    though this is typically done for a program together with all of its+    library dependencies, rather than packaging each library separately.++Unit of distribution+--------------------++The Cabal package is the unit of distribution. What this means is that+each Cabal package can be distributed on its own in source or binary+form. Of course there may be dependencies between packages, but there is+usually a degree of flexibility in which versions of packages can work+together so distributing them independently makes sense.++It is perhaps easiest to see what being "the unit of distribution"+means by contrast to an alternative approach. Many projects are made up+of several interdependent packages and during development these might+all be kept under one common directory tree and be built and tested+together. When it comes to distribution however, rather than+distributing them all together in a single tarball, it is required that+they each be distributed independently in their own tarballs.++Cabal's approach is to say that if you can specify a dependency on a+package then that package should be able to be distributed+independently. Or to put it the other way round, if you want to+distribute it as a single unit, then it should be a single package.++Explicit dependencies and automatic package management+------------------------------------------------------++Cabal takes the approach that all packages dependencies are specified+explicitly and specified in a declarative way. The point is to enable+automatic package management. This means tools like ``cabal`` can+resolve dependencies and install a package plus all of its dependencies+automatically. Alternatively, it is possible to mechanically (or mostly+mechanically) translate Cabal packages into system packages and let the+system package manager install dependencies automatically.++It is important to track dependencies accurately so that packages can+reliably be moved from one system to another system and still be able to+build it there. Cabal is therefore relatively strict about specifying+dependencies. For example Cabal's default build system will not even let+code build if it tries to import a module from a package that isn't+listed in the ``.cabal`` file, even if that package is actually+installed. This helps to ensure that there are no "untracked+dependencies" that could cause the code to fail to build on some other+system.++The explicit dependency approach is in contrast to the traditional+"./configure" approach where instead of specifying dependencies+declaratively, the ``./configure`` script checks if the dependencies are+present on the system. Some manual work is required to transform a+``./configure`` based package into a Linux distribution package (or+similar). This conversion work is usually done by people other than the+package author(s). The practical effect of this is that only the most+popular packages will benefit from automatic package management.+Instead, Cabal forces the original author to specify the dependencies+but the advantage is that every package can benefit from automatic+package management.++The "./configure" approach tends to encourage packages that adapt+themselves to the environment in which they are built, for example by+disabling optional features so that they can continue to work when a+particular dependency is not available. This approach makes sense in a+world where installing additional dependencies is a tiresome manual+process and so minimising dependencies is important. The automatic+package management view is that packages should just declare what they+need and the package manager will take responsibility for ensuring that+all the dependencies are installed.++Sometimes of course optional features and optional dependencies do make+sense. Cabal packages can have optional features and varying+dependencies. These conditional dependencies are still specified in a+declarative way however and remain compatible with automatic package+management. The need to remain compatible with automatic package+management means that Cabal's conditional dependencies system is a bit+less flexible than with the "./configure" approach.++.. note::+   `GNU autoconf places restrictions on paths, including the+   path that the user builds a package from.+   <https://www.gnu.org/software/autoconf/manual/autoconf.html#File-System-Conventions>`_+   Package authors using ``build-type: configure`` should be aware of+   these restrictions; because users may be unexpectedly constrained and+   face mysterious errors, it is recommended that ``build-type: configure``+   is only used where strictly necessary.++Portability+-----------++One of the purposes of Cabal is to make it easier to build packages on+different platforms (operating systems and CPU architectures), with+different compiler versions and indeed even with different Haskell+implementations. (Yes, there are Haskell implementations other than+GHC!)++Cabal provides abstractions of features present in different Haskell+implementations and wherever possible it is best to take advantage of+these to increase portability. Where necessary however it is possible to+use specific features of specific implementations.++For example a package author can list in the package's ``.cabal`` what+language extensions the code uses. This allows Cabal to figure out if+the language extension is supported by the Haskell implementation that+the user picks. Additionally, certain language extensions such as+Template Haskell require special handling from the build system and by+listing the extension it provides the build system with enough+information to do the right thing.++Another similar example is linking with foreign libraries. Rather than+specifying GHC flags directly, the package author can list the libraries+that are needed and the build system will take care of using the right+flags for the compiler. Additionally this makes it easier for tools to+discover what system C libraries a package needs, which is useful for+tracking dependencies on system libraries (e.g. when translating into+Linux distribution packages).++In fact both of these examples fall into the category of explicitly+specifying dependencies. Not all dependencies are other Cabal packages.+Foreign libraries are clearly another kind of dependency. It's also+possible to think of language extensions as dependencies: the package+depends on a Haskell implementation that supports all those extensions.++Where compiler-specific options are needed however, there is an "escape+hatch" available. The developer can specify implementation-specific+options and more generally there is a configuration mechanism to+customise many aspects of how a package is built depending on the+Haskell implementation, the operating system, computer architecture and+user-specified configuration flags.
doc/file-format-changelog.rst view
@@ -19,6 +19,26 @@     versions of the ``Cabal`` library denote unreleased development     branches which have no stability guarantee. +``cabal-version: 3.4``+----------------------+++* License fields use identifiers from SPDX License List version+  ``3.9 2020-05-15``++* Dependencies to sublibraries have to be specified explicitly,+  even for current package.+  This way you can have an internal library with the same+  name as some external dependency.++* Remove ``-any`` and ``-none`` syntax for version ranges+  Use ``>=0`` and ``<0`` respectively.++* :pkg-field:`default-language` is optional.+  The Default value is to use the compiler's default language.++* :pkg-field:`mixins` field allow specifying a sublibrary.+ ``cabal-version: 3.0`` ---------------------- @@ -35,7 +55,7 @@ * Remove deprecated ``hs-source-dir``, :pkg-field:`extensions` and   :pkg-field:`build-tools` fields. -* Common stanzas are now allowed also in the beginnning of conditional+* Common stanzas are now allowed also in the beginning of conditional   sections.  In other words, the following is valid      ::@@ -47,7 +67,7 @@                 import foo-deps  * Allow redundant leading or trailing commas in package fields with-  optional commas, such as :pkg-field:`exposed-modules`+  optional commas, such as :pkg-field:`library:exposed-modules`  * Require fields with optional commas to consistently omit or place   commas between elements.@@ -70,11 +90,11 @@   which are autogenerated (e.g. by a ``configure`` script).  * New :pkg-field:`asm-sources` and :pkg-field:`asm-options` fields-  added for suppporting bundled foreign routines implemented in+  added for supporting bundled foreign routines implemented in   assembler.  * New :pkg-field:`cmm-sources` and :pkg-field:`cmm-options` fields-  added for suppporting bundled foreign primops implemented in+  added for supporting bundled foreign primops implemented in   C--.  ``cabal-version: 2.4``
doc/index.rst view
@@ -6,10 +6,16 @@    :maxdepth: 2    :numbered: +   getting-started    intro    config-and-install    concepts-and-development-   bugs-and-stability    nix-local-build-overview-   nix-integration+   cabal-commands+   cabal-package+   cabal-project+   setup-commands    file-format-changelog+   buildinfo-fields-reference+   bugs-and-stability+   nix-integration
doc/installing-packages.rst view
@@ -41,1763 +41,207 @@ You can also use ``cabal user-config update`` to migrate configuration files created by older versions of ``cabal``. -Repository specification---------------------------An important part of the configuration is the specification of the-repository. When ``cabal`` creates a default config file, it configures-the repository to be the central Hackage server:--::--    repository hackage.haskell.org-      url: http://hackage.haskell.org/--The name of the repository is given on the first line, and can be-anything; packages downloaded from this repository will be cached under-``~/.cabal/packages/hackage.haskell.org`` (or whatever name you specify;-you can change the prefix by changing the value of-:cfg-field:`remote-repo-cache`). If you want, you can configure multiple-repositories, and ``cabal`` will combine them and be able to download-packages from any of them.--Using secure repositories-^^^^^^^^^^^^^^^^^^^^^^^^^--For repositories that support the TUF security infrastructure (this-includes Hackage), you can enable secure access to the repository by-specifying:--::--    repository hackage.haskell.org-      url: http://hackage.haskell.org/-      secure: True-      root-keys: <root-key-IDs>-      key-threshold: <key-threshold>--The ``<root-key-IDs>`` and ``<key-threshold>`` values are used for-bootstrapping. As part of the TUF infrastructure the repository will-contain a file ``root.json`` (for instance,-http://hackage.haskell.org/root.json) which the client needs to do-verification. However, how can ``cabal`` verify the ``root.json`` file-*itself*? This is known as bootstrapping: if you specify a list of root-key IDs and a corresponding threshold, ``cabal`` will verify that the-downloaded ``root.json`` file has been signed with at least-``<key-threshold>`` keys from your set of ``<root-key-IDs>``.--You can, but are not recommended to, omit these two fields. In that case-``cabal`` will download the ``root.json`` field and use it without-verification. Although this bootstrapping step is then unsafe, all-subsequent access is secure (provided that the downloaded ``root.json``-was not tampered with). Of course, adding ``root-keys`` and-``key-threshold`` to your repository specification only shifts the-problem, because now you somehow need to make sure that the key IDs you-received were the right ones. How that is done is however outside the-scope of ``cabal`` proper.--More information about the security infrastructure can be found at-https://github.com/haskell/hackage-security.--Local no-index repositories-^^^^^^^^^^^^^^^^^^^^^^^^^^^--It's possible to use a directory of `.tar.gz` package files as a local package-repository.--::--    repository my-local-repository-      url: file+noindex:///absolute/path/to/directory--``cabal`` will construct the index automatically from the-``package-name-version.tar.gz`` files in the directory, and will use optional-corresponding ``package-name-version.cabal`` files as new revisions.--The index is cached inside the given directory. If the directory is not-writable, you can append ``#shared-cache`` fragment to the URI,-then the cache will be stored inside the :cfg-field:`remote-repo-cache` directory.-The part of the path will be used to determine the cache key part.--.. note::-    The URI scheme ``file:`` is interpreted as a remote repository,-    as described in the previous sections, thus requiring manual construction-    of ``01-index.tar`` file.--Legacy repositories-^^^^^^^^^^^^^^^^^^^--Currently ``cabal`` supports two kinds of “legacy” repositories. The-first is specified using--::--    remote-repo: hackage.haskell.org:http://hackage.haskell.org/packages/archive--This is just syntactic sugar for--::--    repository hackage.haskell.org-      url: hackage.haskell.org:http://hackage.haskell.org/packages/archive--although, in (and only in) the specific case of Hackage, the URL-``http://hackage.haskell.org/packages/archive`` will be silently-translated to ``http://hackage.haskell.org/``.--The second kind of legacy repositories are so-called “(legacy) local”-repositories:--::--    local-repo: my-local-repo:/path/to/local/repo--This can be used to access repositories on the local file system.-However, the layout of these local repositories is different from the-layout of remote repositories, and usage of these local repositories is-deprecated.--Secure local repositories-^^^^^^^^^^^^^^^^^^^^^^^^^--If you want to use repositories on your local file system, it is-recommended instead to use a *secure* local repository:--::--    repository my-local-repo-      url: file:/path/to/local/repo-      secure: True-      root-keys: <root-key-IDs>-      key-threshold: <key-threshold>--The layout of these secure local repos matches the layout of remote-repositories exactly; the :hackage-pkg:`hackage-repo-tool`-can be used to create and manage such repositories.--.. _installing-packages:--Building and installing packages-================================--.. highlight:: console--After you've unpacked a Cabal package, you can build it by moving into-the root directory of the package and running the ``cabal`` tool there:--::--    $ cabal [command] [option...]--The *command* argument selects a particular step in the build/install-process.--You can also get a summary of the command syntax with--::--    $ cabal help--Alternatively, you can also use the ``Setup.hs`` or ``Setup.lhs``-script:--::--    $ runhaskell Setup.hs [command] [option...]--For the summary of the command syntax, run:--::--    $ cabal help--or--::--    $ runhaskell Setup.hs --help--Building and installing a system package-------------------------------------------::--    $ runhaskell Setup.hs configure --ghc-    $ runhaskell Setup.hs build-    $ runhaskell Setup.hs install--The first line readies the system to build the tool using GHC; for-example, it checks that GHC exists on the system. The second line-performs the actual building, while the last both copies the build-results to some permanent place and registers the package with GHC.--Building and installing a user package-----------------------------------------::--    $ runhaskell Setup.hs configure --user-    $ runhaskell Setup.hs build-    $ runhaskell Setup.hs install--The package is installed under the user's home directory and is-registered in the user's package database (:option:`setup configure --user`).--Installing packages from Hackage-----------------------------------The ``cabal`` tool also can download, configure, build and install a-Hackage_ package and all of its-dependencies in a single step. To do this, run:--::--   $ cabal install [PACKAGE...]--To browse the list of available packages, visit the-Hackage_ web site.--Developing with sandboxes----------------------------By default, any dependencies of the package are installed into the-global or user package databases (e.g. using-``cabal install --only-dependencies``). If you're building several-different packages that have incompatible dependencies, this can cause-the build to fail. One way to avoid this problem is to build each-package in an isolated environment ("sandbox"), with a sandbox-local-package database. Because sandboxes are per-project, inconsistent-dependencies can be simply disallowed.--For more on sandboxes, see also `this-article <http://coldwa.st/e/blog/2013-08-20-Cabal-sandbox.html>`__.--Sandboxes: basic usage-^^^^^^^^^^^^^^^^^^^^^^--To initialise a fresh sandbox in the current directory, run-``cabal sandbox init``. All subsequent commands (such as ``build`` and-``install``) from this point will use the sandbox.--::--    $ cd /path/to/my/haskell/library-    $ cabal sandbox init                   # Initialise the sandbox-    $ cabal install --only-dependencies    # Install dependencies into the sandbox-    $ cabal build                          # Build your package inside the sandbox--It can be useful to make a source package available for installation in-the sandbox - for example, if your package depends on a patched or an-unreleased version of a library. This can be done with the-``cabal sandbox add-source`` command - think of it as "local Hackage_".-If an add-source dependency is later modified, it is reinstalled automatically.--::--    $ cabal sandbox add-source /my/patched/library # Add a new add-source dependency-    $ cabal install --dependencies-only            # Install it into the sandbox-    $ cabal build                                  # Build the local package-    $ $EDITOR /my/patched/library/Source.hs        # Modify the add-source dependency-    $ cabal build                                  # Modified dependency is automatically reinstalled--Normally, the sandbox settings (such as optimisation level) are-inherited from the main Cabal config file (``$HOME/cabal/config``).-Sometimes, though, you need to change some settings specifically for a-single sandbox. You can do this by creating a ``cabal.config`` file in-the same directory with your ``cabal.sandbox.config`` (which was created-by ``sandbox init``). This file has the same syntax as the main Cabal-config file.--::--    $ cat cabal.config-    documentation: True-    constraints: foo == 1.0, bar >= 2.0, baz-    $ cabal build                                  # Uses settings from the cabal.config file--When you have decided that you no longer want to build your package-inside a sandbox, just delete it:--::--    $ cabal sandbox delete                       # Built-in command-    $ rm -rf .cabal-sandbox cabal.sandbox.config # Alternative manual method--Sandboxes: advanced usage-^^^^^^^^^^^^^^^^^^^^^^^^^--The default behaviour of the ``add-source`` command is to track-modifications done to the added dependency and reinstall the sandbox-copy of the package when needed. Sometimes this is not desirable: in-these cases you can use ``add-source --snapshot``, which disables the-change tracking. In addition to ``add-source``, there are also-``list-sources`` and ``delete-source`` commands.--Sometimes one wants to share a single sandbox between multiple packages.-This can be easily done with the ``--sandbox`` option:--::--    $ mkdir -p /path/to/shared-sandbox-    $ cd /path/to/shared-sandbox-    $ cabal sandbox init --sandbox .-    $ cd /path/to/package-a-    $ cabal sandbox init --sandbox /path/to/shared-sandbox-    $ cd /path/to/package-b-    $ cabal sandbox init --sandbox /path/to/shared-sandbox--Note that ``cabal sandbox init --sandbox .`` puts all sandbox files into-the current directory. By default, ``cabal sandbox init`` initialises a-new sandbox in a newly-created subdirectory of the current working-directory (``./.cabal-sandbox``).--Using multiple different compiler versions simultaneously is also-supported, via the ``-w`` option:--::--    $ cabal sandbox init-    $ cabal install --only-dependencies -w /path/to/ghc-1 # Install dependencies for both compilers-    $ cabal install --only-dependencies -w /path/to/ghc-2-    $ cabal configure -w /path/to/ghc-1                   # Build with the first compiler-    $ cabal build-    $ cabal configure -w /path/to/ghc-2                   # Build with the second compiler-    $ cabal build--It can be occasionally useful to run the compiler-specific package-manager tool (e.g. ``ghc-pkg``) on the sandbox package DB directly-(for example, you may need to unregister some packages). The-``cabal sandbox hc-pkg`` command is a convenient wrapper that runs the-compiler-specific package manager tool with the arguments:--::--    $ cabal -v sandbox hc-pkg list-    Using a sandbox located at /path/to/.cabal-sandbox-    'ghc-pkg' '--global' '--no-user-package-conf'-        '--package-conf=/path/to/.cabal-sandbox/i386-linux-ghc-7.4.2-packages.conf.d'-        'list'-    [...]--The ``--require-sandbox`` option makes all sandbox-aware commands-(``install``/``build``/etc.) exit with error if there is no sandbox-present. This makes it harder to accidentally modify the user package-database. The option can be also turned on via the per-user-configuration file (``~/.cabal/config``) or the per-project one-(``$PROJECT_DIR/cabal.config``). The error can be squelched with-``--no-require-sandbox``.--The option ``--sandbox-config-file`` allows to specify the location of-the ``cabal.sandbox.config`` file (by default, ``cabal`` searches for it-in the current directory). This provides the same functionality as-shared sandboxes, but sometimes can be more convenient. Example:--::--    $ mkdir my/sandbox-    $ cd my/sandbox-    $ cabal sandbox init-    $ cd /path/to/my/project-    $ cabal --sandbox-config-file=/path/to/my/sandbox/cabal.sandbox.config install-    # Uses the sandbox located at /path/to/my/sandbox/.cabal-sandbox-    $ cd ~-    $ cabal --sandbox-config-file=/path/to/my/sandbox/cabal.sandbox.config install-    # Still uses the same sandbox--The sandbox config file can be also specified via the-``CABAL_SANDBOX_CONFIG`` environment variable.--Finally, the flag ``--ignore-sandbox`` lets you temporarily ignore an-existing sandbox:--::--    $ mkdir my/sandbox-    $ cd my/sandbox-    $ cabal sandbox init-    $ cabal --ignore-sandbox install text-    # Installs 'text' in the user package database ('~/.cabal').--Creating a binary package----------------------------When creating binary packages (e.g. for Red Hat or Debian) one needs to-create a tarball that can be sent to another system for unpacking in the-root directory:--::--    $ runhaskell Setup.hs configure --prefix=/usr-    $ runhaskell Setup.hs build-    $ runhaskell Setup.hs copy --destdir=/tmp/mypkg-    $ tar -czf mypkg.tar.gz /tmp/mypkg/--If the package contains a library, you need two additional steps:--::--    $ runhaskell Setup.hs register --gen-script-    $ runhaskell Setup.hs unregister --gen-script--This creates shell scripts ``register.sh`` and ``unregister.sh``, which-must also be sent to the target system. After unpacking there, the-package must be registered by running the ``register.sh`` script. The-``unregister.sh`` script would be used in the uninstall procedure of the-package. Similar steps may be used for creating binary packages for-Windows.--The following options are understood by all commands:--.. program:: setup--.. option:: --help, -h or -?--    List the available options for the command.--.. option:: --verbose=n or -v n--    Set the verbosity level (0-3). The normal level is 1; a missing *n*-    defaults to 2.--    There is also an extended version of this command which can be-    used to fine-tune the verbosity of output.  It takes the-    form ``[silent|normal|verbose|debug]``\ *flags*, where *flags*-    is a list of ``+`` flags which toggle various aspects of-    output.  At the moment, only ``+callsite`` and ``+callstack``-    are supported, which respectively toggle call site and call-    stack printing (these are only supported if Cabal-    is built with a sufficiently recent GHC.)--The various commands and the additional options they support are-described below. In the simple build infrastructure, any other options-will be reported as errors.--.. _setup-configure:--setup configure------------------.. program:: setup configure--Prepare to build the package. Typically, this step checks that the-target platform is capable of building the package, and discovers-platform-specific features that are needed during the build.--The user may also adjust the behaviour of later stages using the options-listed in the following subsections. In the simple build infrastructure,-the values supplied via these options are recorded in a private file-read by later stages.--If a user-supplied ``configure`` script is run (see the section on-`system-dependent-parameters <developing-packages.html#system-dependent-parameters>`__ or-on `complex-packages <developing-packages.html#more-complex-packages>`__), it is-passed the :option:`--with-hc-pkg`, :option:`--prefix`, :option:`--bindir`,-:option:`--libdir`, :option:`--dynlibdir`, :option:`--datadir`, :option:`--libexecdir` and-:option:`--sysconfdir` options. In addition the value of the-:option:`--with-compiler` option is passed in a :option:`--with-hc-pkg` option-and all options specified with :option:`--configure-option` are passed on.--.. note::-   `GNU autoconf places restrictions on paths, including the directory-   that the package is built from.-   <https://www.gnu.org/software/autoconf/manual/autoconf.html#File-System-Conventions>`_-   The errors produced when this happens can be obscure; Cabal attempts to-   detect and warn in this situation, but it is not perfect.--In Cabal 2.0, support for a single positional argument was added to-``setup configure`` This makes Cabal configure the specific component to-be configured. Specified names can be qualified with ``lib:`` or-``exe:`` in case just a name is ambiguous (as would be the case for a-package named ``p`` which has a library and an executable named ``p``.)-This has the following effects:---  Subsequent invocations of ``cabal build``, ``register``, etc. operate only-   on the configured component.---  Cabal requires all "internal" dependencies (e.g., an executable-   depending on a library defined in the same package) must be found in-   the set of databases via :option:`--package-db` (and related flags): these-   dependencies are assumed to be up-to-date. A dependency can be-   explicitly specified using :option:`--dependency` simply by giving the name-   of the internal library; e.g., the dependency for an internal library-   named ``foo`` is given as-   ``--dependency=pkg-internal=pkg-1.0-internal-abcd``.---  Only the dependencies needed for the requested component are-   required. Similarly, when :option:`--exact-configuration` is specified,-   it's only necessary to specify :option:`--dependency` for the component.-   (As mentioned previously, you *must* specify internal dependencies as-   well.)---  Internal ``build-tool-depends`` and ``build-tools`` dependencies are expected-   to be in the ``PATH`` upon subsequent invocations of ``setup``.--Full details can be found in the `Componentized Cabal-proposal <https://github.com/ezyang/ghc-proposals/blob/master/proposals/0000-componentized-cabal.rst>`__.--Programs used for building-^^^^^^^^^^^^^^^^^^^^^^^^^^--The following options govern the programs used to process the source-files of a package:--.. option:: --ghc or -g, --jhc, --lhc, --uhc--    Specify which Haskell implementation to use to build the package. At-    most one of these flags may be given. If none is given, the-    implementation under which the setup script was compiled or-    interpreted is used.--.. option:: --with-compiler=path or -w *path*--    Specify the path to a particular compiler. If given, this must match-    the implementation selected above. The default is to search for the-    usual name of the selected implementation.--    This flag also sets the default value of the :option:`--with-hc-pkg`-    option to the package tool for this compiler. Check the output of-    ``setup configure -v`` to ensure that it finds the right package-    tool (or use :option:`--with-hc-pkg` explicitly).--.. option:: --with-hc-pkg=path--    Specify the path to the package tool, e.g. ``ghc-pkg``. The package-    tool must be compatible with the compiler specified by-    :option:`--with-compiler`. If this option is omitted, the default value is-    determined from the compiler selected.--.. option:: --with-prog=path--    Specify the path to the program *prog*. Any program known to Cabal-    can be used in place of *prog*. It can either be a fully path or the-    name of a program that can be found on the program search path. For-    example: ``--with-ghc=ghc-6.6.1`` or-    ``--with-cpphs=/usr/local/bin/cpphs``. The full list of accepted-    programs is not enumerated in this user guide. Rather, run-    ``cabal install --help`` to view the list.--.. option:: --prog-options=options--    Specify additional options to the program *prog*. Any program known-    to Cabal can be used in place of *prog*. For example:-    ``--alex-options="--template=mytemplatedir/"``. The *options* is-    split into program options based on spaces. Any options containing-    embedded spaced need to be quoted, for example-    ``--foo-options='--bar="C:\Program File\Bar"'``. As an alternative-    that takes only one option at a time but avoids the need to quote,-    use :option:`--prog-option` instead.--.. option:: --prog-option=option--    Specify a single additional option to the program *prog*. For-    passing an option that contain embedded spaces, such as a file name-    with embedded spaces, using this rather than :option:`--prog-options`-    means you do not need an additional level of quoting. Of course if you-    are using a command shell you may still need to quote, for example-    ``--foo-options="--bar=C:\Program File\Bar"``.--All of the options passed with either :option:`--prog-options`-or :option:`--prog-option` are passed in the order they were-specified on the configure command line.--Installation paths-^^^^^^^^^^^^^^^^^^--The following options govern the location of installed files from a-package:--.. option:: --prefix=dir--    The root of the installation. For example for a global install you-    might use ``/usr/local`` on a Unix system, or ``C:\Program Files``-    on a Windows system. The other installation paths are usually-    subdirectories of *prefix*, but they don't have to be.--    In the simple build system, *dir* may contain the following path-    variables: ``$pkgid``, ``$pkg``, ``$version``, ``$compiler``,-    ``$os``, ``$arch``, ``$abi``, ``$abitag``--.. option:: --bindir=dir--    Executables that the user might invoke are installed here.--    In the simple build system, *dir* may contain the following path-    variables: ``$prefix``, ``$pkgid``, ``$pkg``, ``$version``,-    ``$compiler``, ``$os``, ``$arch``, ``$abi``, ``$abitag``--.. option:: --libdir=dir--    Object-code libraries are installed here.--    In the simple build system, *dir* may contain the following path-    variables: ``$prefix``, ``$bindir``, ``$pkgid``, ``$pkg``,-    ``$version``, ``$compiler``, ``$os``, ``$arch``, ``$abi``,-    ``$abitag``--.. option:: --dynlibdir=dir--    Dynamic libraries are installed here.--    By default, this is set to `$libdir/$abi`, which is usually not equal to-    `$libdir/$libsubdir`.--    In the simple build system, *dir* may contain the following path-    variables: ``$prefix``, ``$bindir``, ``$libdir``, ``$pkgid``, ``$pkg``,-    ``$version``, ``$compiler``, ``$os``, ``$arch``, ``$abi``,-    ``$abitag``--.. option:: --libexecdir=dir--    Executables that are not expected to be invoked directly by the user-    are installed here.--    In the simple build system, *dir* may contain the following path-    variables: ``$prefix``, ``$bindir``, ``$libdir``, ``$libsubdir``,-    ``$pkgid``, ``$pkg``, ``$version``, ``$compiler``, ``$os``,-    ``$arch``, ``$abi``, ``$abitag``--.. option:: --datadir=dir--    Architecture-independent data files are installed here.--    In the simple build system, *dir* may contain the following path-    variables: ``$prefix``, ``$bindir``, ``$libdir``, ``$libsubdir``,-    ``$pkgid``, ``$pkg``, ``$version``, ``$compiler``, ``$os``,-    ``$arch``, ``$abi``, ``$abitag``--.. option:: --sysconfdir=dir--    Installation directory for the configuration files.--    In the simple build system, *dir* may contain the following path-    variables: ``$prefix``, ``$bindir``, ``$libdir``, ``$libsubdir``,-    ``$pkgid``, ``$pkg``, ``$version``, ``$compiler``, ``$os``,-    ``$arch``, ``$abi``, ``$abitag``--In addition the simple build system supports the following installation-path options:--.. option:: --libsubdir=dir--    A subdirectory of *libdir* in which libraries are actually installed. For-    example, in the simple build system on Unix, the default *libdir* is-    ``/usr/local/lib``, and *libsubdir* contains the compiler ABI and package-    identifier,-    e.g. ``x86_64-linux-ghc-8.0.2/mypkg-0.1.0-IxQNmCA7qrSEQNkoHSF7A``, so-    libraries would be installed in-    ``/usr/local/lib/x86_64-linux-ghc-8.0.2/mypkg-0.1.0-IxQNmCA7qrSEQNkoHSF7A/``.--    *dir* may contain the following path variables: ``$pkgid``,-    ``$pkg``, ``$version``, ``$compiler``, ``$os``, ``$arch``, ``$abi``,-    ``$abitag``--.. option:: --libexecsubdir=dir--    A subdirectory of *libexecdir* in which private executables are-    installed. For example, in the simple build system on Unix, the default-    *libexecdir* is ``/usr/local/libexec``, and *libsubdir* is-    ``x86_64-linux-ghc-8.0.2/mypkg-0.1.0``, so private executables would be-    installed in ``/usr/local/libexec/x86_64-linux-ghc-8.0.2/mypkg-0.1.0/``--    *dir* may contain the following path variables: ``$pkgid``,-    ``$pkg``, ``$version``, ``$compiler``, ``$os``, ``$arch``, ``$abi``,-    ``$abitag``--.. option:: --datasubdir=dir--    A subdirectory of *datadir* in which data files are actually-    installed.--    *dir* may contain the following path variables: ``$pkgid``,-    ``$pkg``, ``$version``, ``$compiler``, ``$os``, ``$arch``, ``$abi``,-    ``$abitag``--.. option:: --docdir=dir--    Documentation files are installed relative to this directory.--    *dir* may contain the following path variables: ``$prefix``,-    ``$bindir``, ``$libdir``, ``$libsubdir``, ``$datadir``,-    ``$datasubdir``, ``$pkgid``, ``$pkg``, ``$version``, ``$compiler``,-    ``$os``, ``$arch``, ``$abi``, ``$abitag``--.. option:: --htmldir=dir--    HTML documentation files are installed relative to this directory.--    *dir* may contain the following path variables: ``$prefix``,-    ``$bindir``, ``$libdir``, ``$libsubdir``, ``$datadir``,-    ``$datasubdir``, ``$docdir``, ``$pkgid``, ``$pkg``, ``$version``,-    ``$compiler``, ``$os``, ``$arch``, ``$abi``, ``$abitag``--.. option:: --program-prefix=prefix--    Prepend *prefix* to installed program names.--    *prefix* may contain the following path variables: ``$pkgid``,-    ``$pkg``, ``$version``, ``$compiler``, ``$os``, ``$arch``, ``$abi``,-    ``$abitag``--.. option:: --program-suffix=suffix--    Append *suffix* to installed program names. The most obvious use for-    this is to append the program's version number to make it possible-    to install several versions of a program at once:-    ``--program-suffix='$version'``.--    *suffix* may contain the following path variables: ``$pkgid``,-    ``$pkg``, ``$version``, ``$compiler``, ``$os``, ``$arch``, ``$abi``,-    ``$abitag``--Path variables in the simple build system-"""""""""""""""""""""""""""""""""""""""""--For the simple build system, there are a number of variables that can be-used when specifying installation paths. The defaults are also specified-in terms of these variables. A number of the variables are actually for-other paths, like ``$prefix``. This allows paths to be specified-relative to each other rather than as absolute paths, which is important-for building relocatable packages (see `prefix-independence <#prefix-independence>`__).--$prefix-    The path variable that stands for the root of the installation. For-    an installation to be relocatable, all other installation paths must-    be relative to the ``$prefix`` variable.-$bindir-    The path variable that expands to the path given by the :option:`--bindir`-    configure option (or the default).-$libdir-    As above but for :option:`--libdir`-$libsubdir-    As above but for :option:`--libsubdir`-$dynlibdir-    As above but for :option:`--dynlibdir`-$datadir-    As above but for :option:`--datadir`-$datasubdir-    As above but for :option:`--datasubdir`-$docdir-    As above but for :option:`--docdir`-$pkgid-    The name and version of the package, e.g. ``mypkg-0.2``-$pkg-    The name of the package, e.g. ``mypkg``-$version-    The version of the package, e.g. ``0.2``-$compiler-    The compiler being used to build the package, e.g. ``ghc-6.6.1``-$os-    The operating system of the computer being used to build the-    package, e.g. ``linux``, ``windows``, ``osx``, ``freebsd`` or-    ``solaris``-$arch-    The architecture of the computer being used to build the package,-    e.g. ``i386``, ``x86_64``, ``ppc`` or ``sparc``-$abitag-    An optional tag that a compiler can use for telling incompatible-    ABI's on the same architecture apart. GHCJS encodes the underlying-    GHC version in the ABI tag.-$abi-    A shortcut for getting a path that completely identifies the-    platform in terms of binary compatibility. Expands to the same value-    as ``$arch-$os-compiler-$abitag`` if the compiler uses an abi tag,-    ``$arch-$os-$compiler`` if it doesn't.--Paths in the simple build system-""""""""""""""""""""""""""""""""--For the simple build system, the following defaults apply:--.. list-table:: Default installation paths--    * - Option-      - Unix Default-      - Windows Default-    * - :option:`--prefix` (global)-      - ``/usr/local``-      - ``%PROGRAMFILES%\Haskell``-    * - :option:`--prefix` (per-user)-      - ``$HOME/.cabal``-      - ``%APPDATA%\cabal``-    * - :option:`--bindir`-      - ``$prefix/bin``-      - ``$prefix\bin``-    * - :option:`--libdir`-      - ``$prefix/lib``-      - ``$prefix``-    * - :option:`--libsubdir` (others)-      - ``$pkgid/$compiler``-      - ``$pkgid\$compiler``-    * - :option:`--dynlibdir`-      - ``$libdir/$abi``-      - ``$libdir\$abi``-    * - :option:`--libexecdir`-      - ``$prefix/libexec``-      - ``$prefix\$pkgid``-    * - :option:`--datadir` (executable)-      - ``$prefix/share``-      - ``$prefix``-    * - :option:`--datadir` (library)-      - ``$prefix/share``-      - ``%PROGRAMFILES%\Haskell``-    * - :option:`--datasubdir`-      - ``$pkgid``-      - ``$pkgid``-    * - :option:`--docdir`-      - ``$datadir/doc/$pkgid``-      - ``$prefix\doc\$pkgid``-    * - :option:`--sysconfdir`-      - ``$prefix/etc``-      - ``$prefix\etc``-    * - :option:`--htmldir`-      - ``$docdir/html``-      - ``$docdir\html``-    * - :option:`--program-prefix`-      - (empty)-      - (empty)-    * - :option:`--program-suffix`-      - (empty)-      - (empty)--Prefix-independence-"""""""""""""""""""--On Windows it is possible to obtain the pathname of the running program.-This means that we can construct an installable executable package that-is independent of its absolute install location. The executable can find-its auxiliary files by finding its own path and knowing the location of-the other files relative to ``$bindir``. Prefix-independence is-particularly useful: it means the user can choose the install location-(i.e. the value of ``$prefix``) at install-time, rather than having to-bake the path into the binary when it is built.--In order to achieve this, we require that for an executable on Windows,-all of ``$bindir``, ``$libdir``, ``$dynlibdir``, ``$datadir`` and ``$libexecdir`` begin-with ``$prefix``. If this is not the case then the compiled executable-will have baked-in all absolute paths.--The application need do nothing special to achieve prefix-independence.-If it finds any files using ``getDataFileName`` and the `other functions-provided for the-purpose <developing-packages.html#accessing-data-files-from-package-code>`__,-the files will be accessed relative to the location of the current-executable.--A library cannot (currently) be prefix-independent, because it will be-linked into an executable whose file system location bears no relation-to the library package.--Controlling Flag Assignments-^^^^^^^^^^^^^^^^^^^^^^^^^^^^--Flag assignments (see the `resolution of conditions and-flags <developing-packages.html#resolution-of-conditions-and-flags>`__)-can be controlled with the following command line options.--.. option:: -f flagname or -f -flagname--    Force the specified flag to ``true`` or ``false`` (if preceded with-    a ``-``). Later specifications for the same flags will override-    earlier, i.e., specifying ``-fdebug -f-debug`` is equivalent to-    ``-f-debug``--.. option:: --flags=flagspecs--    Same as ``-f``, but allows specifying multiple flag assignments at-    once. The parameter is a space-separated list of flag names (to-    force a flag to ``true``), optionally preceded by a ``-`` (to force-    a flag to ``false``). For example,-    ``--flags="debug -feature1 feature2"`` is equivalent to-    ``-fdebug -f-feature1 -ffeature2``.--Building Test Suites-^^^^^^^^^^^^^^^^^^^^--.. option:: --enable-tests--    Build the test suites defined in the package description file during-    the ``build`` stage. Check for dependencies required by the test-    suites. If the package is configured with this option, it will be-    possible to run the test suites with the ``test`` command after the-    package is built.--.. option:: --disable-tests--    (default) Do not build any test suites during the ``build`` stage.-    Do not check for dependencies required only by the test suites. It-    will not be possible to invoke the ``test`` command without-    reconfiguring the package.--.. option:: --enable-coverage--    Build libraries and executables (including test suites) with Haskell-    Program Coverage enabled. Running the test suites will automatically-    generate coverage reports with HPC.--.. option:: --disable-coverage--    (default) Do not enable Haskell Program Coverage.--Miscellaneous options-^^^^^^^^^^^^^^^^^^^^^--.. option:: --user--    Does a per-user installation. This changes the `default installation-    prefix <#paths-in-the-simple-build-system>`__. It also allow-    dependencies to be satisfied by the user's package database, in-    addition to the global database. This also implies a default of-    ``--user`` for any subsequent ``install`` command, as packages-    registered in the global database should not depend on packages-    registered in a user's database.--.. option:: --global--    (default) Does a global installation. In this case package-    dependencies must be satisfied by the global package database. All-    packages in the user's package database will be ignored. Typically-    the final installation step will require administrative privileges.--.. option:: --package-db=db--    Allows package dependencies to be satisfied from this additional-    package database *db* in addition to the global package database.-    All packages in the user's package database will be ignored. The-    interpretation of *db* is implementation-specific. Typically it will-    be a file or directory. Not all implementations support arbitrary-    package databases.--    This pushes an extra db onto the db stack. The :option:`--global` and-    :option:`--user` mode switches add the respective [Global] and [Global,-    User] dbs to the initial stack. There is a compiler-implementation-    constraint that the global db must appear first in the stack, and if-    the user one appears at all, it must appear immediately after the-    global db.--    To reset the stack, use ``--package-db=clear``.--.. option:: --ipid=ipid--    Specifies the *installed package identifier* of the package to be-    built; this identifier is passed on to GHC and serves as the basis-    for linker symbols and the ``id`` field in a ``ghc-pkg``-    registration. When a package has multiple components, the actual-    component identifiers are derived off of this identifier (e.g., an-    internal library ``foo`` from package ``p-0.1-abcd`` will get the-    identifier ``p-0.1-abcd-foo``.--.. option:: --cid=cid--    Specifies the *component identifier* of the component being built;-    this is only valid if you are configuring a single component.--.. option:: --default-user-config=file--    Allows a "default" ``cabal.config`` freeze file to be passed in-    manually. This file will only be used if one does not exist in the-    project directory already. Typically, this can be set from the-    global cabal ``config`` file so as to provide a default set of-    partial constraints to be used by projects, providing a way for-    users to peg themselves to stable package collections.--.. option:: --enable-optimization[=n] or -O [n]--    (default) Build with optimization flags (if available). This is-    appropriate for production use, taking more time to build faster-    libraries and programs.--    The optional *n* value is the optimisation level. Some compilers-    support multiple optimisation levels. The range is 0 to 2. Level 0-    is equivalent to :option:`--disable-optimization`, level 1 is the-    default if no *n* parameter is given. Level 2 is higher optimisation-    if the compiler supports it. Level 2 is likely to lead to longer-    compile times and bigger generated code.--    When optimizations are enabled, Cabal passes ``-O2`` to the C compiler.--.. option:: --disable-optimization--    Build without optimization. This is suited for development: building-    will be quicker, but the resulting library or programs will be-    slower.--.. option:: --enable-profiling--    Build libraries and executables with profiling enabled (for-    compilers that support profiling as a separate mode). For this to-    work, all libraries used by this package must also have been built-    with profiling support. For libraries this involves building an-    additional instance of the library in addition to the normal-    non-profiling instance. For executables it changes the single-    executable to be built in profiling mode.--    This flag covers both libraries and executables, but can be-    overridden by the :option:`--enable-library-profiling` flag.--    See also the :option:`--profiling-detail` flag below.--.. option:: --disable-profiling--    (default) Do not enable profiling in generated libraries and-    executables.--.. option:: --enable-library-profiling or -p--    As with :option:`--enable-profiling` above, but it applies only for-    libraries. So this generates an additional profiling instance of the-    library in addition to the normal non-profiling instance.--    The :option:`--enable-profiling` flag controls the profiling mode for both-    libraries and executables, but if different modes are desired for-    libraries versus executables then use :option:`--enable-library-profiling`-    as well.--.. option:: --disable-library-profiling--    (default) Do not generate an additional profiling version of the library.--.. option:: --profiling-detail[=level]--    Some compilers that support profiling, notably GHC, can allocate-    costs to different parts of the program and there are different-    levels of granularity or detail with which this can be done. In-    particular for GHC this concept is called "cost centers", and GHC-    can automatically add cost centers, and can do so in different ways.--    This flag covers both libraries and executables, but can be-    overridden by the :option:`--library-profiling-detail` flag.--    Currently this setting is ignored for compilers other than GHC. The-    levels that cabal currently supports are:--    default-        For GHC this uses ``exported-functions`` for libraries and-        ``toplevel-functions`` for executables.-    none-        No costs will be assigned to any code within this component.-    exported-functions-        Costs will be assigned at the granularity of all top level-        functions exported from each module. In GHC specifically, this-        is for non-inline functions.-    toplevel-functions-        Costs will be assigned at the granularity of all top level-        functions in each module, whether they are exported from the-        module or not. In GHC specifically, this is for non-inline-        functions.-    all-functions-        Costs will be assigned at the granularity of all functions in-        each module, whether top level or local. In GHC specifically,-        this is for non-inline toplevel or where-bound functions or-        values.--    This flag is new in Cabal-1.24. Prior versions used the equivalent-    of ``none`` above.--.. option:: --library-profiling-detail[=level]--    As with :option:`--profiling-detail` above, but it applies only for-    libraries.--    The level for both libraries and executables is set by the-    :option:`--profiling-detail` flag, but if different levels are desired-    for libraries versus executables then use-    :option:`--library-profiling-detail` as well.--.. option:: --enable-library-vanilla--    (default) Build ordinary libraries (as opposed to profiling-    libraries). This is independent of the-    :option:`--enable-library-profiling` option. If you enable both, you get-    both.--.. option:: --disable-library-vanilla--    Do not build ordinary libraries. This is useful in conjunction with-    :option:`--enable-library-profiling` to build only profiling libraries,-    rather than profiling and ordinary libraries.--.. option:: --enable-library-for-ghci--    (default) Build libraries suitable for use with GHCi.--.. option:: --disable-library-for-ghci--    Not all platforms support GHCi and indeed on some platforms, trying-    to build GHCi libs fails. In such cases this flag can be used as a-    workaround.--.. option:: --enable-split-objs--    Use the GHC ``-split-objs`` feature when building the library. This-    reduces the final size of the executables that use the library by-    allowing them to link with only the bits that they use rather than-    the entire library. The downside is that building the library takes-    longer and uses considerably more memory.--.. option:: --disable-split-objs--    (default) Do not use the GHC ``-split-objs`` feature. This makes-    building the library quicker but the final executables that use the-    library will be larger.--.. option:: --enable-executable-stripping--    (default) When installing binary executable programs, run the-    ``strip`` program on the binary. This can considerably reduce the-    size of the executable binary file. It does this by removing-    debugging information and symbols. While such extra information is-    useful for debugging C programs with traditional debuggers it is-    rarely helpful for debugging binaries produced by Haskell compilers.--    Not all Haskell implementations generate native binaries. For such-    implementations this option has no effect.--.. option:: --disable-executable-stripping--    Do not strip binary executables during installation. You might want-    to use this option if you need to debug a program using gdb, for-    example if you want to debug the C parts of a program containing-    both Haskell and C code. Another reason is if your are building a-    package for a system which has a policy of managing the stripping-    itself (such as some Linux distributions).--.. option:: --enable-shared--    Build shared library. This implies a separate compiler run to-    generate position independent code as required on most platforms.--.. option:: --disable-shared--    (default) Do not build shared library.--.. option:: --enable-static--   Build a static library. This passes ``-staticlib`` to GHC (available-   for iOS, and with 8.4 more platforms).  The result is an archive ``.a``-   containing all dependent haskell libararies combined.--.. option:: --disable-static--    (default) Do not build a static library.--.. option:: --enable-executable-dynamic--    Link dependent Haskell libraries into executables dynamically.-    The executable's library dependencies must have been-    built as shared objects. This implies :option:`--enable-shared`-    unless :option:`--disable-shared` is explicitly specified.--.. option:: --disable-executable-dynamic--   (default) Link dependent Haskell libraries into executables statically.-   Non-Haskell (C) libraries are still linked dynamically, including libc,-   so the result is still not a fully static executable-   unless :option:`--enable-executable-static` is given.--.. option:: --enable-executable-static--    Build fully static executables.-    This link all dependent libraries into executables statically,-    including libc.--.. option:: --disable-executable-static--   (default) Do not build fully static executables.--.. option:: --configure-option=str--    An extra option to an external ``configure`` script, if one is used-    (see the section on `system-dependent-    parameters <developing-packages.html#system-dependent-parameters>`__).-    There can be several of these options.--.. option:: --extra-include-dirs[=dir]--    An extra directory to search for C header files. You can use this-    flag multiple times to get a list of directories.--    You might need to use this flag if you have standard system header-    files in a non-standard location that is not mentioned in the-    package's ``.cabal`` file. Using this option has the same affect as-    appending the directory *dir* to the ``include-dirs`` field in each-    library and executable in the package's ``.cabal`` file. The-    advantage of course is that you do not have to modify the package at-    all. These extra directories will be used while building the package-    and for libraries it is also saved in the package registration-    information and used when compiling modules that use the library.--.. option:: --extra-lib-dirs[=dir]--    An extra directory to search for system libraries files. You can use-    this flag multiple times to get a list of directories.--.. option:: --extra-framework-dirs[=dir]--    An extra directory to search for frameworks (OS X only). You can use-    this flag multiple times to get a list of directories.--    You might need to use this flag if you have standard system-    libraries in a non-standard location that is not mentioned in the-    package's ``.cabal`` file. Using this option has the same affect as-    appending the directory *dir* to the ``extra-lib-dirs`` field in-    each library and executable in the package's ``.cabal`` file. The-    advantage of course is that you do not have to modify the package at-    all. These extra directories will be used while building the package-    and for libraries it is also saved in the package registration-    information and used when compiling modules that use the library.--.. option:: --dependency[=pkgname=ipid]--    Specify that a particular dependency should used for a particular-    package name. In particular, it declares that any reference to-    *pkgname* in a :pkg-field:`build-depends` should be resolved to-    *ipid*.--.. option:: --exact-configuration--    This changes Cabal to require every dependency be explicitly-    specified using :option:`--dependency`, rather than use Cabal's (very-    simple) dependency solver. This is useful for programmatic use of-    Cabal's API, where you want to error if you didn't specify enough-    :option:`--dependency` flags.--.. option:: --allow-newer[=pkgs], --allow-older[=pkgs]--    Selectively relax upper or lower bounds in dependencies without-    editing the package description respectively.--    The following description focuses on upper bounds and the-    :option:`--allow-newer` flag, but applies analogously to-    :option:`--allow-older` and lower bounds. :option:`--allow-newer`-    and :option:`--allow-older` can be used at the same time.--    If you want to install a package A that depends on B >= 1.0 && <-    2.0, but you have the version 2.0 of B installed, you can compile A-    against B 2.0 by using ``cabal install --allow-newer=B A``. This-    works for the whole package index: if A also depends on C that in-    turn depends on B < 2.0, C's dependency on B will be also relaxed.--    Example:--    ::--        $ cd foo-        $ cabal configure-        Resolving dependencies...-        cabal: Could not resolve dependencies:-        [...]-        $ cabal configure --allow-newer-        Resolving dependencies...-        Configuring foo...--    Additional examples:--    ::--        # Relax upper bounds in all dependencies.-        $ cabal install --allow-newer foo--        # Relax upper bounds only in dependencies on bar, baz and quux.-        $ cabal install --allow-newer=bar,baz,quux foo--        # Relax the upper bound on bar and force bar==2.1.-        $ cabal install --allow-newer=bar --constraint="bar==2.1" foo--    It's also possible to limit the scope of :option:`--allow-newer` to single-    packages with the ``--allow-newer=scope:dep`` syntax. This means-    that the dependency on ``dep`` will be relaxed only for the package-    ``scope``.--    Example:--    ::--        # Relax upper bound in foo's dependency on base; also relax upper bound in-        # every package's dependency on lens.-        $ cabal install --allow-newer=foo:base,lens--        # Relax upper bounds in foo's dependency on base and bar's dependency-        # on time; also relax the upper bound in the dependency on lens specified by-        # any package.-        $ cabal install --allow-newer=foo:base,lens --allow-newer=bar:time--    Finally, one can enable :option:`--allow-newer` permanently by setting-    ``allow-newer: True`` in the ``~/.cabal/config`` file. Enabling-    'allow-newer' selectively is also supported in the config file-    (``allow-newer: foo, bar, baz:base``).--.. option:: --constraint=constraint--    Restrict solutions involving a package to given version-    bounds, flag settings, and other properties. For example, to-    consider only install plans that use version 2.1 of ``bar``-    or do not use ``bar`` at all, write:--    ::--        $ cabal install --constraint="bar == 2.1"--    Version bounds have the same syntax as :pkg-field:`build-depends`.-    As a special case, the following prevents ``bar`` from being-    used at all:--    ::--        # Note: this is just syntax sugar for '> 1 && < 1', and is-        # supported by build-depends.-        $ cabal install --constraint="bar -none"--    You can also specify flag assignments:--    ::--        # Require bar to be installed with the foo flag turned on and-        # the baz flag turned off.-        $ cabal install --constraint="bar +foo -baz"--    To specify multiple constraints, you may pass the-    ``constraint`` option multiple times.--    There are also some more specialized constraints, which most people-    don't generally need:--    ::--        # Require that a version of bar be used that is already installed in-        # the global package database.-        $ cabal install --constraint="bar installed"--        # Require the local source copy of bar to be used.-        # (Note: By default, if we have a local package we will-        # automatically use it, so it will generally not be necessary to-        # specify this.)-        $ cabal install --constraint="bar source"--        # Require that bar have test suites and benchmarks enabled.-        $ cabal install --constraint="bar test" --constraint="bar bench"--    By default, constraints only apply to build dependencies-    (:pkg-field:`build-depends`), build dependencies of build-    dependencies, and so on. Constraints normally do not apply to-    dependencies of the ``Setup.hs`` script of any package-    (:pkg-field:`setup-depends`) nor do they apply to build tools-    (:pkg-field:`build-tool-depends`) or the dependencies of build-    tools. To explicitly apply a constraint to a setup or build-    tool dependency, you can add a qualifier to the constraint as-    follows:--    ::--        # Example use of the 'any' qualifier. This constraint-        # applies to package bar anywhere in the dependency graph.-        $ cabal install --constraint="any.bar == 1.0"--    ::--        # Example uses of 'setup' qualifiers.--        # This constraint applies to package bar when it is a-        # dependency of any Setup.hs script.-        $ cabal install --constraint="setup.bar == 1.0"--        # This constraint applies to package bar when it is a-        # dependency of the Setup.hs script of package foo.-        $ cabal install --constraint="foo:setup.bar == 1.0"--    ..  TODO: Uncomment this example once we decide on a syntax for 'exe'.-    ..  # Example use of the 'exe' (executable build tool)-        # qualifier. This constraint applies to package baz when it-        # is a dependency of the build tool bar being used to-        # build package foo.-        $ cabal install --constraint="foo:bar:exe.baz == 1.0"--.. option:: --preference=preference--    Specify a soft constraint on versions of a package. The solver will-    attempt to satisfy these preferences on a "best-effort" basis.--.. option:: --disable-response-files--    Enable workaround for older versions of programs such as ``ar`` or-    ``ld`` that do not support response file arguments (i.e. ``@file``-    arguments). You may want this flag only if you specify custom ar-    executable. For system ``ar`` or the one bundled with ``ghc`` on-    Windows the ``cabal`` should do the right thing and hence should-    normally not require this flag.--.. _setup-build:--setup build--------------Perform any preprocessing or compilation needed to make this package-ready for installation.--This command takes the following options:--.. program:: setup build--.. option:: --prog-options=options, --prog-option=option--    These are mostly the same as the `options configure-    step <#setup-configure>`__. Unlike the options specified at the-    configure step, any program options specified at the build step are-    not persistent but are used for that invocation only. They options-    specified at the build step are in addition not in replacement of-    any options specified at the configure step.--.. _setup-haddock:--setup haddock----------------.. program:: setup haddock--Build the documentation for the package using Haddock_.-By default, only the documentation for the exposed modules is generated-(but see the :option:`--executables` and :option:`--internal` flags below).--This command takes the following options:--.. option:: --hoogle--    Generate a file ``dist/doc/html/``\ *pkgid*\ ``.txt``, which can be-    converted by Hoogle_ into a-    database for searching. This is equivalent to running Haddock_-    with the ``--hoogle`` flag.--.. option:: --html-location=url--    Specify a template for the location of HTML documentation for-    prerequisite packages. The substitutions (`see-    listing <#paths-in-the-simple-build-system>`__) are applied to the-    template to obtain a location for each package, which will be used-    by hyperlinks in the generated documentation. For example, the-    following command generates links pointing at Hackage_ pages:--        setup haddock-        --html-location='http://hackage.haskell.org/packages/archive/$pkg/latest/doc/html'--    Here the argument is quoted to prevent substitution by the shell. If-    this option is omitted, the location for each package is obtained-    using the package tool (e.g. ``ghc-pkg``).--.. option:: --executables--    Also run Haddock_ for the modules of all the executable programs. By default-    Haddock_ is run only on the exported modules.--.. option:: --internal--    Run Haddock_ for the all-    modules, including unexposed ones, and make-    Haddock_ generate documentation-    for unexported symbols as well.--.. option:: --css=path--    The argument *path* denotes a CSS file, which is passed to-    Haddock_ and used to set the-    style of the generated documentation. This is only needed to-    override the default style that-    Haddock_ uses.--.. option:: --hyperlink-source--    Generate Haddock_ documentation integrated with HsColour_ . First,-    HsColour_ is run to generate colourised code. Then Haddock_ is run to-    generate HTML documentation. Each entity shown in the documentation is-    linked to its definition in the colourised code.--.. option:: --hscolour-css=path--    The argument *path* denotes a CSS file, which is passed to HsColour_ as in--        runhaskell Setup.hs hscolour --css=*path*--.. _setup-hscolour:--setup hscolour-----------------Produce colourised code in HTML format using HsColour_. Colourised code for-exported modules is put in ``dist/doc/html/``\ *pkgid*\ ``/src``.--This command takes the following options:--.. program:: setup hscolour--.. option:: --executables--    Also run HsColour_ on the sources of all executable programs. Colourised-    code is put in ``dist/doc/html/``\ *pkgid*/*executable*\ ``/src``.--.. option:: --css=path--    Use the given CSS file for the generated HTML files. The CSS file-    defines the colours used to colourise code. Note that this copies-    the given CSS file to the directory with the generated HTML files-    (renamed to ``hscolour.css``) rather than linking to it.--.. _setup-install:--setup install----------------.. program:: setup install--Copy the files into the install locations and (for library packages)-register the package with the compiler, i.e. make the modules it-contains available to programs.--The `install locations <#installation-paths>`__ are determined by-options to `setup configure`_.--This command takes the following options:--.. option:: --global--    Register this package in the system-wide database. (This is the-    default, unless the :option:`setup configure --user` option was supplied-    to the ``configure`` command.)--.. option:: --user--    Register this package in the user's local package database. (This is-    the default if the :option:`setup configure --user` option was supplied-    to the ``configure`` command.)--.. _setup-copy:--setup copy-------------Copy the files without registering them. This command is mainly of use-to those creating binary packages.--This command takes the following option:--.. program:: setup copy--.. option:: --destdir=path--   Specify the directory under which to place installed files. If this is-   not given, then the root directory is assumed.--.. _setup-register:--setup register-----------------Register this package with the compiler, i.e. make the modules it-contains available to programs. This only makes sense for library-packages. Note that the ``install`` command incorporates this action.-The main use of this separate command is in the post-installation step-for a binary package.--This command takes the following options:--.. program:: setup register--.. option:: --global--    Register this package in the system-wide database. (This is the-    default.)--.. option:: --user--    Register this package in the user's local package database.--.. option:: --gen-script--    Instead of registering the package, generate a script containing-    commands to perform the registration. On Unix, this file is called-    ``register.sh``, on Windows, ``register.bat``. This script might be-    included in a binary bundle, to be run after the bundle is unpacked-    on the target system.--.. option:: --gen-pkg-config[=path]--    Instead of registering the package, generate a package registration-    file (or directory, in some circumstances). This only applies to-    compilers that support package registration files which at the-    moment is only GHC. The file should be used with the compiler's-    mechanism for registering packages. This option is mainly intended-    for packaging systems. If possible use the :option:`--gen-script` option-    instead since it is more portable across Haskell implementations.-    The *path* is optional and can be used to specify a particular-    output file to generate. Otherwise, by default the file is the-    package name and version with a ``.conf`` extension.--    This option outputs a directory if the package requires multiple-    registrations: this can occur if internal/convenience libraries are-    used. These configuration file names are sorted so that they can be-    registered in order.--.. option:: --inplace--    Registers the package for use directly from the build tree, without-    needing to install it. This can be useful for testing: there's no-    need to install the package after modifying it, just recompile and-    test.--    This flag does not create a build-tree-local package database. It-    still registers the package in one of the user or global databases.--    However, there are some caveats. It only works with GHC (currently).-    It only works if your package doesn't depend on having any-    supplemental files installed --- plain Haskell libraries should be-    fine.--.. _setup-unregister:--setup unregister-------------------.. program:: setup unregister--Deregister this package with the compiler.--This command takes the following options:--.. option:: --global--    Deregister this package in the system-wide database. (This is the-    default.)--.. option:: --user--    Deregister this package in the user's local package database.--.. option:: --gen-script--    Instead of deregistering the package, generate a script containing-    commands to perform the deregistration. On Unix, this file is called-    ``unregister.sh``, on Windows, ``unregister.bat``. This script might-    be included in a binary bundle, to be run on the target system.--.. _setup-clean:--setup clean--------------Remove any local files created during the ``configure``, ``build``,-``haddock``, ``register`` or ``unregister`` steps, and also any files-and directories listed in the :pkg-field:`extra-tmp-files` field.--This command takes the following options:--.. program:: setup clean--.. option:: --save-configure, -s--    Keeps the configuration information so it is not necessary to run-    the configure step again before building.--.. _setup-test:--setup test-------------Run the test suites specified in the package description file. Aside-from the following flags, Cabal accepts the name of one or more test-suites on the command line after ``test``. When supplied, Cabal will run-only the named test suites, otherwise, Cabal will run all test suites in-the package.--.. program:: setup test--.. option:: --builddir=dir--    The directory where Cabal puts generated build files (default:-    ``dist``). Test logs will be located in the ``test`` subdirectory.--.. option:: --human-log=path--    The template used to name human-readable test logs; the path is-    relative to ``dist/test``. By default, logs are named according to-    the template ``$pkgid-$test-suite.log``, so that each test suite-    will be logged to its own human-readable log file. Template-    variables allowed are: ``$pkgid``, ``$compiler``, ``$os``,-    ``$arch``, ``$abi``, ``$abitag``, ``$test-suite``, and ``$result``.--.. option:: --machine-log=path--    The path to the machine-readable log, relative to ``dist/test``. The-    default template is ``$pkgid.log``. Template variables allowed are:-    ``$pkgid``, ``$compiler``, ``$os``, ``$arch``, ``$abi``, ``$abitag``-    and ``$result``.--.. option:: --show-details=filter--    Determines if the results of individual test cases are shown on the-    terminal. May be ``always`` (always show), ``never`` (never show),-    ``failures`` (show only failed results), or ``streaming`` (show all-    results in real time).--.. option:: --test-options=options-    Give extra options to the test executables.--.. option:: --test-option=option--    Give an extra option to the test executables. There is no need to-    quote options containing spaces because a single option is assumed,-    so options will not be split on spaces.--.. option:: --test-wrapper=path--   The wrapper script/application used to setup and tear down the test-   execution context. The text executable path and test arguments are-   passed as arguments to the wrapper and it is expected that the wrapper-   will return the test's return code, as well as a copy of stdout/stderr.--.. _setup-bench:--setup bench--------------Run the benchmarks specified in the package description file. Aside-from the following flags, Cabal accepts the name of one or more benchmarks-on the command line after ``bench``. When supplied, Cabal will run-only the named benchmarks, otherwise, Cabal will run all benchmarks in-the package.--.. option:: --benchmark-options=options-    Give extra options to the benchmark executables.--.. option:: --benchmark-option=option--    Give an extra option to the benchmark executables. There is no need to-    quote options containing spaces because a single option is assumed,-    so options will not be split on spaces.--.. _setup-sdist:--setup sdist--------------Create a system- and compiler-independent source distribution in a file-*package*-*version*\ ``.tar.gz`` in the ``dist`` subdirectory, for-distribution to package builders. When unpacked, the commands listed in-this section will be available.--The files placed in this distribution are the package description file,-the setup script, the sources of the modules named in the package-description file, and files named in the ``license-file``, ``main-is``,-``c-sources``, ``asm-sources``, ``cmm-sources``, ``js-sources``,-``data-files``, ``extra-source-files`` and ``extra-doc-files`` fields.--This command takes the following option:--.. program:: setup sdist--.. option:: --snapshot--    Append today's date (in "YYYYMMDD" format) to the version number for-    the generated source package. The original package is unaffected.---.. include:: references.inc+Environment variables+---------------------++Various environment variables affect ``cabal-install``.++``CABAL_CONFIG``+   The variable to find global configuration file.++``CABAL_DIR``+   Default content directory for ``cabal-install`` files.+   Default value is ``getAppUserDataDirectory "cabal"``, which is+   ``$HOME/.cabal`` on unix systems and ``%APPDATA%\cabal`` in Windows.++   .. note::++       The CABAL_DIR might be dropped in the future, when+       ``cabal-install`` starts to use XDG Directory specification.++``CABAL_BUILDDIR``+    The override for default ``dist`` build directory.+    Note, the nix-style builds build directory (``dist-newstyle``)+    is not affected by this environment variable.++Configuration file discovery+^^^^^^^^^^^^^^^^^^^^^^^^^^^^++1. If ``$CABAL_CONFIG`` is set use it,+2. otherwise if ``$CABAL_DIR`` is set use ``$CABAL_DIR/config``+3. otherwise use ``getAppUserDirectory "cabal"``++If the configuration file doesn't exist ``cabal-install``+will generate the default one, with directories based on+``$CABAL_DIR`` (if set) or ``getAppUserDirectory "cabal"`` prefix.++.. note:++    If ``$CABAL_CONFIG`` is set, but the file doesn't exist,+    one will be generated with ``$CABAL_DIR`` or ``getAppUserDirectory "cabal"``+    based prefixes. In other words not the prefixes based on a+    directory part of ``$CABAL_CONFIG`` path.++Repository specification+------------------------++An important part of the configuration is the specification of the+repository. When ``cabal`` creates a default config file, it configures+the repository to be the central Hackage server:++::++    repository hackage.haskell.org+      url: http://hackage.haskell.org/++The name of the repository is given on the first line, and can be+anything; packages downloaded from this repository will be cached under+``~/.cabal/packages/hackage.haskell.org`` (or whatever name you specify;+you can change the prefix by changing the value of+:cfg-field:`remote-repo-cache`). If you want, you can configure multiple+repositories, and ``cabal`` will combine them and be able to download+packages from any of them.++Using secure repositories+^^^^^^^^^^^^^^^^^^^^^^^^^++For repositories that support the TUF security infrastructure (this+includes Hackage), you can enable secure access to the repository by+specifying:++::++    repository hackage.haskell.org+      url: http://hackage.haskell.org/+      secure: True+      root-keys: <root-key-IDs>+      key-threshold: <key-threshold>++The ``<root-key-IDs>`` and ``<key-threshold>`` values are used for+bootstrapping. As part of the TUF infrastructure the repository will+contain a file ``root.json`` (for instance,+http://hackage.haskell.org/root.json) which the client needs to do+verification. However, how can ``cabal`` verify the ``root.json`` file+*itself*? This is known as bootstrapping: if you specify a list of root+key IDs and a corresponding threshold, ``cabal`` will verify that the+downloaded ``root.json`` file has been signed with at least+``<key-threshold>`` keys from your set of ``<root-key-IDs>``.++You can, but are not recommended to, omit these two fields. In that case+``cabal`` will download the ``root.json`` field and use it without+verification. Although this bootstrapping step is then unsafe, all+subsequent access is secure (provided that the downloaded ``root.json``+was not tampered with). Of course, adding ``root-keys`` and+``key-threshold`` to your repository specification only shifts the+problem, because now you somehow need to make sure that the key IDs you+received were the right ones. How that is done is however outside the+scope of ``cabal`` proper.++More information about the security infrastructure can be found at+https://github.com/haskell/hackage-security.++Local no-index repositories+^^^^^^^^^^^^^^^^^^^^^^^^^^^++It's possible to use a directory of `.tar.gz` package files as a local package+repository.++::++    repository my-local-repository+      url: file+noindex:///absolute/path/to/directory++``cabal`` will construct the index automatically from the+``package-name-version.tar.gz`` files in the directory, and will use optional+corresponding ``package-name-version.cabal`` files as new revisions.++For example, if ``/absolute/path/to/directory`` looks like+::++    /absolute/path/to/directory/+        foo-0.1.0.0.tar.gz+        bar-0.2.0.0.tar.gz+        bar-0.2.0.0.cabal++then ``cabal`` will create an index with two packages:++- ``foo-0.1.0.0`` using the source and ``.cabal`` file inside+  ``foo-0.1.0.0.tar.gz``+- ``bar-0.2.0.0`` using the source inside ``bar-0.2.0.0.tar.gz``+  and ``bar-0.2.0.0.cabal``++The index is cached inside the given directory. If the directory is not+writable, you can append ``#shared-cache`` fragment to the URI,+then the cache will be stored inside the :cfg-field:`remote-repo-cache` directory.+The part of the path will be used to determine the cache key part.++.. note::+    ``cabal-install`` creates a ``.cache`` file, and will aggressively use+    its contents if it exists. Therefore if you change the contents of+    the directory, remember to wipe the cache too.++.. note::+    The URI scheme ``file:`` is interpreted as a remote repository,+    as described in the previous sections, thus requiring manual construction+    of ``01-index.tar`` file.++Legacy repositories+^^^^^^^^^^^^^^^^^^^++Currently ``cabal`` supports single kind of “legacy” repositories.+It is specified using++::++    remote-repo: hackage.haskell.org:http://hackage.haskell.org/packages/archive++This is just syntactic sugar for++::++    repository hackage.haskell.org+      url: http://hackage.haskell.org/packages/archive++although, in (and only in) the specific case of Hackage, the URL+``http://hackage.haskell.org/packages/archive`` will be silently+translated to ``http://hackage.haskell.org/``.++Secure local repositories+^^^^^^^^^^^^^^^^^^^^^^^^^++If you want to use repositories on your local file system, it is+recommended instead to use a *secure* local repository:++::++    repository my-local-repo+      url: file:/path/to/local/repo+      secure: True+      root-keys: <root-key-IDs>+      key-threshold: <key-threshold>++The layout of these secure local repos matches the layout of remote+repositories exactly; the :hackage-pkg:`hackage-repo-tool`+can be used to create and manage such repositories.++.. _installing-packages:++Building and installing packages+================================++To be written++Installing packages from Hackage+--------------------------------++The ``cabal`` tool also can download, configure, build and install a+`Hackage`_ package and all of its+dependencies in a single step. To do this, run:++::++   $ cabal install [PACKAGE...]++To browse the list of available packages, visit the `Hackage`_ web site.++.. _Hackage: https://hackage.haskell.org/
doc/misc.rst view
@@ -60,7 +60,7 @@ example 1.2.3, indicate compatible API additions.  The Package Versioning Policy does not require any API guarantees-between major releases, for example between 1.2.x and 1.4.x. In practise+between major releases, for example between 1.2.x and 1.4.x. In practice of course not everything changes between major releases. Some parts of the API are more prone to change than others. The rest of this section gives some informal advice on what level of API stability you can expect
doc/nix-local-build-overview.rst view
@@ -1,11 +1,13 @@ Nix-style Local Builds ====================== +.. _nix-style-builds:+ Nix-style local builds are a new build system implementation inspired by Nix. The Nix-style local build system is commonly called "v2-build" for short after the ``cabal v2-*`` family of commands that control it. However, those-names are only temporary until Nix-style local builds become the default.-This is expected to happen soon. For those who do not wish to use the new+names are only temporary now that Nix-style local builds have become the+default. For those who do not wish to use the new functionality, the classic project style will not be removed immediately, but these legacy commands will require the usage of the ``v1-`` prefix as of Cabal 3.0 and will be removed in a future release. For a future-proof@@ -16,7 +18,7 @@  Nix-style local builds combine the best of non-sandboxed and sandboxed Cabal: -1. Like sandboxed Cabal today, we build sets of independent local+1. Like sandboxed Cabal previously, we build sets of independent local    packages deterministically and independent of any global state.    v2-build will never tell you that it can't build your package    because it would result in a "dangerous reinstall." Given a
doc/nix-local-build.rst view
@@ -118,2072 +118,147 @@ 1. A **local package** is one that is listed explicitly in the    ``packages``, ``optional-packages`` or ``extra-packages`` field of a    project. Usually, these refer to packages whose source code lives-   directly in a folder in your project (although, you can list an-   arbitrary Hackage package in ``extra-packages`` to force it to be-   treated as local).--Local packages, as well as the external packages (below) which depend on-them, are built **inplace**, meaning that they are always built-specifically for the project and are not installed globally. Inplace-packages are not cached and not given unique hashes, which makes them-suitable for packages which you want to edit and recompile.--2. An **external package** is any package which is not listed in the-   ``packages`` field. The source code for external packages is usually-   retrieved from Hackage.--When an external package does not depend on an inplace package, it can-be built and installed to a **global** store, which can be shared across-projects. These build products are identified by a hash that over all of-the inputs which would influence the compilation of a package (flags,-dependency selection, etc.). Just as in Nix, these hashes uniquely-identify the result of a build; if we compute this identifier and we-find that we already have this ID built, we can just use the already-built version.--The global package store is ``~/.cabal/store`` (configurable via-global `store-dir` option); if you need to clear your store for-whatever reason (e.g., to reclaim disk space or because the global-store is corrupted), deleting this directory is safe (``v2-build``-will just rebuild everything it needs on its next invocation).--This split motivates some of the UI choices for Nix-style local build-commands. For example, flags passed to ``cabal v2-build`` are only-applied to *local* packages, so that adding a flag to-``cabal v2-build`` doesn't necessitate a rebuild of *every* transitive-dependency in the global package store.--In cabal-install 2.0 and above, Nix-style local builds also take advantage of a-new Cabal library feature, `per-component-builds <https://github.com/ezyang/ghc-proposals/blob/master/proposals/0000-componentized-cabal.rst>`__,-where each component of a package is configured and built separately.-This can massively speed up rebuilds of packages with lots of components-(e.g., a package that defines multiple executables), as only one-executable needs to be rebuilt. Packages that use Custom setup scripts-are not currently built on a per-component basis.--Where are my build products?-------------------------------A major deficiency in the current implementation of v2-build is that-there is no programmatic way to access the location of build products.-The location of the build products is intended to be an internal-implementation detail of v2-build, but we also understand that many-unimplemented features can only be reasonably worked around by-accessing build products directly.--The location where build products can be found varies depending on the-version of cabal-install:---  In cabal-install-1.24, the dist directory for a package ``p-0.1`` is-   stored in ``dist-newstyle/build/p-0.1``. For example, if you built an-   executable or test suite named ``pexe``, it would be located at-   ``dist-newstyle/build/p-0.1/build/pexe/pexe``.---  In cabal-install-2.0, the dist directory for a package ``p-0.1``-   defining a library built with GHC 8.0.1 on 64-bit Linux is-   ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1``. When-   per-component builds are enabled (any non-Custom package), a-   subcomponent like an executable or test suite named ``pexe`` will be-   stored at-   ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe``; thus,-   the full path of the executable is-   ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe/build/pexe/pexe``-   (you can see why we want this to be an implementation detail!)--- In cabal-install-2.2 and above, the ``/c/`` part of the above path-   is replaced with one of ``/l/``, ``/x/``, ``/f/``, ``/t/``, or-   ``/b/``, depending on the type of component (sublibrary,-   executable, foreign library, test suite, or benchmark-   respectively). So the full path to an executable named ``pexe``-   compiled with GHC 8.0.1 on a 64-bit Linux is now-   ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/x/pexe/build/pexe/pexe``;-   for a benchmark named ``pbench`` it now is-   ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/b/pbench/build/pbench/pbench``;---The paths are a bit longer in 2.0 and above but the benefit is that you can-transparently have multiple builds with different versions of GHC. We-plan to add the ability to create aliases for certain build-configurations, and more convenient paths to access particularly useful-build products like executables.--Caching----------Nix-style local builds sport a robust caching system which help reduce-the time it takes to execute a rebuild cycle. While the details of how-``cabal-install`` does caching are an implementation detail and may-change in the future, knowing what gets cached is helpful for-understanding the performance characteristics of invocations to-``v2-build``. The cached intermediate results are stored in-``dist-newstyle/cache``; this folder can be safely deleted to clear the-cache.--The following intermediate results are cached in the following files in-this folder (the most important two are first):--``solver-plan`` (binary)-    The result of calling the dependency solver, assuming that the-    Hackage index, local ``cabal.project`` file, and local ``cabal``-    files are unmodified. (Notably, we do NOT have to dependency solve-    again if new build products are stored in the global store; the-    invocation of the dependency solver is independent of what is-    already available in the store.)-``source-hashes`` (binary)-    The hashes of all local source files. When all local source files of-    a local package are unchanged, ``cabal v2-build`` will skip-    invoking ``setup build`` entirely (saving us from a possibly-    expensive call to ``ghc --make``). The full list of source files-    participating in compilation are determined using-    ``setup sdist --list-sources`` (thus, if you do not list all your-    source files in a Cabal file, you may fail to recompile when you-    edit them.)-``config`` (same format as ``cabal.project``)-    The full project configuration, merged from ``cabal.project`` (and-    friends) as well as the command line arguments.-``compiler`` (binary)-    The configuration of the compiler being used to build the project.-``improved-plan`` (binary)-    Like ``solver-plan``, but with all non-inplace packages improved-    into pre-existing copies from the store.-``plan.json`` (JSON)-    A JSON serialization of the computed install plan intended-    for integrating ``cabal`` with external tooling.-    The `cabal-plan <http://hackage.haskell.org/package/cabal-plan>`__-    package provides a library for parsing ``plan.json`` files into a-    Haskell data structure as well as an example tool showing possible-    applications.--    .. todo::--        Document JSON schema (including version history of schema)---Note that every package also has a local cache managed by the Cabal-build system, e.g., in ``$distdir/cache``.--There is another useful file in ``dist-newstyle/cache``,-``plan.json``, which is a JSON serialization of the computed install-plan and is intended for integrating with external tooling.-----Commands-========--We now give an in-depth description of all the commands, describing the-arguments and flags they accept.--cabal v2-configure----------------------``cabal v2-configure`` takes a set of arguments and writes a-``cabal.project.local`` file based on the flags passed to this command.-``cabal v2-configure FLAGS; cabal new-build`` is roughly equivalent to-``cabal v2-build FLAGS``, except that with ``new-configure`` the flags-are persisted to all subsequent calls to ``v2-build``.--``cabal v2-configure`` is intended to be a convenient way to write out-a ``cabal.project.local`` for simple configurations; e.g.,-``cabal v2-configure -w ghc-7.8`` would ensure that all subsequent-builds with ``cabal v2-build`` are performed with the compiler-``ghc-7.8``. For more complex configuration, we recommend writing the-``cabal.project.local`` file directly (or placing it in-``cabal.project``!)--``cabal v2-configure`` inherits options from ``Cabal``. semantics:---  Any flag accepted by ``./Setup configure``.---  Any flag accepted by ``cabal configure`` beyond-   ``./Setup configure``, namely ``--cabal-lib-version``,-   ``--constraint``, ``--preference`` and ``--solver.``---  Any flag accepted by ``cabal install`` beyond ``./Setup configure``.---  Any flag accepted by ``./Setup haddock``.--The options of all of these flags apply only to *local* packages in a-project; this behavior is different than that of ``cabal install``,-which applies flags to every package that would be built. The motivation-for this is to avoid an innocuous addition to the flags of a package-resulting in a rebuild of every package in the store (which might need-to happen if a flag actually applied to every transitive dependency). To-apply options to an external package, use a ``package`` stanza in a-``cabal.project`` file.--cabal v2-update-------------------``cabal v2-update`` updates the state of the package index. If the-project contains multiple remote package repositories it will update-the index of all of them (e.g. when using overlays).--Some examples:--::--    $ cabal v2-update                  # update all remote repos-    $ cabal v2-update head.hackage     # update only head.hackage--cabal v2-build------------------``cabal v2-build`` takes a set of targets and builds them. It-automatically handles building and installing any dependencies of these-targets.--A target can take any of the following forms:---  A package target: ``package``, which specifies that all enabled-   components of a package to be built. By default, test suites and-   benchmarks are *not* enabled, unless they are explicitly requested-   (e.g., via ``--enable-tests``.)---  A component target: ``[package:][ctype:]component``, which specifies-   a specific component (e.g., a library, executable, test suite or-   benchmark) to be built.---  All packages: ``all``, which specifies all packages within the project.---  Components of a particular type: ``package:ctypes``, ``all:ctypes``:-   which specifies all components of the given type. Where valid-   ``ctypes`` are:-     - ``libs``, ``libraries``,-     - ``flibs``, ``foreign-libraries``,-     - ``exes``, ``executables``,-     - ``tests``,-     - ``benches``, ``benchmarks``.--In component targets, ``package:`` and ``ctype:`` (valid component types-are ``lib``, ``flib``, ``exe``, ``test`` and ``bench``) can be used to-disambiguate when multiple packages define the same component, or the-same component name is used in a package (e.g., a package ``foo``-defines both an executable and library named ``foo``). We always prefer-interpreting a target as a package name rather than as a component name.--Some example targets:--::--    $ cabal v2-build lib:foo-pkg       # build the library named foo-pkg-    $ cabal v2-build foo-pkg:foo-tests # build foo-tests in foo-pkg--(There is also syntax for specifying module and file targets, but it-doesn't currently do anything.)--Beyond a list of targets, ``cabal v2-build`` accepts all the flags that-``cabal v2-configure`` takes. Most of these flags are only taken into-consideration when building local packages; however, some flags may-cause extra store packages to be built (for example,-``--enable-profiling`` will automatically make sure profiling libraries-for all transitive dependencies are built and installed.)--In addition ``cabal v2-build`` accepts these flags:--- ``--only-configure``: When given we will forgoe performing a full build and-  abort after running the configure phase of each target package.---cabal v2-repl-----------------``cabal v2-repl TARGET`` loads all of the modules of the target into-GHCi as interpreted bytecode. In addition to ``cabal v2-build``'s flags,-it takes an additional ``--repl-options`` flag.--To avoid ``ghci`` specific flags from triggering unneeded global rebuilds these-flags are now stripped from the internal configuration. As a result-``--ghc-options`` will no longer (reliably) work to pass flags to ``ghci`` (or-other repls). Instead, you should use the new ``--repl-options`` flag to-specify these options to the invoked repl. (This flag also works on ``cabal-repl`` and ``Setup repl`` on sufficiently new versions of Cabal.)--Currently, it is not supported to pass multiple targets to ``v2-repl``-(``v2-repl`` will just successively open a separate GHCi session for-each target.)--It also provides a way to experiment with libraries without needing to download-them manually or to install them globally.--This command opens a REPL with the current default target loaded, and a version-of the ``vector`` package matching that specification exposed.--::--    $ cabal v2-repl --build-depends "vector >= 0.12 && < 0.13"--Both of these commands do the same thing as the above, but only exposes ``base``,-``vector``, and the ``vector`` package's transitive dependencies even if the user-is in a project context.--::--    $ cabal v2-repl --ignore-project --build-depends "vector >= 0.12 && < 0.13"-    $ cabal v2-repl --project='' --build-depends "vector >= 0.12 && < 0.13"--This command would add ``vector``, but not (for example) ``primitive``, because-it only includes the packages specified on the command line (and ``base``, which-cannot be excluded for technical reasons).--::--    $ cabal v2-repl --build-depends vector --no-transitive-deps--cabal v2-run----------------``cabal v2-run [TARGET [ARGS]]`` runs the executable specified by the-target, which can be a component, a package or can be left blank, as-long as it can uniquely identify an executable within the project.-Tests and benchmarks are also treated as executables.--See `the v2-build section <#cabal-new-build>`__ for the target syntax.--Except in the case of the empty target, the strings after it will be-passed to the executable as arguments.--If one of the arguments starts with ``-`` it will be interpreted as-a cabal flag, so if you need to pass flags to the executable you-have to separate them with ``--``.--::--    $ cabal v2-run target -- -a -bcd --argument--'v2-run' also supports running script files that use a certain format. With-a script that looks like:--::--    #!/usr/bin/env cabal-    {- cabal:-    build-depends: base ^>= 4.11-                , shelly ^>= 1.8.1-    -}--    main :: IO ()-    main = do-        ...--It can either be executed like any other script, using ``cabal`` as an-interpreter, or through this command:--::--    $ cabal v2-run script.hs-    $ cabal v2-run script.hs -- --arg1 # args are passed like this--cabal v2-freeze-------------------``cabal v2-freeze`` writes out a **freeze file** which records all of-the versions and flags which that are picked by the solver under the-current index and flags.  Default name of this file is-``cabal.project.freeze`` but in combination with a-``--project-file=my.project`` flag (see :ref:`project-file-<cmdoption-project-file>`)-the name will be ``my.project.freeze``.-A freeze file has the same syntax as ``cabal.project`` and looks-something like this:--.. highlight:: cabal--::--    constraints: HTTP ==4000.3.3,-                 HTTP +warp-tests -warn-as-error -network23 +network-uri -mtl1 -conduit10,-                 QuickCheck ==2.9.1,-                 QuickCheck +templatehaskell,-                 -- etc...---For end-user executables, it is recommended that you distribute the-``cabal.project.freeze`` file in your source repository so that all-users see a consistent set of dependencies. For libraries, this is not-recommended: users often need to build against different versions of-libraries than what you developed against.--cabal v2-bench------------------``cabal v2-bench [TARGETS] [OPTIONS]`` runs the specified benchmarks-(all the benchmarks in the current package by default), first ensuring-they are up to date.--cabal v2-test-----------------``cabal v2-test [TARGETS] [OPTIONS]`` runs the specified test suites-(all the test suites in the current package by default), first ensuring-they are up to date.--cabal v2-haddock--------------------``cabal v2-haddock [FLAGS] [TARGET]`` builds Haddock documentation for-the specified packages within the project.--If a target is not a library :cfg-field:`haddock-benchmarks`,-:cfg-field:`haddock-executables`, :cfg-field:`haddock-internal`,-:cfg-field:`haddock-tests` will be implied as necessary.--cabal v2-exec------------------``cabal v2-exec [FLAGS] [--] COMMAND [--] [ARGS]`` runs the specified command-using the project's environment. That is, passing the right flags to compiler-invocations and bringing the project's executables into scope.--cabal v2-install--------------------``cabal v2-install [FLAGS] PACKAGES`` builds the specified packages and-symlinks/copies their executables in ``installdir`` (usually ``~/.cabal/bin``).--For example this command will build the latest ``cabal-install`` and symlink-its ``cabal`` executable:--::--    $ cabal v2-install cabal-install--In addition, it's possible to use ``cabal v2-install`` to install components-of a local project. For example, with an up-to-date Git clone of the Cabal-repository, this command will build cabal-install HEAD and symlink the-``cabal`` executable:--::--    $ cabal v2-install exe:cabal--Where symlinking is not possible (eg. on Windows), ``--install-method=copy``-can be used:--::--    $ cabal v2-install exe:cabal --install-method=copy --installdir=~/bin--Note that copied executables are not self-contained, since they might use-data-files from the store.--It is also possible to "install" libraries using the ``--lib`` flag. For-example, this command will build the latest Cabal library and install it:--::--    $ cabal v2-install --lib Cabal--This works by managing GHC environments. By default, it is writing to the-global environment in ``~/.ghc/$ARCH-$OS-$GHCVER/environments/default``.-``v2-install`` provides the ``--package-env`` flag to control which of-these environments is modified.--This command will modify the environment file in the current directory:--::--    $ cabal v2-install --lib Cabal --package-env .--This command will modify the environment file in the ``~/foo`` directory:--::--    $ cabal v2-install --lib Cabal --package-env foo/--Do note that the results of the previous two commands will be overwritten by-the use of other v2-style commands, so it is not recommended to use them inside-a project directory.--This command will modify the environment in the "local.env" file in the-current directory:--::--    $ cabal v2-install --lib Cabal --package-env local.env--This command will modify the ``myenv`` named global environment:--::--    $ cabal v2-install --lib Cabal --package-env myenv--If you wish to create a named environment file in the current directory where-the name does not contain an extension, you must reference it as ``./myenv``.--You can learn more about how to use these environments in `this section of the-GHC manual <https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/packages.html#package-environments>`_.--cabal v2-clean------------------``cabal v2-clean [FLAGS]`` cleans up the temporary files and build artifacts-stored in the ``dist-newstyle`` folder.--By default, it removes the entire folder, but it can also spare the configuration-and caches if the ``--save-config`` option is given, in which case it only removes-the build artefacts (``.hi``, ``.o`` along with any other temporary files generated-by the compiler, along with the build output).--cabal v2-sdist------------------``cabal v2-sdist [FLAGS] [TARGETS]`` takes the crucial files needed to build ``TARGETS``-and puts them into an archive format ready for upload to Hackage. These archives are stable-and two archives of the same format built from the same source will hash to the same value.--``cabal v2-sdist`` takes the following flags:--- ``-l``, ``--list-only``: Rather than creating an archive, lists files that would be included.-  Output is to ``stdout`` by default. The file paths are relative to the project's root-  directory.--- ``-o``, ``--output-dir``: Sets the output dir, if a non-default one is desired. The default is-  ``dist-newstyle/sdist/``. ``--output-dir -`` will send output to ``stdout``-  unless multiple archives are being created.--- ``-z``, ``--null``: Only used with ``--list-only``. Separates filenames with a NUL-  byte instead of newlines.--``v2-sdist`` is inherently incompatible with sdist hooks, not due to implementation but due-to fundamental core invariants (same source code should result in the same tarball, byte for-byte) that must be satisfied for it to function correctly in the larger v2-build ecosystem.-``autogen-modules`` is able to replace uses of the hooks to add generated modules, along with-the custom publishing of Haddock documentation to Hackage.--.. warning::--  Packages that use Backpack will stop working if uploaded to-  Hackage, due to `issue #6005 <https://github.com/haskell/cabal/issues/6005>`_.-  While this is happening, we recommend not uploading these packages-  to Hackage (and instead referencing the package directly-  as a ``source-repository-package``).--Configuring builds with cabal.project-=====================================--``cabal.project`` files support a variety of options which configure the-details of your build. The general syntax of a ``cabal.project`` file is-similar to that of a Cabal file: there are a number of fields, some of-which live inside stanzas:--::--    packages: */*.cabal-    with-compiler: /opt/ghc/8.0.1/bin/ghc--    package cryptohash-      optimization: False--In general, the accepted field names coincide with the accepted command-line flags that ``cabal install`` and other commands take. For example,-``cabal v2-configure --enable-profiling`` will write out a project-file with ``profiling: True``.--The full configuration of a project is determined by combining the-following sources (later entries override earlier ones):--1. ``~/.cabal/config`` (the user-wide global configuration)--2. ``cabal.project`` (the project configuration)--3. ``cabal.project.freeze`` (the output of ``cabal v2-freeze``)--4. ``cabal.project.local`` (the output of ``cabal v2-configure``)---Specifying the local packages--------------------------------The following top-level options specify what the local packages of a-project are:--.. cfg-field:: packages: package location list (space or comma separated)-    :synopsis: Project packages.--    :default: ``./*.cabal``--    Specifies the list of package locations which contain the local-    packages to be built by this project. Package locations can take the-    following forms:--    1. They can specify a Cabal file, or a directory containing a Cabal-       file, e.g., ``packages: Cabal cabal-install/cabal-install.cabal``.--    2. They can specify a glob-style wildcards, which must match one or-       more (a) directories containing a (single) Cabal file, (b) Cabal-       files (extension ``.cabal``), or (c) tarballs which contain Cabal-       packages (extension ``.tar.gz``).-       For example, to match all Cabal files in all-       subdirectories, as well as the Cabal projects in the parent-       directories ``foo`` and ``bar``, use-       ``packages: */*.cabal ../{foo,bar}/``--    3. They can specify an ``http``, ``https`` or ``file``-       URL, representing the path to a remote tarball to be downloaded-       and built.--    There is no command line variant of this field; see :issue:`3585`.--.. cfg-field:: optional-packages: package location list (space or comma-separated)-    :synopsis: Optional project packages.--    :default: ``./*/*.cabal``--    Like :cfg-field:`packages`, specifies a list of package locations-    containing local packages to be built. Unlike :cfg-field:`packages`,-    if we glob for a package, it is permissible for the glob to match against-    zero packages. The intended use-case for :cfg-field:`optional-packages`-    is to make it so that vendored packages can be automatically picked up if-    they are placed in a subdirectory, but not error if there aren't any.--    There is no command line variant of this field.--.. cfg-field:: extra-packages: package list with version bounds (comma separated)-    :synopsis: Adds external pacakges as local--    [STRIKEOUT:Specifies a list of external packages from Hackage which-    should be considered local packages.] (Not implemented)--    There is no command line variant of this field.----All local packages are *vendored*, in the sense that if other packages-(including external ones from Hackage) depend on a package with the name-of a local package, the local package is preferentially used.  This-motivates the default settings::--    packages: ./*.cabal-    optional-packages: ./*/*.cabal--...any package can be vendored simply by making a checkout in the-top-level project directory, as might be seen in this hypothetical-directory layout::--    foo.cabal-    foo-helper/     # local package-    unix/           # vendored external package--All of these options support globs. ``cabal v2-build`` has its own glob-format:---  Anywhere in a path, as many times as you like, you can specify an-   asterisk ``*`` wildcard. E.g., ``*/*.cabal`` matches all ``.cabal``-   files in all immediate subdirectories. Like in glob(7), asterisks do-   not match hidden files unless there is an explicit period, e.g.,-   ``.*/foo.cabal`` will match ``.private/foo.cabal`` (but-   ``*/foo.cabal`` will not).---  You can use braces to specify specific directories; e.g.,-   ``{vendor,pkgs}/*.cabal`` matches all Cabal files in the ``vendor``-   and ``pkgs`` subdirectories.--Formally, the format described by the following BNF:--.. todo::-    convert globbing grammar to proper ABNF_ syntax--.. code-block:: abnf--    FilePathGlob    ::= FilePathRoot FilePathGlobRel-    FilePathRoot    ::= {- empty -}        # relative to cabal.project-                      | "/"                # Unix root-                      | [a-zA-Z] ":" [/\\] # Windows root-                      | "~"                # home directory-    FilePathGlobRel ::= Glob "/"  FilePathGlobRel # Unix directory-                      | Glob "\\" FilePathGlobRel # Windows directory-                      | Glob         # file-                      | {- empty -}  # trailing slash-    Glob      ::= GlobPiece *-    GlobPiece ::= "*"            # wildcard-                | [^*{},/\\] *   # literal string-                | "\\" [*{},]    # escaped reserved character-                | "{" Glob "," ... "," Glob "}" # union (match any of these)---Specifying Packages from Remote Version Control Locations-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--Starting with Cabal 2.4, there is now a stanza-``source-repository-package`` for specifying packages from an external-version control which supports the following fields:--- :pkg-field:`source-repository:type`-- :pkg-field:`source-repository:location`-- :pkg-field:`source-repository:tag`-- :pkg-field:`source-repository:subdir`--A simple example is shown below:--.. code-block:: cabal--    packages: .--    source-repository-package-        type: git-        location: https://github.com/hvr/HsYAML.git-        tag: e70cf0c171c9a586b62b3f75d72f1591e4e6aaa1--    source-repository-package-        type: git-        location: https://github.com/well-typed/cborg-        tag: 3d274c14ca3077c3a081ba7ad57c5182da65c8c1-        subdir: cborg--Global configuration options-------------------------------The following top-level configuration options are not specific to any-package, and thus apply globally:---.. cfg-field:: verbose: nat-               --verbose=n, -vn-    :synopsis: Build verbosity level.--    :default: 1--    Control the verbosity of ``cabal`` commands, valid values are from 0-    to 3.--    The command line variant of this field is ``--verbose=2``; a short-    form ``-v2`` is also supported.--.. cfg-field:: jobs: nat or $ncpus-               --jobs=n, -jn, --jobs=$ncpus-    :synopsis: Number of builds running in parallel.--    :default: 1--    Run *nat* jobs simultaneously when building. If ``$ncpus`` is-    specified, run the number of jobs equal to the number of CPUs.-    Package building is often quite parallel, so turning on parallelism-    can speed up build times quite a bit!--    The command line variant of this field is ``--jobs=2``; a short form-    ``-j2`` is also supported; a bare ``--jobs`` or ``-j`` is equivalent-    to ``--jobs=$ncpus``.--.. cfg-field::  keep-going: boolean-                --keep-going-    :synopsis: Try to continue building on failure.--    :default: False--    If true, after a build failure, continue to build other unaffected-    packages.--    The command line variant of this field is ``--keep-going``.--.. option:: --builddir=DIR--    Specifies the name of the directory where build products for-    build will be stored; defaults to ``dist-newstyle``.  If a-    relative name is specified, this directory is resolved relative-    to the root of the project (i.e., where the ``cabal.project``-    file lives.)--    This option cannot be specified via a ``cabal.project`` file.--.. _cmdoption-project-file:-.. option:: --project-file=FILE--    Specifies the name of the project file used to specify the-    rest of the top-level configuration; defaults to ``cabal.project``.-    This name not only specifies the name of the main project file,-    but also the auxiliary project files ``cabal.project.freeze``-    and ``cabal.project.local``; for example, if you specify-    ``--project-file=my.project``, then the other files that will-    be probed are ``my.project.freeze`` and ``my.project.local``.--    If the specified project file is a relative path, we will-    look for the file relative to the current working directory,-    and then for the parent directory, until the project file is-    found or we have hit the top of the user's home directory.--    This option cannot be specified via a ``cabal.project`` file.--.. option:: --store-dir=DIR--    Specifies the name of the directory of the global package store.--Solver configuration options-------------------------------The following settings control the behavior of the dependency solver:--.. cfg-field:: constraints: constraints list (comma separated)-               --constraint="pkg >= 2.0"-    :synopsis: Extra dependencies constraints.--    Add extra constraints to the version bounds, flag settings,-    and other properties a solver can pick for a-    package. For example:--    ::--        constraints: bar == 2.1--    A package can be specified multiple times in ``constraints``, in-    which case the specified constraints are intersected. This is-    useful, since the syntax does not allow you to specify multiple-    constraints at once. For example, to specify both version bounds and-    flag assignments, you would write:--    ::--        constraints: bar == 2.1,-                     bar +foo -baz--    Valid constraints take the same form as for the `constraint-    command line option-    <installing-packages.html#cmdoption-setup-configure-constraint>`__.--.. cfg-field:: preferences: preference (comma separated)-               --preference="pkg >= 2.0"-    :synopsis: Prefered dependency versions.--    Like :cfg-field:`constraints`, but the solver will attempt to satisfy-    these preferences on a best-effort basis. The resulting install is locally-    optimal with respect to preferences; specifically, no single package-    could be replaced with a more preferred version that still satisfies-    the hard constraints.--    Operationally, preferences can cause the solver to attempt certain-    version choices of a package before others, which can improve-    dependency solver runtime.--    One way to use :cfg-field:`preferences` is to take a known working set of-    constraints (e.g., via ``cabal v2-freeze``) and record them as-    preferences. In this case, the solver will first attempt to use this-    configuration, and if this violates hard constraints, it will try to-    find the minimal number of upgrades to satisfy the hard constraints-    again.--    The command line variant of this field is-    ``--preference="pkg >= 2.0"``; to specify multiple preferences, pass-    the flag multiple times.--.. cfg-field:: allow-newer: none, all or list of scoped package names (space or comma separated)-               --allow-newer, --allow-newer=[none,all,[scope:][^]pkg]-    :synopsis: Lift dependencies upper bound constraints.--    :default: ``none``--    Allow the solver to pick an newer version of some packages than-    would normally be permitted by than the :pkg-field:`build-depends` bounds-    of packages in the install plan. This option may be useful if the-    dependency solver cannot otherwise find a valid install plan.--    For example, to relax ``pkg``\ s :pkg-field:`build-depends` upper bound on-    ``dep-pkg``, write a scoped package name of the form:--    ::--        allow-newer: pkg:dep-pkg--    If the scope shall be limited to specific releases of ``pkg``, the-    extended form as in--    ::--        allow-newer: pkg-1.2.3:dep-pkg, pkg-1.1.2:dep-pkg--    can be used to limit the relaxation of dependencies on-    ``dep-pkg`` by the ``pkg-1.2.3`` and ``pkg-1.1.2`` releases only.--    The scoped syntax is recommended, as it is often only a single package-    whose upper bound is misbehaving. In this case, the upper bounds of-    other packages should still be respected; indeed, relaxing the bound-    can break some packages which test the selected version of packages.--    The syntax also allows to prefix the dependee package with a-    modifier symbol to modify the scope/semantic of the relaxation-    transformation in a additional ways. Currently only one modifier-    symbol is defined, i.e. ``^`` (i.e. caret) which causes the-    relaxation to be applied only to ``^>=`` operators and leave all other-    version operators untouched.--    However, in some situations (e.g., when attempting to build packages-    on a new version of GHC), it is useful to disregard *all*-    upper-bounds, with respect to a package or all packages. This can be-    done by specifying just a package name, or using the keyword ``all``-    to specify all packages:--    ::--        -- Disregard upper bounds involving the dependencies on-        -- packages bar, baz. For quux only, relax-        -- 'quux ^>= ...'-style constraints only.-        allow-newer: bar, baz, ^quux--        -- Disregard all upper bounds when dependency solving-        allow-newer: all--        -- Disregard all `^>=`-style upper bounds when dependency solving-        allow-newer: ^all---    For consistency, there is also the explicit wildcard scope syntax-    ``*`` (or its alphabetic synonym ``all``). Consequently, the-    examples above are equivalent to the explicitly scoped variants:--    ::--        allow-newer: all:bar, *:baz, *:^quux--        allow-newer: *:*-        allow-newer: all:all--        allow-newer: *:^*-        allow-newer: all:^all--    In order to ignore all bounds specified by a package ``pkg-1.2.3``-    you can combine scoping with a right-hand-side wildcard like so--    ::--        -- Disregard any upper bounds specified by pkg-1.2.3-        allow-newer: pkg-1.2.3:*--        -- Disregard only `^>=`-style upper bounds in pkg-1.2.3-        allow-newer: pkg-1.2.3:^*---    :cfg-field:`allow-newer` is often used in conjunction with a constraint-    (in the cfg-field:`constraints` field) forcing the usage of a specific,-    newer version of a package.--    The command line variant of this field is e.g. ``--allow-newer=bar``. A-    bare ``--allow-newer`` is equivalent to ``--allow-newer=all``.--.. cfg-field:: allow-older: none, all, list of scoped package names (space or comma separated)-               --allow-older, --allow-older=[none,all,[scope:][^]pkg]-    :synopsis: Lift dependency lower bound constraints.-    :since: 2.0--    :default: ``none``--    Like :cfg-field:`allow-newer`, but applied to lower bounds rather than-    upper bounds.--    The command line variant of this field is ``--allow-older=all``. A-    bare ``--allow-older`` is equivalent to ``--allow-older=all``.---.. cfg-field:: index-state: HEAD, unix-timestamp, ISO8601 UTC timestamp.-   :synopsis: Use source package index state as it existed at a previous time.-   :since: 2.0--   :default: ``HEAD``--   This allows to change the source package index state the solver uses-   to compute install-plans. This is particularly useful in-   combination with freeze-files in order to also freeze the state the-   package index was in at the time the install-plan was frozen.--   ::--      -- UNIX timestamp format example-      index-state: @1474739268--      -- ISO8601 UTC timestamp format example-      -- This format is used by 'cabal v2-configure'-      -- for storing `--index-state` values.-      index-state: 2016-09-24T17:47:48Z---.. cfg-field:: reject-unconstrained-dependencies: all, none-               --reject-unconstrained-dependencies=[all|none]-   :synopsis: Restrict the solver to packages that have constraints on them.--   :default: none-   :since: 2.6--   By default, the dependency solver can include any package that it's-   aware of in a build plan. If you wish to restrict the build plan to-   a closed set of packages (e.g., from a freeze file), use this flag.--   When set to `all`, all non-local packages that aren't goals must be-   explicitly constrained. When set to `none`, the solver will-   consider all packages.---Package configuration options--------------------------------Package options affect the building of specific packages. There are three-ways a package option can be specified:---  They can be specified at the top-level, in which case they apply only-   to **local package**, or---  They can be specified inside a ``package`` stanza, in which case they-   apply to the build of the package, whether or not it is local or-   external.---  They can be specified inside an ``package *`` stanza, in which case they-   apply to all packages, local ones from the project and also external-   dependencies.---For example, the following options specify that :cfg-field:`optimization`-should be turned off for all local packages, and that ``bytestring`` (possibly-an external dependency) should be built with ``-fno-state-hack``::--    optimization: False--    package bytestring-        ghc-options: -fno-state-hack--``ghc-options`` is not specifically described in this documentation,-but is one of many fields for configuring programs.  They take the form-``progname-options`` and ``progname-location``, and-can only be set inside package stanzas.  (TODO: They are not supported-at top-level, see :issue:`3579`.)--At the moment, there is no way to specify an option to apply to all-external packages or all inplace packages. Additionally, it is only-possible to specify these options on the command line for all local-packages (there is no per-package command line interface.)--Some flags were added by more recent versions of the Cabal library. This-means that they are NOT supported by packages which use Custom setup-scripts that require a version of the Cabal library older than when the-feature was added.--.. cfg-field:: flags: list of +flagname or -flagname (space separated)-               --flags="+foo -bar", -ffoo, -f-bar-    :synopsis: Enable or disable package flags.--    Force all flags specified as ``+flagname`` to be true, and all flags-    specified as ``-flagname`` to be false. For example, to enable the-    flag ``foo`` and disable ``bar``, set:--    ::--        flags: +foo -bar--    If there is no leading punctuation, it is assumed that the flag-    should be enabled; e.g., this is equivalent:--    ::--        flags: foo -bar--    Flags are *per-package*, so it doesn't make much sense to specify-    flags at the top-level, unless you happen to know that *all* of your-    local packages support the same named flags. If a flag is not-    supported by a package, it is ignored.--    See also the solver configuration field :cfg-field:`constraints`.--    The command line variant of this flag is ``--flags``. There is also-    a shortened form ``-ffoo -f-bar``.--    A common mistake is to say ``cabal v2-build -fhans``, where-    ``hans`` is a flag for a transitive dependency that is not in the-    local package; in this case, the flag will be silently ignored. If-    ``haskell-tor`` is the package you want this flag to apply to, try-    ``--constraint="haskell-tor +hans"`` instead.--.. cfg-field:: with-compiler: executable-               --with-compiler=executable-    :synopsis: Path to compiler executable.--    Specify the path to a particular compiler to be used. If not an-    absolute path, it will be resolved according to the :envvar:`PATH`-    environment. The type of the compiler (GHC, GHCJS, etc) must be-    consistent with the setting of the :cfg-field:`compiler` field.--    The most common use of this option is to specify a different version-    of your compiler to be used; e.g., if you have ``ghc-7.8`` in your-    path, you can specify ``with-compiler: ghc-7.8`` to use it.--    This flag also sets the default value of :cfg-field:`with-hc-pkg`, using-    the heuristic that it is named ``ghc-pkg-7.8`` (if your executable name-    is suffixed with a version number), or is the executable named-    ``ghc-pkg`` in the same directory as the ``ghc`` directory. If this-    heuristic does not work, set :cfg-field:`with-hc-pkg` explicitly.--    For inplace packages, ``cabal v2-build`` maintains a separate build-    directory for each version of GHC, so you can maintain multiple-    build trees for different versions of GHC without clobbering each-    other.--    At the moment, it's not possible to set :cfg-field:`with-compiler` on a-    per-package basis, but eventually we plan on relaxing this-    restriction. If this is something you need, give us a shout.--    The command line variant of this flag is-    ``--with-compiler=ghc-7.8``; there is also a short version-    ``-w ghc-7.8``.--.. cfg-field:: with-hc-pkg: executable-               --with-hc-pkg=executable-    :synopsis: Specifies package tool.--    Specify the path to the package tool, e.g., ``ghc-pkg``. This-    package tool must be compatible with the compiler specified by-    :cfg-field:`with-compiler` (generally speaking, it should be precisely-    the tool that was distributed with the compiler). If this option is-    omitted, the default value is determined from :cfg-field:`with-compiler`.--    The command line variant of this flag is-    ``--with-hc-pkg=ghc-pkg-7.8``.--.. cfg-field:: optimization: nat-               --enable-optimization-               --disable-optimization-    :synopsis: Build with optimization.--    :default: ``1``--    Build with optimization. This is appropriate for production use,-    taking more time to build faster libraries and programs.--    The optional *nat* value is the optimisation level. Some compilers-    support multiple optimisation levels. The range is 0 to 2. Level 0-    disables optimization, level 1 is the default. Level 2 is higher-    optimisation if the compiler supports it. Level 2 is likely to lead-    to longer compile times and bigger generated code. If you are not-    planning to run code, turning off optimization will lead to better-    build times and less code to be rebuilt when a module changes.--    When optimizations are enabled, Cabal passes ``-O2`` to the C compiler.--    We also accept ``True`` (equivalent to 1) and ``False`` (equivalent-    to 0).--    Note that as of GHC 8.0, GHC does not recompile when optimization-    levels change (see :ghc-ticket:`10923`), so if-    you change the optimization level for a local package you may need-    to blow away your old build products in order to rebuild with the-    new optimization level.--    The command line variant of this flag is ``-O2`` (with ``-O1``-    equivalent to ``-O``). There are also long-form variants-    ``--enable-optimization`` and ``--disable-optimization``.--.. cfg-field:: configure-options: args (space separated)-               --configure-option=arg-    :synopsis: Options to pass to configure script.--    A list of extra arguments to pass to the external ``./configure``-    script, if one is used. This is only useful for packages which have-    the ``Configure`` build type. See also the section on-    `system-dependent-    parameters <developing-packages.html#system-dependent-parameters>`__.--    The command line variant of this flag is ``--configure-option=arg``,-    which can be specified multiple times to pass multiple options.--.. cfg-field:: compiler: ghc, ghcjs, jhc, lhc, uhc or haskell-suite-               --compiler=compiler-    :synopsis: Compiler to build with.--    :default: ``ghc``--    Specify which compiler toolchain to be used. This is independent of-    ``with-compiler``, because the choice of toolchain affects Cabal's-    build logic.--    The command line variant of this flag is ``--compiler=ghc``.--.. cfg-field:: tests: boolean-               --enable-tests-               --disable-tests-    :synopsis: Build tests.--    :default: ``False``--    Force test suites to be enabled. For most users this should not be-    needed, as we always attempt to solve for test suite dependencies,-    even when this value is ``False``; furthermore, test suites are-    automatically enabled if they are requested as a built target.--    The command line variant of this flag is ``--enable-tests`` and-    ``--disable-tests``.--.. cfg-field:: benchmarks: boolean-               --enable-benchmarks-               --disable-benchmarks-    :synopsis: Build benchmarks.--    :default: ``False``--    Force benchmarks to be enabled. For most users this should not be-    needed, as we always attempt to solve for benchmark dependencies,-    even when this value is ``False``; furthermore, benchmarks are-    automatically enabled if they are requested as a built target.--    The command line variant of this flag is ``--enable-benchmarks`` and-    ``--disable-benchmarks``.--.. cfg-field:: extra-prog-path: paths (newline or comma separated)-               --extra-prog-path=PATH-    :synopsis: Add directories to program search path.-    :since: 1.18--    A list of directories to search for extra required programs. Most-    users should not need this, as programs like ``happy`` and ``alex``-    will automatically be installed and added to the path. This can be-    useful if a ``Custom`` setup script relies on an exotic extra-    program.--    The command line variant of this flag is ``--extra-prog-path=PATH``,-    which can be specified multiple times.--.. cfg-field:: run-tests: boolean-               --run-tests-    :synopsis: Run package test suite upon installation.--    :default: ``False``--    Run the package test suite upon installation. This is useful for-    saying "When this package is installed, check that the test suite-    passes, terminating the rest of the build if it is broken."--    .. warning::--      One deficiency: the :cfg-field:`run-tests` setting of a package is NOT-      recorded as part of the hash, so if you install something without-      :cfg-field:`run-tests` and then turn on ``run-tests``, we won't-      subsequently test the package. If this is causing you problems, give-      us a shout.--    The command line variant of this flag is ``--run-tests``.--Object code options-^^^^^^^^^^^^^^^^^^^--.. cfg-field:: debug-info: integer-               --enable-debug-info=<n>-               --disable-debug-info-    :synopsis: Build with debug info enabled.-    :since: 1.22--    :default: False--    If the compiler (e.g., GHC 7.10 and later) supports outputing OS-    native debug info (e.g., DWARF), setting ``debug-info: True`` will-    instruct it to do so. See the GHC wiki page on :ghc-wiki:`DWARF`-    for more information about this feature.--    (This field also accepts numeric syntax, but until GHC 8.2 this didn't-    do anything.)--    The command line variant of this flag is ``--enable-debug-info`` and-    ``--disable-debug-info``.--.. cfg-field:: split-sections: boolean-               --enable-split-sections-               --disable-split-sections-    :synopsis: Use GHC's split sections feature.-    :since: 2.2--    :default: False--    Use the GHC ``-split-sections`` feature when building the library. This-    reduces the final size of the executables that use the library by-    allowing them to link with only the bits that they use rather than-    the entire library. The downside is that building the library takes-    longer and uses a bit more memory.--    This feature is supported by GHC 8.0 and later.--    The command line variant of this flag is ``--enable-split-sections`` and-    ``--disable-split-sections``.--.. cfg-field:: split-objs: boolean-               --enable-split-objs-               --disable-split-objs-    :synopsis: Use GHC's split objects feature.--    :default: False--    Use the GHC ``-split-objs`` feature when building the library. This-    reduces the final size of the executables that use the library by-    allowing them to link with only the bits that they use rather than-    the entire library. The downside is that building the library takes-    longer and uses considerably more memory.--    It is generally recommend that you use ``split-sections`` instead-    of ``split-objs`` where possible.--    The command line variant of this flag is ``--enable-split-objs`` and-    ``--disable-split-objs``.--.. cfg-field:: executable-stripping: boolean-               --enable-executable-stripping-               --disable-executable-stripping-    :synopsis: Strip installed programs.--    :default: True--    When installing binary executable programs, run the ``strip``-    program on the binary. This can considerably reduce the size of the-    executable binary file. It does this by removing debugging-    information and symbols.--    Not all Haskell implementations generate native binaries. For such-    implementations this option has no effect.--    If ``debug-info`` is set explicitly then ``executable-stripping`` is set-    to ``False`` as otherwise all the debug symbols will be stripped.--    The command line variant of this flag is-    ``--enable-executable-stripping`` and-    ``--disable-executable-stripping``.--.. cfg-field:: library-stripping: boolean-               --enable-library-stripping-               --disable-library-stripping-    :synopsis: Strip installed libraries.-    :since: 1.20--    When installing binary libraries, run the ``strip`` program on the-    binary, saving space on the file system. See also-    ``executable-stripping``.--    If ``debug-info`` is set explicitly then ``library-stripping`` is set-    to ``False`` as otherwise all the debug symbols will be stripped.--    The command line variant of this flag is-    ``--enable-library-stripping`` and ``--disable-library-stripping``.--Executable options-^^^^^^^^^^^^^^^^^^--.. cfg-field:: program-prefix: prefix-               --program-prefix=prefix-    :synopsis: Prepend prefix to program names.--    [STRIKEOUT:Prepend *prefix* to installed program names.] (Currently-    implemented in a silly and not useful way. If you need this to work-    give us a shout.)--    *prefix* may contain the following path variables: ``$pkgid``,-    ``$pkg``, ``$version``, ``$compiler``, ``$os``, ``$arch``, ``$abi``,-    ``$abitag``--    The command line variant of this flag is ``--program-prefix=foo-``.--.. cfg-field:: program-suffix: suffix-               --program-suffix=suffix-    :synopsis: Append refix to program names.--    [STRIKEOUT:Append *suffix* to installed program names.] (Currently-    implemented in a silly and not useful way. If you need this to work-    give us a shout.)--    The most obvious use for this is to append the program's version-    number to make it possible to install several versions of a program-    at once: ``program-suffix: $version``.--    *suffix* may contain the following path variables: ``$pkgid``,-    ``$pkg``, ``$version``, ``$compiler``, ``$os``, ``$arch``, ``$abi``,-    ``$abitag``--    The command line variant of this flag is-    ``--program-suffix='$version'``.--Dynamic linking options-^^^^^^^^^^^^^^^^^^^^^^^--.. cfg-field:: shared: boolean-               --enable-shared-               --disable-shared-    :synopsis: Build shared library.--    :default: False--    Build shared library. This implies a separate compiler run to-    generate position independent code as required on most platforms.--    The command line variant of this flag is ``--enable-shared`` and-    ``--disable-shared``.--.. cfg-field:: executable-dynamic: boolean-               --enable-executable-dynamic-               --disable-executable-dynamic-    :synopsis: Link executables dynamically.--    :default: False--    Link executables dynamically. The executable's library dependencies-    should be built as shared objects. This implies ``shared: True``-    unless ``shared: False`` is explicitly specified.--    The command line variant of this flag is-    ``--enable-executable-dynamic`` and-    ``--disable-executable-dynamic``.--.. cfg-field:: library-for-ghci: boolean-               --enable-library-for-ghci-               --disable-library-for-ghci-    :synopsis: Build libraries suitable for use with GHCi.--    :default: True--    Build libraries suitable for use with GHCi. This involves an extra-    linking step after the build.--    Not all platforms support GHCi and indeed on some platforms, trying-    to build GHCi libs fails. In such cases, consider setting-    ``library-for-ghci: False``.--    The command line variant of this flag is-    ``--enable-library-for-ghci`` and ``--disable-library-for-ghci``.--.. cfg-field:: relocatable:-               --relocatable-    :synopsis: Build relocatable package.-    :since: 1.22--    :default: False--    [STRIKEOUT:Build a package which is relocatable.] (TODO: It is not-    clear what this actually does, or if it works at all.)--    The command line variant of this flag is ``--relocatable``.--Static linking options-^^^^^^^^^^^^^^^^^^^^^^--.. cfg-field:: static: boolean-               --enable-static-               --disable-static-    :synopsis: Build static library.---    :default: False--    Roll this and all dependent libraries into a combined ``.a`` archive.-    This uses GHCs ``-staticlib`` flag, which is available for iOS and with-    GHC 8.4 and later for other platforms as well.--.. cfg-field:: executable-static: boolean-               --enable-executable-static-               --disable-executable-static-    :synopsis: Build fully static executables.---    :default: False--    Build fully static executables.-    This link all dependent libraries into executables statically,-    including libc.-    This passes ``-static`` and ``-optl=-static`` to GHC.--Foreign function interface options-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--.. cfg-field:: extra-include-dirs: directories (comma or newline separated list)-               --extra-include-dirs=DIR-    :synopsis: Adds C header search path.--    An extra directory to search for C header files. You can use this-    flag multiple times to get a list of directories.--    You might need to use this flag if you have standard system header-    files in a non-standard location that is not mentioned in the-    package's ``.cabal`` file. Using this option has the same affect as-    appending the directory *dir* to the :pkg-field:`include-dirs` field in each-    library and executable in the package's ``.cabal`` file. The-    advantage of course is that you do not have to modify the package at-    all. These extra directories will be used while building the package-    and for libraries it is also saved in the package registration-    information and used when compiling modules that use the library.--    The command line variant of this flag is-    ``--extra-include-dirs=DIR``, which can be specified multiple times.--.. cfg-field:: extra-lib-dirs: directories (comma or newline separated list)-               --extra-lib-dirs=DIR-    :synopsis: Adds library search directory.--    An extra directory to search for system libraries files.--    The command line variant of this flag is ``--extra-lib-dirs=DIR``,-    which can be specified multiple times.--.. cfg-field:: extra-framework-dirs: directories (comma or newline separated list)-               --extra-framework-dirs=DIR-    :synopsis: Adds framework search directory (OS X only).--    An extra directory to search for frameworks (OS X only).--    You might need to use this flag if you have standard system-    libraries in a non-standard location that is not mentioned in the-    package's ``.cabal`` file. Using this option has the same affect as-    appending the directory *dir* to the :cfg-field:`extra-lib-dirs` field in-    each library and executable in the package's ``.cabal`` file. The-    advantage of course is that you do not have to modify the package at-    all. These extra directories will be used while building the package-    and for libraries it is also saved in the package registration-    information and used when compiling modules that use the library.--    The command line variant of this flag is-    ``--extra-framework-dirs=DIR``, which can be specified multiple-    times.--Profiling options-^^^^^^^^^^^^^^^^^--.. cfg-field:: profiling: boolean-               --enable-profiling-               --disable-profiling-    :synopsis: Enable profiling builds.-    :since: 1.22--    :default: False--    Build libraries and executables with profiling enabled (for-    compilers that support profiling as a separate mode). It is only-    necessary to specify :cfg-field:`profiling` for the specific package you-    want to profile; ``cabal v2-build`` will ensure that all of its-    transitive dependencies are built with profiling enabled.--    To enable profiling for only libraries or executables, see-    :cfg-field:`library-profiling` and :cfg-field:`executable-profiling`.--    For useful profiling, it can be important to control precisely what-    cost centers are allocated; see :cfg-field:`profiling-detail`.--    The command line variant of this flag is ``--enable-profiling`` and-    ``--disable-profiling``.--.. cfg-field:: profiling-detail: level-               --profiling-detail=level-    :synopsis: Profiling detail level.-    :since: 1.24--    Some compilers that support profiling, notably GHC, can allocate-    costs to different parts of the program and there are different-    levels of granularity or detail with which this can be done. In-    particular for GHC this concept is called "cost centers", and GHC-    can automatically add cost centers, and can do so in different ways.--    This flag covers both libraries and executables, but can be-    overridden by the ``library-profiling-detail`` field.--    Currently this setting is ignored for compilers other than GHC. The-    levels that cabal currently supports are:--    default-        For GHC this uses ``exported-functions`` for libraries and-        ``toplevel-functions`` for executables.-    none-        No costs will be assigned to any code within this component.-    exported-functions-        Costs will be assigned at the granularity of all top level-        functions exported from each module. In GHC, this-        is for non-inline functions.  Corresponds to ``-fprof-auto-exported``.-    toplevel-functions-        Costs will be assigned at the granularity of all top level-        functions in each module, whether they are exported from the-        module or not. In GHC specifically, this is for non-inline-        functions.  Corresponds to ``-fprof-auto-top``.-    all-functions-        Costs will be assigned at the granularity of all functions in-        each module, whether top level or local. In GHC specifically,-        this is for non-inline toplevel or where-bound functions or-        values.  Corresponds to ``-fprof-auto``.--    The command line variant of this flag is-    ``--profiling-detail=none``.--.. cfg-field:: library-profiling-detail: level-               --library-profiling-detail=level-    :synopsis: Libraries profiling detail level.-    :since: 1.24--    Like :cfg-field:`profiling-detail`, but applied only to libraries--    The command line variant of this flag is-    ``--library-profiling-detail=none``.--.. cfg-field:: library-vanilla: boolean-               --enable-library-vanilla-               --disable-library-vanilla-    :synopsis: Build libraries without profiling.--    :default: True--    Build ordinary libraries (as opposed to profiling libraries).-    Mostly, you can set this to False to avoid building ordinary-    libraries when you are profiling.--    The command line variant of this flag is-    ``--enable-library-vanilla`` and ``--disable-library-vanilla``.--.. cfg-field:: library-profiling: boolean-               --enable-library-profiling-               --disable-library-profiling-    :synopsis: Build libraries with profiling enabled.-    :since: 1.22--    :default: False--    Build libraries with profiling enabled.  You probably want-    to use :cfg-field:`profiling` instead.--    The command line variant of this flag is-    ``--enable-library-profiling`` and ``--disable-library-profiling``.--.. cfg-field:: executable-profiling: boolean-               --enable-executable-profiling-               --disable-executable-profiling-    :synopsis: Build executables with profiling enabled.-    :since: 1.22--    :default: False--    Build executables with profiling enabled. You probably want-    to use :cfg-field:`profiling` instead.--    The command line variant of this flag is-    ``--enable-executable-profiling`` and-    ``--disable-executable-profiling``.--Coverage options-^^^^^^^^^^^^^^^^--.. cfg-field:: coverage: boolean-               --enable-coverage-               --disable-coverage-    :synopsis: Build with coverage enabled.-    :since: 1.22--    :default: False--    Build libraries and executables (including test suites) with Haskell-    Program Coverage enabled. Running the test suites will automatically-    generate coverage reports with HPC.--    The command line variant of this flag is ``--enable-coverage`` and-    ``--disable-coverage``.--.. cfg-field:: library-coverage: boolean-               --enable-library-coverage-               --disable-library-coverage-    :since: 1.22-    :deprecated:--    :default: False--    Deprecated, use :cfg-field:`coverage`.--    The command line variant of this flag is-    ``--enable-library-coverage`` and ``--disable-library-coverage``.--Haddock options-^^^^^^^^^^^^^^^--.. cfg-field:: documentation: boolean-               --enable-documentation-               --disable-documentation-    :synopsis: Enable building of documentation.--    :default: False--    Enables building of Haddock documentation--    The command line variant of this flag is ``--enable-documentation``-    and ``--disable-documentation``.--    `documentation: true` does not imply :cfg-field:`haddock-benchmarks`,-    :cfg-field:`haddock-executables`, :cfg-field:`haddock-internal` or-    :cfg-field:`haddock-tests`. These need to be enabled separately if-    desired.--.. cfg-field:: doc-index-file: templated path-               --doc-index-file=TEMPLATE-    :synopsis: Path to haddock templates.--    A central index of Haddock API documentation (template cannot use-    ``$pkgid``), which should be updated as documentation is built.--    The command line variant of this flag is-    ``--doc-index-file=TEMPLATE``--The following commands are equivalent to ones that would be passed when-running ``setup haddock``. (TODO: Where does the documentation get put.)--.. cfg-field:: haddock-hoogle: boolean-    :synopsis: Generate Hoogle file.--    :default: False--    Generate a text file which can be converted by Hoogle_-    into a database for searching. This is equivalent to running ``haddock``-    with the ``--hoogle`` flag.--    The command line variant of this flag is ``--hoogle`` (for the-    ``haddock`` command).--.. cfg-field:: haddock-html: boolean-    :synopsis: Build HTML documentation.--    :default: True--    Build HTML documentation.--    The command line variant of this flag is ``--html`` (for the-    ``haddock`` command).--.. cfg-field:: haddock-html-location: templated path-               --html-location=TEMPLATE-    :synopsis: Haddock HTML templates location.--    Specify a template for the location of HTML documentation for-    prerequisite packages. The substitutions are applied to the template-    to obtain a location for each package, which will be used by-    hyperlinks in the generated documentation. For example, the-    following command generates links pointing at [Hackage] pages:--    ::--        html-location: http://hackage.haskell.org/packages/archive/$pkg/latest/doc/html--    The command line variant of this flag is ``--html-location`` (for-    the ``haddock`` subcommand).--    ::--        --html-location='http://hackage.haskell.org/packages/archive/$pkg/latest/doc/html'--    Here the argument is quoted to prevent substitution by the shell. If-    this option is omitted, the location for each package is obtained-    using the package tool (e.g. ``ghc-pkg``).--.. cfg-field:: haddock-executables: boolean-    :synopsis: Generate documentation for executables.--    :default: False--    Run haddock on all executable programs.--    The command line variant of this flag is ``--executables`` (for the-    ``haddock`` subcommand).--.. cfg-field:: haddock-tests: boolean-    :synopsis: Generate documentation for tests.--    :default: False--    Run haddock on all test suites.--    The command line variant of this flag is ``--tests`` (for the-    ``haddock`` subcommand).--.. cfg-field:: haddock-benchmarks: boolean-    :synopsis: Generate documentation for benchmarks.--    :default: False--    Run haddock on all benchmarks.--    The command line variant of this flag is ``--benchmarks`` (for the-    ``haddock`` subcommand).--.. cfg-field:: haddock-all: boolean-    :synopsis: Generate documentation for everything--    :default: False--    Run haddock on all components.--    The command line variant of this flag is ``--all`` (for the-    ``haddock`` subcommand).--.. cfg-field:: haddock-internal: boolean-    :synopsis: Generate documentation for internal modules--    :default: False--    Build haddock documentation which includes unexposed modules and-    symbols.--    The command line variant of this flag is ``--internal`` (for the-    ``haddock`` subcommand).--.. cfg-field:: haddock-css: path-    :synopsis: Location of Haddoc CSS file.--    The CSS file that should be used to style the generated-    documentation (overriding haddock's default.)--    The command line variant of this flag is ``--css`` (for the-    ``haddock`` subcommand).--.. cfg-field:: haddock-hyperlink-source: boolean-    :synopsis: Generate hyperlinked source code for documentation--    :default: False--    Generated hyperlinked source code using `HsColour`_, and have-    Haddock documentation link to it.--    The command line variant of this flag is ``--hyperlink-source`` (for-    the ``haddock`` subcommand).--.. cfg-field:: haddock-hscolour-css: path-    :synopsis: Location of CSS file for HsColour--    The CSS file that should be used to style the generated hyperlinked-    source code (from `HsColour`_).--    The command line variant of this flag is ``--hscolour-css`` (for the-    ``haddock`` subcommand).--.. cfg-field:: haddock-contents-location: URL-    :synopsis: URL for contents page.--    A baked-in URL to be used as the location for the contents page.--    The command line variant of this flag is ``--contents-location``-    (for the ``haddock`` subcommand).--.. cfg-field:: haddock-keep-temp-files: boolean-    :synopsis: Keep temporary Haddock files.--    Keep temporary files.--    The command line variant of this flag is ``--keep-temp-files`` (for-    the ``haddock`` subcommand).--Advanced global configuration options----------------------------------------.. cfg-field:: write-ghc-environment-files: always, never, or ghc8.4.4+-               --write-ghc-environment-files=policy-    :synopsis: Whether a ``.ghc.environment`` should be created after a successful build.--    :default: ``never``--    Whether a `GHC package environment file <https://downloads.haskell.org/~ghc/master/users-guide/packages.html#package-environments>`_-    should be created after a successful build.--    Since Cabal 3.0, defaults to ``never``. Before that, defaulted to-    creating them only when compiling with GHC 8.4.4 and older (GHC-    8.4.4 `is the first version-    <https://ghc.haskell.org/trac/ghc/ticket/13753>`_ that supports-    the ``-package-env -`` option that allows ignoring the package-    environment files).---.. cfg-field:: http-transport: curl, wget, powershell, or plain-http-               --http-transport=transport-    :synopsis: Transport to use with http(s) requests.--    :default: ``curl``--    Set a transport to be used when making http(s) requests.--    The command line variant of this field is ``--http-transport=curl``.--.. cfg-field:: ignore-expiry: boolean-               --ignore-expiry-    :synopsis: Ignore Hackage expiration dates.--    :default: False--    If ``True``, we will ignore expiry dates on metadata from Hackage.--    In general, you should not set this to ``True`` as it will leave you-    vulnerable to stale cache attacks. However, it may be temporarily-    useful if the main Hackage server is down, and we need to rely on-    mirrors which have not been updated for longer than the expiry-    period on the timestamp.--    The command line variant of this field is ``--ignore-expiry``.--.. cfg-field:: remote-repo-cache: directory-               --remote-repo-cache=DIR-    :synopsis: Location of packages cache.--    :default: ``~/.cabal/packages``--    [STRIKEOUT:The location where packages downloaded from remote-    repositories will be cached.] Not implemented yet.--    The command line variant of this flag is-    ``--remote-repo-cache=DIR``.--.. cfg-field:: logs-dir: directory-               --logs-dir=DIR-    :synopsis: Directory to store build logs.--    :default: ``~/.cabal/logs``--    [STRIKEOUT:The location where build logs for packages are stored.]-    Not implemented yet.--    The command line variant of this flag is ``--logs-dir=DIR``.--.. cfg-field:: build-summary: template filepath-               --build-summary=TEMPLATE-    :synopsis: Build summaries location.--    :default: ``~/.cabal/logs/build.log``--    [STRIKEOUT:The file to save build summaries. Valid variables which-    can be used in the path are ``$pkgid``, ``$compiler``, ``$os`` and-    ``$arch``.] Not implemented yet.--    The command line variant of this flag is-    ``--build-summary=TEMPLATE``.--.. cfg-field:: local-repo: directory-               --local-repo=DIR-    :deprecated:--    [STRIKEOUT:The location of a local repository.] Deprecated. See-    "Legacy repositories."--    The command line variant of this flag is ``--local-repo=DIR``.--.. cfg-field:: world-file: path-               --world-file=FILE-    :deprecated:--    [STRIKEOUT:The location of the world file.] Deprecated.--    The command line variant of this flag is ``--world-file=FILE``.--Undocumented fields: ``root-cmd``, ``symlink-bindir``, ``build-log``,-``remote-build-reporting``, ``report-planned-failure``, ``one-shot``,-``offline``.--Advanced solver options-^^^^^^^^^^^^^^^^^^^^^^^--Most users generally won't need these.--.. cfg-field:: solver: modular-               --solver=modular-    :synopsis: Which solver to use.--    This field is reserved to allow the specification of alternative-    dependency solvers. At the moment, the only accepted option is-    ``modular``.--    The command line variant of this field is ``--solver=modular``.--.. cfg-field:: max-backjumps: nat-               --max-backjumps=N-    :synopsis: Maximum number of solver backjumps.--    :default: 4000--    Maximum number of backjumps (backtracking multiple steps) allowed-    while solving. Set -1 to allow unlimited backtracking, and 0 to-    disable backtracking completely.--    The command line variant of this field is ``--max-backjumps=4000``.--.. cfg-field:: reorder-goals: boolean-               --reorder-goals-               --no-reorder-goals-    :synopsis: Allow solver to reorder goals.--    :default: False--    When enabled, the solver will reorder goals according to certain-    heuristics. Slows things down on average, but may make backtracking-    faster for some packages. It's unlikely to help for small projects,-    but for big install plans it may help you find a plan when otherwise-    this is not possible. See :issue:`1780` for more commentary.--    The command line variant of this field is ``--(no-)reorder-goals``.--.. cfg-field:: count-conflicts: boolean-               --count-conflicts-               --no-count-conflicts-    :synopsis: Solver prefers versions with less conflicts.--    :default: True--    Try to speed up solving by preferring goals that are involved in a-    lot of conflicts.--    The command line variant of this field is-    ``--(no-)count-conflicts``.--.. cfg-field:: fine-grained-conflicts: boolean-               --fine-grained-conflicts-               --no-fine-grained-conflicts-    :synopsis: Skip a version of a package if it does not resolve any conflicts-	       encountered in the last version (solver optimization).--    :default: True--    When enabled, the solver will skip a version of a package if it does not-    resolve any of the conflicts encountered in the last version of that-    package. For example, if ``foo-1.2`` depended on ``bar``, and the solver-    couldn't find consistent versions for ``bar``'s dependencies, then the-    solver would skip ``foo-1.1`` if it also depended on ``bar``.--    The command line variant of this field is-    ``--(no-)fine-grained-conflicts``.--.. cfg-field:: minimize-conflict-set: boolean-               --minimize-conflict-set-               --no-minimize-conflict-set-    :synopsis: Try to improve the solver error message when there is no-	       solution.--    :default: False--    When there is no solution, try to improve the solver error message-    by finding a minimal conflict set. This option may increase run-    time significantly, so it is off by default.--    The command line variant of this field is-    ``--(no-)minimize-conflict-set``.--.. cfg-field:: strong-flags: boolean-               --strong-flags-               --no-strong-flags-    :synopsis: Do not defer flag choices when solving.--    :default: False--    Do not defer flag choices. (TODO: Better documentation.)--    The command line variant of this field is ``--(no-)strong-flags``.--.. cfg-field:: allow-boot-library-installs: boolean-               --allow-boot-library-installs-               --no-allow-boot-library-installs-    :synopsis: Allow cabal to install or upgrade any package.--    :default: False--    By default, the dependency solver doesn't allow ``base``,-    ``ghc-prim``, ``integer-simple``, ``integer-gmp``, and-    ``template-haskell`` to be installed or upgraded. This flag-    removes the restriction.--    The command line variant of this field is-    ``--(no-)allow-boot-library-installs``.--.. cfg-field:: cabal-lib-version: version-               --cabal-lib-version=version-    :synopsis: Version of Cabal library used to build package.--    This field selects the version of the Cabal library which should be-    used to build packages. This option is intended primarily for-    internal development use (e.g., forcing a package to build with a-    newer version of Cabal, to test a new version of Cabal.) (TODO:-    Specify its semantics more clearly.)--    The command line variant of this field is-    ``--cabal-lib-version=1.24.0.1``.--.. include:: references.inc+   directly in a folder in your project. But you can list an+   arbitrary Hackage package in :cfg-field:`packages`+   to force it to be treated as local.++Local packages, as well as the external packages (below) which depend on+them, are built **inplace**, meaning that they are always built+specifically for the project and are not installed globally. Inplace+packages are not cached and not given unique hashes, which makes them+suitable for packages which you want to edit and recompile.++2. An **external package** is any package which is not listed in the+   ``packages`` field. The source code for external packages is usually+   retrieved from Hackage.++When an external package does not depend on an inplace package, it can+be built and installed to a **global** store, which can be shared across+projects. These build products are identified by a hash based on all of+the inputs which influence the compilation of a package (flags,+dependency selection, etc.). Just as in Nix, these hashes uniquely+identify the result of a build; if we compute this identifier and we+find that we already have this ID built, we can just use the already+built version.++The global package store is ``~/.cabal/store`` (configurable via+global `store-dir` option); if you need to clear your store for+whatever reason (e.g., to reclaim disk space or because the global+store is corrupted), deleting this directory is safe (``v2-build``+will just rebuild everything it needs on its next invocation).++This split motivates some of the UI choices for Nix-style local build+commands. For example, flags passed to ``cabal v2-build`` are only+applied to *local* packages, so that adding a flag to+``cabal v2-build`` doesn't necessitate a rebuild of *every* transitive+dependency in the global package store.++In cabal-install 2.0 and above, Nix-style local builds also take advantage of a+new Cabal library feature, `per-component+builds <https://github.com/ezyang/ghc-proposals/blob/master/proposals/0000-componentized-cabal.rst>`__,+where each component of a package is configured and built separately.+This can massively speed up rebuilds of packages with lots of components+(e.g., a package that defines multiple executables), as only one+executable needs to be rebuilt. Packages that use Custom setup scripts+are not currently built on a per-component basis.++Where are my build products?+----------------------------++A major deficiency in the current implementation of v2-build is that+there is no programmatic way to access the location of build products.+The location of the build products is intended to be an internal+implementation detail of v2-build, but we also understand that many+unimplemented features can only be reasonably worked around by+accessing build products directly.++The location where build products can be found varies depending on the+version of cabal-install:++-  In cabal-install-1.24, the dist directory for a package ``p-0.1`` is+   stored in ``dist-newstyle/build/p-0.1``. For example, if you built an+   executable or test suite named ``pexe``, it would be located at+   ``dist-newstyle/build/p-0.1/build/pexe/pexe``.++-  In cabal-install-2.0, the dist directory for a package ``p-0.1``+   defining a library built with GHC 8.0.1 on 64-bit Linux is+   ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1``. When+   per-component builds are enabled (any non-Custom package), a+   subcomponent like an executable or test suite named ``pexe`` will be+   stored at+   ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe``; thus,+   the full path of the executable is+   ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe/build/pexe/pexe``+   (you can see why we want this to be an implementation detail!)++-  In cabal-install-2.2 and above, the ``/c/`` part of the above path+   is replaced with one of ``/l/``, ``/x/``, ``/f/``, ``/t/``, or+   ``/b/``, depending on the type of component (sublibrary,+   executable, foreign library, test suite, or benchmark+   respectively). So the full path to an executable named ``pexe``+   compiled with GHC 8.0.1 on a 64-bit Linux is now+   ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/x/pexe/build/pexe/pexe``;+   for a benchmark named ``pbench`` it now is+   ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/b/pbench/build/pbench/pbench``;+++The paths are a bit longer in 2.0 and above but the benefit is that you can+transparently have multiple builds with different versions of GHC. We+plan to add the ability to create aliases for certain build+configurations, and more convenient paths to access particularly useful+build products like executables.++Caching+-------++Nix-style local builds sport a robust caching system which helps to reduce+the time it takes to execute a rebuild cycle. While the details of how+``cabal-install`` does caching are an implementation detail and may+change in the future, knowing what gets cached is helpful for+understanding the performance characteristics of invocations to+``v2-build``. The cached intermediate results are stored in+``dist-newstyle/cache``; this folder can be safely deleted to clear the+cache.++The following intermediate results are cached in the following files in+this folder (the most important two are first):++``solver-plan`` (binary)+    The result of calling the dependency solver, assuming that the+    Hackage index, local ``cabal.project`` file, and local ``cabal``+    files are unmodified. (Notably, we do NOT have to dependency solve+    again if new build products are stored in the global store; the+    invocation of the dependency solver is independent of what is+    already available in the store.)+``source-hashes`` (binary)+    The hashes of all local source files. When all local source files of+    a local package are unchanged, ``cabal v2-build`` will skip+    invoking ``setup build`` entirely (saving us from a possibly+    expensive call to ``ghc --make``). The full list of source files+    participating in compilation is determined using+    ``cabal sdist --list-only``. Thus if you do not list all your+    source files in a Cabal file, Cabal may fail to recompile when you+    edit them.+``config`` (same format as ``cabal.project``)+    The full project configuration, merged from ``cabal.project`` (and+    friends) as well as the command line arguments.+``compiler`` (binary)+    The configuration of the compiler being used to build the project.+``improved-plan`` (binary)+    Like ``solver-plan``, but with all non-inplace packages improved+    into pre-existing copies from the store.+``plan.json`` (JSON)+    A JSON serialization of the computed install plan intended+    for integrating ``cabal`` with external tooling.+    The `cabal-plan <http://hackage.haskell.org/package/cabal-plan>`__+    package provides a library for parsing ``plan.json`` files into a+    Haskell data structure as well as an example tool showing possible+    applications.++    .. todo::++        Document JSON schema (including version history of schema)+++Note that every package also has a local cache managed by the Cabal+build system, e.g., in ``$distdir/cache``.
doc/references.inc view
@@ -23,4 +23,4 @@  .. _ABNF: https://tools.ietf.org/html/rfc5234 -.. _Backpack: https://ghc.haskell.org/trac/ghc/wiki/Backpack+.. _Backpack: https://gitlab.haskell.org/ghc/ghc/-/wikis/backpack
tests/CheckTests.hs view
@@ -40,6 +40,14 @@     , checkTest "ghc-option-j.cabal"     , checkTest "multiple-libs-2.cabal"     , checkTest "assoc-cpp-options.cabal"+    , checkTest "public-multilib-1.cabal"+    , checkTest "public-multilib-2.cabal"+    , checkTest "issue-6288-a.cabal"+    , checkTest "issue-6288-b.cabal"+    , checkTest "issue-6288-c.cabal"+    , checkTest "issue-6288-d.cabal"+    , checkTest "issue-6288-e.cabal"+    , checkTest "issue-6288-f.cabal"     , checkTest "denormalised-paths.cabal"     ] 
tests/HackageTests.hs view
@@ -6,25 +6,6 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} #endif --- | The following RTS parameters seem to speed up running the test------ @--- +RTS -s -qg -I0 -A64M -N2 -RTS--- @------ * @-qg@ No parallel GC (you can try @-qn2@ on GHC-8.2+)--- * @-I0@ No idle GC (shouldn't matter, but to be sure)--- * @-A64M@ Set allocation area to about the maximum residence size tests have--- * @-N4@ More capabilities (depends on your machine)------ @-N1@ vs. @-N4@ gives------ * @1m 48s@ to @1m 00s@ speedup for full Hackage @parsec@ test, and------ * @6m 16s@ to @3m 30s@ speedup for full Hackage @roundtrip@ test.------ i.e. not linear, but substantial improvement anyway.--- module Main where  import Distribution.Compat.Semigroup@@ -32,16 +13,10 @@ import Prelude.Compat  import Control.Applicative                         (many, (<**>), (<|>))-import Control.Concurrent-       (ThreadId, forkIO, getNumCapabilities, killThread, myThreadId, throwTo)-import Control.Concurrent.STM import Control.DeepSeq                             (NFData (..), force)-import Control.Exception-       (AsyncException (ThreadKilled), SomeException, bracket, catch, evaluate, fromException,-       mask, throwIO)-import Control.Monad                               (forever, join, replicateM, unless, when)-import Data.Foldable                               (for_, traverse_)-import Data.IORef                                  (modifyIORef', newIORef, readIORef)+import Control.Exception                           (evaluate)+import Control.Monad                               (join, unless, when)+import Data.Foldable                               (traverse_) import Data.List                                   (isPrefixOf, isSuffixOf) import Data.Maybe                                  (mapMaybe) import Data.Monoid                                 (Sum (..))@@ -49,6 +24,7 @@ import Distribution.PackageDescription.PrettyPrint (showGenericPackageDescription) import Distribution.PackageDescription.Quirks      (patchQuirks) import Distribution.Simple.Utils                   (fromUTF8BS, toUTF8BS)+import Numeric                                     (showFFloat) import System.Directory                            (getAppUserDataDirectory) import System.Environment                          (lookupEnv) import System.Exit                                 (exitFailure)@@ -64,19 +40,20 @@ import qualified Distribution.Fields.Pretty             as PP import qualified Distribution.PackageDescription.Parsec as Parsec import qualified Distribution.Parsec                    as Parsec+import qualified Options.Applicative                    as O+import qualified System.Clock                           as Clock  import           Distribution.Compat.Lens import qualified Distribution.Types.GenericPackageDescription.Lens as L import qualified Distribution.Types.PackageDescription.Lens        as L-import qualified Options.Applicative                               as O  -- import Distribution.Types.BuildInfo                (BuildInfo (cppOptions)) -- import qualified Distribution.Types.BuildInfo.Lens                 as L  #ifdef MIN_VERSION_tree_diff-import Data.TreeDiff        (ediff)-import Data.TreeDiff.Pretty (ansiWlEditExprCompact)-import Instances.TreeDiff ()+import Data.TreeDiff                 (ediff)+import Data.TreeDiff.Instances.Cabal ()+import Data.TreeDiff.Pretty          (ansiWlEditExprCompact) #endif  -------------------------------------------------------------------------------@@ -102,8 +79,8 @@         case mx of             Just x  -> return x             Nothing -> return (cabalDir </> "config")-     + parseIndex'     :: (Monoid a, NFData a)     => (FilePath -> Bool)@@ -209,9 +186,9 @@              -- Look into invalid cpp options             -- _ <- L.traverseBuildInfos checkCppFlags gpd-            +             -- one for file, many checks-            return (CheckResult 1 (w warnings) 0 0 0 0 0 <> foldMap toCheckResult checks)+            return (CheckResult 1 (w warnings) 0 0 0 0 0 0 <> foldMap toCheckResult checks)         Left (_, errors) -> do             traverse_ (putStrLn . Parsec.showPError fpath) errors             exitFailure@@ -221,28 +198,28 @@ --     for_ (cppOptions bi) $ \opt -> --         unless (any (`isPrefixOf` opt) ["-D", "-U", "-I"]) $ --             putStrLn opt--- +-- --     return bi -data CheckResult = CheckResult !Int !Int !Int !Int !Int !Int !Int+data CheckResult = CheckResult !Int !Int !Int !Int !Int !Int !Int !Int  instance NFData CheckResult where     rnf !_ = ()  instance Semigroup CheckResult where-    CheckResult n w a b c d e <> CheckResult n' w' a' b' c' d' e' =-        CheckResult (n + n') (w + w') (a + a') (b + b') (c + c') (d + d') (e + e')+    CheckResult n w a b c d e f <> CheckResult n' w' a' b' c' d' e' f' =+        CheckResult (n + n') (w + w') (a + a') (b + b') (c + c') (d + d') (e + e') (f + f')  instance Monoid CheckResult where-    mempty = CheckResult 0 0 0 0 0 0 0+    mempty = CheckResult 0 0 0 0 0 0 0 0     mappend = (<>)  toCheckResult :: PackageCheck -> CheckResult-toCheckResult PackageBuildImpossible {}    = CheckResult 0 0 1 0 0 0 0-toCheckResult PackageBuildWarning {}       = CheckResult 0 0 0 1 0 0 0-toCheckResult PackageDistSuspicious {}     = CheckResult 0 0 0 0 1 0 0-toCheckResult PackageDistSuspiciousWarn {} = CheckResult 0 0 0 0 0 1 0-toCheckResult PackageDistInexcusable {}    = CheckResult 0 0 0 0 0 0 1+toCheckResult PackageBuildImpossible {}    = CheckResult 0 0 1 1 0 0 0 0+toCheckResult PackageBuildWarning {}       = CheckResult 0 0 1 0 1 0 0 0+toCheckResult PackageDistSuspicious {}     = CheckResult 0 0 1 0 0 1 0 0+toCheckResult PackageDistSuspiciousWarn {} = CheckResult 0 0 1 0 0 0 1 0+toCheckResult PackageDistInexcusable {}    = CheckResult 0 0 1 0 0 0 0 1  ------------------------------------------------------------------------------- -- Roundtrip test@@ -269,9 +246,9 @@      -- fromParsecField, "shallow" parser/pretty roundtrip     when testFieldsTransform $-        if checkUTF8 bs+        if checkUTF8 patchedBs         then do-            parsecFields <- assertRight $ Parsec.readFields $ snd $ patchQuirks bs+            parsecFields <- assertRight $ Parsec.readFields patchedBs             let prettyFields = PP.fromParsecFields parsecFields             let bs'' = PP.showFields (return []) prettyFields             z0 <- parse "3rd" (toUTF8BS bs'')@@ -283,6 +260,8 @@      return (Sum 1)   where+    patchedBs = snd (patchQuirks bs)+     checkUTF8 bs' = replacementChar `notElem` fromUTF8BS bs' where         replacementChar = '\xfffd' @@ -296,6 +275,7 @@     assertEqual' bs' x y = unless (x == y || fpath == "ixset/1.0.4/ixset.cabal") $ do         putStrLn fpath #ifdef MIN_VERSION_tree_diff+        putStrLn "====== tree-diff:"         print $ ansiWlEditExprCompact $ ediff x y #else         putStrLn "<<<<<<"@@ -304,6 +284,7 @@         print y         putStrLn ">>>>>>" #endif+        putStrLn "====== contents:"         putStrLn bs'         exitFailure @@ -352,10 +333,15 @@         pure False      parsecA pfx keepGoing = do+        begin <- Clock.getTime Clock.Monotonic         ParsecResult n w f <- parseIndex pfx (parseParsecTest keepGoing)+        end <- Clock.getTime Clock.Monotonic+        let diff = Clock.toNanoSecs $ Clock.diffTimeSpec end begin+         putStrLn $ show n ++ " files processed"         putStrLn $ show w ++ " files contained warnings"         putStrLn $ show f ++ " files failed to parse"+        putStrLn $ showFFloat (Just 6) (fromInteger diff / 1e9 :: Double) " seconds elapsed"      roundtripP = roundtripA <$> prefixP <*> testFieldsP     roundtripA pfx testFieldsTransform = do@@ -364,9 +350,10 @@      checkP = checkA <$> prefixP     checkA pfx = do-        CheckResult n w a b c d e <- parseIndex pfx parseCheckTest+        CheckResult n w x a b c d e <- parseIndex pfx parseCheckTest         putStrLn $ show n ++ " files processed"-        putStrLn $ show w ++ " have lexer/parser warnings"+        putStrLn $ show w ++ " files have lexer/parser warnings"+        putStrLn $ show x ++ " files have check warnings"         putStrLn $ show a ++ " build impossible"         putStrLn $ show b ++ " build warning"         putStrLn $ show c ++ " build dist suspicious"@@ -430,88 +417,9 @@ -- -- First we chunk input (as single cabal file is little work) foldIO :: forall a m. (Monoid m, NFData m) => (a -> IO m) -> [a] -> IO m-foldIO f = foldIO' (g mempty) . chunks-  where-    chunks [] = []-    chunks xs = let ~(ys, zs) = splitAt 256 xs in ys : chunks zs--    -- strict foldM-    g :: m -> [a] -> IO m-    g !acc []     = return acc-    g !acc (x:xs) = f x >>= \ m -> g (mappend acc m) xs---- | This 'parallelInterleaved' from @parallel-io@ but like (effectful) 'foldMap', not 'sequence'-foldIO' :: (Monoid m, NFData m) => (a -> IO m) -> [a] -> IO m-foldIO' f ys = do-    cap <- getNumCapabilities-    -- we leave one capability to do management (and read index)-    let cap' = max 1 (pred cap)--    tid <- myThreadId-    ref <- newIORef mempty--    withPool cap' $ \pool -> mask $ \restore -> do-        for_ ys $ \y -> submitToPool pool $ reflectExceptionsTo tid $ do-            m <- restore (f y)-            modifyIORef' ref (force . mappend m)--        readIORef ref-  where-    reflectExceptionsTo :: ThreadId -> IO () -> IO ()-    reflectExceptionsTo tid act = catchNonThreadKilled act (throwTo tid)--    catchNonThreadKilled :: IO a -> (SomeException -> IO a) -> IO a-    catchNonThreadKilled act handler = act `catch` \e -> case fromException e of Just ThreadKilled -> throwIO e; _ -> handler e------------------------------------------------------------------------------------ Worker pool----------------------------------------------------------------------------------data Pool = Pool-    { poolThreadsN :: Int-    , poolThreads  :: [ThreadId]-    , poolQueue    :: TVar Queue-    , poolInflight :: TVar Int-    }--data Queue = Queue !Int [IO ()]--submitToPool ::  Pool -> IO () -> IO ()-submitToPool (Pool threadsN _ queue _) act = atomically $ do-    Queue n acts <- readTVar queue-    if n >= threadsN -- some work for every worker already in the queue-    then retry-    else writeTVar queue (Queue (succ n) (act : acts)) -- order is messed--withPool :: Int -> (Pool -> IO a) -> IO a-withPool n kont = do-    queue    <- newTVarIO (Queue 0 [])-    inflight <- newTVarIO 0-    bracket (replicateM n $ forkIO $ worker queue inflight) cleanup $ \threads -> do--        -- run work-        x <- kont (Pool n threads queue inflight)--        -- wait for jobs to complete-        atomically $ readTVar inflight >>= \m -> check (m <= 0)--        -- return-        return x-  where-    cleanup threads = for_ threads killThread--    -- worker pulls work from the queue in the loop-    worker queue inflight = forever $ bracket pull cleanupW id where-        pull = atomically $ do-            Queue actsN acts <- readTVar queue-            case acts of-                []           -> retry-                (act : acts') -> do-                    modifyTVar' inflight succ-                    writeTVar queue (Queue (pred actsN) acts')-                    return act--        cleanupW _ = atomically $ modifyTVar' inflight pred+foldIO f = go mempty where+    go !acc [] = acc+    go !acc (x:xs) = go (mappend acc (f x)) xs  ------------------------------------------------------------------------------- -- Orphans
− tests/Instances/TreeDiff.hs
@@ -1,99 +0,0 @@-{-# LANGUAGE CPP #-}-#if __GLASGOW_HASKELL__ >= 800-{-# OPTIONS_GHC -freduction-depth=0 #-}-#else-{-# OPTIONS_GHC -fcontext-stack=151 #-}-#endif-{-# OPTIONS_GHC -fno-warn-orphans #-}-module Instances.TreeDiff where--import Data.TreeDiff--import Instances.TreeDiff.Language ()-import Instances.TreeDiff.SPDX ()-import Instances.TreeDiff.Version ()-----------------------------------------------------------------------------------import Distribution.Backpack                  (OpenModule, OpenUnitId)-import Distribution.Compiler                  (CompilerFlavor, PerCompilerFlavor)-import Distribution.InstalledPackageInfo      (AbiDependency, ExposedModule, InstalledPackageInfo)-import Distribution.ModuleName                (ModuleName)-import Distribution.Package                   (Dependency, PackageIdentifier, PackageName)-import Distribution.PackageDescription-import Distribution.Types.AbiHash             (AbiHash)-import Distribution.Types.ComponentId         (ComponentId)-import Distribution.Types.CondTree-import Distribution.Types.ExecutableScope-import Distribution.Types.ExeDependency-import Distribution.Types.ForeignLib-import Distribution.Types.ForeignLibOption-import Distribution.Types.ForeignLibType-import Distribution.Types.IncludeRenaming     (IncludeRenaming)-import Distribution.Types.LegacyExeDependency-import Distribution.Types.LibraryVisibility   (LibraryVisibility)-import Distribution.Types.Mixin-import Distribution.Types.PkgconfigDependency-import Distribution.Types.UnitId              (DefUnitId, UnitId)-import Distribution.Types.UnqualComponentName-import Distribution.Utils.ShortText           (ShortText, fromShortText)------------------------------------------------------------------------------------ instances----------------------------------------------------------------------------------instance (Eq a, Show a) => ToExpr (Condition a) where toExpr = defaultExprViaShow-instance (Show a, ToExpr b, ToExpr c, Show b, Show c, Eq a, Eq c, Eq b) => ToExpr (CondTree a b c)-instance (Show a, ToExpr b, ToExpr c, Show b, Show c, Eq a, Eq c, Eq b) => ToExpr (CondBranch a b c)--instance ToExpr a => ToExpr (PerCompilerFlavor a)--instance ToExpr AbiDependency where toExpr = defaultExprViaShow-instance ToExpr AbiHash where toExpr = defaultExprViaShow-instance ToExpr Benchmark-instance ToExpr BenchmarkInterface-instance ToExpr BenchmarkType-instance ToExpr BuildInfo-instance ToExpr BuildType-instance ToExpr CompilerFlavor-instance ToExpr ComponentId where toExpr = defaultExprViaShow-instance ToExpr DefUnitId-instance ToExpr Dependency-instance ToExpr ExeDependency where toExpr = defaultExprViaShow-instance ToExpr Executable-instance ToExpr ExecutableScope where toExpr = defaultExprViaShow-instance ToExpr ExposedModule where toExpr = defaultExprViaShow-instance ToExpr Flag-instance ToExpr FlagName where toExpr = defaultExprViaShow-instance ToExpr ForeignLib-instance ToExpr ForeignLibOption-instance ToExpr ForeignLibType-instance ToExpr GenericPackageDescription-instance ToExpr IncludeRenaming-instance ToExpr InstalledPackageInfo-instance ToExpr LegacyExeDependency where toExpr = defaultExprViaShow-instance ToExpr LibVersionInfo where toExpr = defaultExprViaShow-instance ToExpr Library-instance ToExpr LibraryVisibility-instance ToExpr LibraryName-instance ToExpr Mixin where toExpr = defaultExprViaShow-instance ToExpr ModuleName where toExpr = defaultExprViaShow-instance ToExpr ModuleReexport-instance ToExpr ModuleRenaming-instance ToExpr OpenModule-instance ToExpr OpenUnitId-instance ToExpr PackageDescription-instance ToExpr PackageIdentifier-instance ToExpr PackageName where toExpr = defaultExprViaShow-instance ToExpr PkgconfigDependency where toExpr = defaultExprViaShow-instance ToExpr RepoKind-instance ToExpr RepoType-instance ToExpr SetupBuildInfo-instance ToExpr SourceRepo-instance ToExpr TestSuite-instance ToExpr TestSuiteInterface-instance ToExpr TestType-instance ToExpr UnitId where toExpr = defaultExprViaShow-instance ToExpr UnqualComponentName where toExpr = defaultExprViaShow--instance ToExpr ShortText where toExpr = toExpr . fromShortText
− tests/Instances/TreeDiff/Language.hs
@@ -1,17 +0,0 @@-{-# LANGUAGE CPP #-}-#if __GLASGOW_HASKELL__ >= 800-{-# OPTIONS_GHC -freduction-depth=0 #-}-#else-{-# OPTIONS_GHC -fcontext-stack=151 #-}-#endif-{-# OPTIONS_GHC -fno-warn-orphans #-}-module Instances.TreeDiff.Language where--import Data.TreeDiff-import Language.Haskell.Extension (Extension, KnownExtension, Language)---- This are big enums, so they are in separate file.----instance ToExpr Extension-instance ToExpr KnownExtension-instance ToExpr Language
− tests/Instances/TreeDiff/SPDX.hs
@@ -1,28 +0,0 @@-{-# LANGUAGE CPP #-}-#if __GLASGOW_HASKELL__ >= 800-{-# OPTIONS_GHC -freduction-depth=0 #-}-#else-{-# OPTIONS_GHC -fcontext-stack=151 #-}-#endif-{-# OPTIONS_GHC -fno-warn-orphans #-}-module Instances.TreeDiff.SPDX where--import Data.TreeDiff-import Distribution.License (License)--import Instances.TreeDiff.Version ()--import qualified Distribution.SPDX as SPDX---- 'License' almost belongs here.--instance ToExpr License---- Generics instance is too heavy-instance ToExpr SPDX.LicenseId where toExpr = defaultExprViaShow-instance ToExpr SPDX.LicenseExceptionId where toExpr = defaultExprViaShow--instance ToExpr SPDX.License-instance ToExpr SPDX.LicenseExpression-instance ToExpr SPDX.LicenseRef-instance ToExpr SPDX.SimpleLicenseExpression
− tests/Instances/TreeDiff/Version.hs
@@ -1,14 +0,0 @@-{-# LANGUAGE CPP #-}-#if __GLASGOW_HASKELL__ >= 800-{-# OPTIONS_GHC -freduction-depth=0 #-}-#else-{-# OPTIONS_GHC -fcontext-stack=151 #-}-#endif-{-# OPTIONS_GHC -fno-warn-orphans #-}-module Instances.TreeDiff.Version where--import Data.TreeDiff-import Distribution.Version (Version, VersionRange)--instance ToExpr Version where toExpr = defaultExprViaShow-instance ToExpr VersionRange
tests/ParserTests.hs view
@@ -17,8 +17,8 @@ import Distribution.PackageDescription             (GenericPackageDescription) import Distribution.PackageDescription.Parsec      (parseGenericPackageDescription) import Distribution.PackageDescription.PrettyPrint (showGenericPackageDescription)-import Distribution.Parsec-       (PWarnType (..), PWarning (..), showPError, showPWarning)+import Distribution.Parsec                         (PWarnType (..), PWarning (..), showPError, showPWarning)+import Distribution.Pretty                         (prettyShow) import Distribution.Utils.Generic                  (fromUTF8BS, toUTF8BS) import System.Directory                            (setCurrentDirectory) import System.Environment                          (getArgs, withArgs)@@ -31,9 +31,9 @@ import qualified Distribution.InstalledPackageInfo as IPI  #ifdef MIN_VERSION_tree_diff-import Data.TreeDiff        (ansiWlEditExpr, ediff, toExpr)-import Data.TreeDiff.Golden (ediffGolden)-import Instances.TreeDiff ()+import Data.TreeDiff                 (ansiWlEditExpr, ediff, toExpr)+import Data.TreeDiff.Golden          (ediffGolden)+import Data.TreeDiff.Instances.Cabal () #endif  tests :: TestTree@@ -66,7 +66,11 @@     , warningTest PWTTrailingFields    "trailingfield.cabal"     , warningTest PWTDoubleDash        "doubledash.cabal"     , warningTest PWTMultipleSingularField "multiplesingular.cabal"-    , warningTest PWTMultipleSingularField "multiplesingular.cabal"+    , warningTest PWTVersionWildcard   "wildcard.cabal"+    , warningTest PWTVersionOperator   "operator.cabal"+    , warningTest PWTSpecVersion       "specversion-a.cabal"+    , warningTest PWTSpecVersion       "specversion-b.cabal"+    , warningTest PWTSpecVersion       "specversion-c.cabal"     -- TODO: not implemented yet     -- , warningTest PWTExtraTestModule   "extratestmodule.cabal"     ]@@ -125,6 +129,7 @@     , errorTest "libpq2.cabal"     , errorTest "MiniAgda.cabal"     , errorTest "big-version.cabal"+    , errorTest "anynone.cabal"     ]  errorTest :: FilePath -> TestTree@@ -168,6 +173,9 @@     , regressionTest "th-lift-instances.cabal"     , regressionTest "issue-5055.cabal"     , regressionTest "issue-6083-pkg-pkg.cabal"+    , regressionTest "issue-6083-a.cabal"+    , regressionTest "issue-6083-b.cabal"+    , regressionTest "issue-6083-c.cabal"     , regressionTest "noVersion.cabal"     , regressionTest "spdx-1.cabal"     , regressionTest "spdx-2.cabal"@@ -185,6 +193,9 @@     , regressionTest "indentation2.cabal"     , regressionTest "indentation3.cabal"     , regressionTest "big-version.cabal"+    , regressionTest "anynone.cabal"+    , regressionTest "monad-param.cabal"+    , regressionTest "hasktorch.cabal"     ]  regressionTest :: FilePath -> TestTree@@ -206,8 +217,11 @@         Right gpd ->             unlines (map (showPWarning fp) warns)             ++ showGenericPackageDescription gpd-        Left (_, errs) ->-            unlines $ "ERROR" : map (showPError fp) (NE.toList errs)+        Left (csv, errs) ->+            unlines $+                "ERROR" :+                maybe "unknown-version" prettyShow csv :+                map (showPError fp) (NE.toList errs)   where     input = "tests" </> "ParserTests" </> "regressions" </> fp     correct = replaceExtension input "format"
+ tests/ParserTests/errors/anynone.cabal view
@@ -0,0 +1,10 @@+cabal-version:       3.4+name:                anynone+version:             0+synopsis:            The -any none demo+build-type:          Simple++library+  default-language: Haskell2010+  exposed-modules:  AnyNone+  build-depends:    base -any
+ tests/ParserTests/errors/anynone.errors view
@@ -0,0 +1,5 @@+VERSION: Just (mkVersion [3,4])+anynone.cabal:10:26: +unexpected '-'+expecting space, white space, opening paren, operator, comma or end of input+
tests/ParserTests/errors/forward-compat.errors view
@@ -1,5 +1,2 @@ VERSION: Just (mkVersion [99999,9])-forward-compat.cabal:3:1: "the input" (line 3, column 1):-unexpected operator "============"-expecting field or section name-forward-compat.cabal:0:0: Unsupported cabal-version. See https://github.com/haskell/cabal/issues/4899.+forward-compat.cabal:0:0: Unsupported cabal-version 99999.9. See https://github.com/haskell/cabal/issues/4899.
tests/ParserTests/errors/forward-compat3.errors view
@@ -1,3 +1,2 @@ VERSION: Just (mkVersion [99999,99]) forward-compat3.cabal:0:0: Unsupported cabal-version 99999.99. See https://github.com/haskell/cabal/issues/4899.-forward-compat3.cabal:0:0: Unsupported cabal-version. See https://github.com/haskell/cabal/issues/4899.
tests/ParserTests/errors/issue-5055-2.cabal view
@@ -5,7 +5,7 @@ license:             BSD3 category:            Test build-type:          Simple-cabal-version:       >=2.0+cabal-version:       2.0  executable flag-test-exe   main-is: FirstMain.hs
tests/ParserTests/errors/issue-5055.cabal view
@@ -5,7 +5,7 @@ license:             BSD3 category:            Test build-type:          Simple-cabal-version:       >=2.0+cabal-version:       2.0  executable flag-test-exe   main-is: FirstMain.hs
tests/ParserTests/ipi/Includes2.expr view
@@ -1,7 +1,11 @@ InstalledPackageInfo-  {abiDepends = [`AbiDependency {depUnitId = UnitId "base-4.10.1.0", depAbiHash = AbiHash "35a7f6be752ee4f7385cb5bf28677879"}`,-                 `AbiDependency {depUnitId = UnitId "Includes2-0.1.0.0-inplace-mysql", depAbiHash = AbiHash "inplace"}`],-   abiHash = `AbiHash "inplace"`,+  {abiDepends = [AbiDependency+                   {depAbiHash = AbiHash "35a7f6be752ee4f7385cb5bf28677879",+                    depUnitId = UnitId "base-4.10.1.0"},+                 AbiDependency+                   {depAbiHash = AbiHash "inplace",+                    depUnitId = UnitId "Includes2-0.1.0.0-inplace-mysql"}],+   abiHash = AbiHash "inplace",    author = "Edward Z. Yang",    category = "",    ccOptions = [],@@ -9,11 +13,12 @@    copyright = "",    cxxOptions = [],    dataDir = "/home/travis/build/haskell/cabal/cabal-testsuite/PackageTests/Backpack/Includes2",-   depends = [`UnitId "base-4.10.1.0"`,-              `UnitId "Includes2-0.1.0.0-inplace-mysql"`],+   depends = [UnitId "base-4.10.1.0",+              UnitId "Includes2-0.1.0.0-inplace-mysql"],    description = "",    exposed = False,-   exposedModules = [`ExposedModule {exposedName = ModuleName ["Mine"], exposedReexport = Nothing}`],+   exposedModules = [ExposedModule+                       {exposedName = ModuleName "Mine", exposedReexport = Nothing}],    extraGHCiLibraries = [],    extraLibraries = [],    frameworkDirs = [],@@ -27,14 +32,15 @@    includeDirs = [],    includes = [],    indefinite = False,-   installedComponentId_ = `ComponentId ""`,-   installedUnitId = `UnitId "Includes2-0.1.0.0-inplace-mylib+3gY9SyjX86dBypHcOaev1n"`,+   installedComponentId_ = ComponentId "",+   installedUnitId = UnitId+                       "Includes2-0.1.0.0-inplace-mylib+3gY9SyjX86dBypHcOaev1n",    instantiatedWith = [_×_-                         `ModuleName ["Database"]`+                         (ModuleName "Database")                          (OpenModule                             (DefiniteUnitId-                               (DefUnitId `UnitId "Includes2-0.1.0.0-inplace-mysql"`))-                            `ModuleName ["Database","MySQL"]`)],+                               (DefUnitId (UnitId "Includes2-0.1.0.0-inplace-mysql")))+                            (ModuleName "Database.MySQL"))],    ldOptions = [],    libVisibility = LibraryVisibilityPrivate,    libraryDirs = ["/home/travis/build/haskell/cabal/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal.dist/work/./dist/build/x86_64-linux/ghc-8.2.2/Includes2-0.1.0.0/l/mylib/Includes2-0.1.0.0-inplace-mylib+3gY9SyjX86dBypHcOaev1n/build/Includes2-0.1.0.0-inplace-mylib+3gY9SyjX86dBypHcOaev1n"],@@ -43,10 +49,10 @@    maintainer = "ezyang@cs.stanford.edu",    pkgRoot = Nothing,    pkgUrl = "",-   sourceLibName = LSubLibName `UnqualComponentName "mylib"`,+   sourceLibName = LSubLibName (UnqualComponentName "mylib"),    sourcePackageId = PackageIdentifier-                       {pkgName = `PackageName "Includes2"`,-                        pkgVersion = `mkVersion [0,1,0,0]`},+                       {pkgName = PackageName "Includes2",+                        pkgVersion = mkVersion [0, 1, 0, 0]},    stability = "",    synopsis = "",    trusted = False}
tests/ParserTests/ipi/internal-preprocessor-test.expr view
@@ -1,6 +1,6 @@ InstalledPackageInfo   {abiDepends = [],-   abiHash = `AbiHash ""`,+   abiHash = AbiHash "",    author = "Mikhail Glushenkov",    category = "Testing",    ccOptions = [],@@ -8,10 +8,11 @@    copyright = "",    cxxOptions = [],    dataDir = "/home/ogre/Documents/other-haskell/cabal/cabal-testsuite/PackageTests/CustomPreProcess",-   depends = [`UnitId "base-4.8.2.0-0d6d1084fbc041e1cded9228e80e264d"`],+   depends = [UnitId "base-4.8.2.0-0d6d1084fbc041e1cded9228e80e264d"],    description = "See https://github.com/haskell/cabal/issues/1541#issuecomment-30155513",    exposed = True,-   exposedModules = [`ExposedModule {exposedName = ModuleName ["A"], exposedReexport = Nothing}`],+   exposedModules = [ExposedModule+                       {exposedName = ModuleName "A", exposedReexport = Nothing}],    extraGHCiLibraries = [],    extraLibraries = [],    frameworkDirs = [],@@ -25,23 +26,23 @@    includeDirs = [],    includes = [],    indefinite = False,-   installedComponentId_ = `ComponentId ""`,-   installedUnitId = `UnitId "internal-preprocessor-test-0.1.0.0"`,+   installedComponentId_ = ComponentId "",+   installedUnitId = UnitId "internal-preprocessor-test-0.1.0.0",    instantiatedWith = [],    ldOptions = [],    libVisibility = LibraryVisibilityPublic,    libraryDirs = ["/home/ogre/Documents/other-haskell/cabal/cabal-testsuite/PackageTests/CustomPreProcess/setup.dist/work/dist/build",                   "/home/ogre/Documents/other-haskell/cabal/cabal-testsuite/PackageTests/CustomPreProcess/setup.dist/work/dist/build"],    libraryDynDirs = [],-   license = Right (GPL (Just `mkVersion [3]`)),+   license = Right (GPL (Just (mkVersion [3]))),    maintainer = "mikhail.glushenkov@gmail.com",    pkgRoot = Just                "/home/ogre/Documents/other-haskell/cabal/cabal-testsuite/PackageTests/CustomPreProcess/setup.dist/work/dist",    pkgUrl = "",    sourceLibName = LMainLibName,    sourcePackageId = PackageIdentifier-                       {pkgName = `PackageName "internal-preprocessor-test"`,-                        pkgVersion = `mkVersion [0,1,0,0]`},+                       {pkgName = PackageName "internal-preprocessor-test",+                        pkgVersion = mkVersion [0, 1, 0, 0]},    stability = "",    synopsis = "Internal custom preprocessor example.",    trusted = False}
tests/ParserTests/ipi/issue-2276-ghc-9885.expr view
@@ -1,6 +1,8 @@ InstalledPackageInfo-  {abiDepends = [`AbiDependency {depUnitId = UnitId "base-4.10.1.0", depAbiHash = AbiHash "35a7f6be752ee4f7385cb5bf28677879"}`],-   abiHash = `AbiHash "e04579c0363c9229351d1a0b394bf2d5"`,+  {abiDepends = [AbiDependency+                   {depAbiHash = AbiHash "35a7f6be752ee4f7385cb5bf28677879",+                    depUnitId = UnitId "base-4.10.1.0"}],+   abiHash = AbiHash "e04579c0363c9229351d1a0b394bf2d5",    author = "Andy Gill, Ross Paterson",    category = "Control",    ccOptions = [],@@ -8,7 +10,7 @@    copyright = "",    cxxOptions = [],    dataDir = "/opt/ghc/8.2.2/share/x86_64-linux-ghc-8.2.2/transformers-0.5.2.0",-   depends = [`UnitId "base-4.10.1.0"`],+   depends = [UnitId "base-4.10.1.0"],    description = concat                    ["A portable library of functor and monad transformers, inspired by\n",                     "the paper \\\"Functional Programming with Overloading and Higher-Order\n",@@ -32,28 +34,72 @@                     "the @mtl@ or @monads-tf@ packages, which automatically lift operations\n",                     "introduced by monad transformers through other transformers."],    exposed = True,-   exposedModules = [`ExposedModule {exposedName = ModuleName ["Control","Applicative","Backwards"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Applicative","Lift"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Signatures"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Class"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Cont"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Error"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Except"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Identity"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","List"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Maybe"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","RWS"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","RWS","Lazy"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","RWS","Strict"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Reader"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","State"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","State","Lazy"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","State","Strict"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Writer"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Writer","Lazy"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Writer","Strict"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Data","Functor","Constant"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Data","Functor","Reverse"], exposedReexport = Nothing}`],+   exposedModules = [ExposedModule+                       {exposedName = ModuleName "Control.Applicative.Backwards",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Applicative.Lift",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Signatures",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Class",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Cont",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Error",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Except",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Identity",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.List",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Maybe",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.RWS",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.RWS.Lazy",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.RWS.Strict",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Reader",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.State",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.State.Lazy",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.State.Strict",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Writer",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Writer.Lazy",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Writer.Strict",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Data.Functor.Constant",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Data.Functor.Reverse",+                        exposedReexport = Nothing}],    extraGHCiLibraries = [],    extraLibraries = [],    frameworkDirs = [],@@ -67,8 +113,8 @@    includeDirs = [],    includes = [],    indefinite = False,-   installedComponentId_ = `ComponentId ""`,-   installedUnitId = `UnitId "transformers-0.5.2.0"`,+   installedComponentId_ = ComponentId "",+   installedUnitId = UnitId "transformers-0.5.2.0",    instantiatedWith = [],    ldOptions = ["-lm",                 "-lm",@@ -2080,8 +2126,8 @@    pkgUrl = "",    sourceLibName = LMainLibName,    sourcePackageId = PackageIdentifier-                       {pkgName = `PackageName "transformers"`,-                        pkgVersion = `mkVersion [0,5,2,0]`},+                       {pkgName = PackageName "transformers",+                        pkgVersion = mkVersion [0, 5, 2, 0]},    stability = "",    synopsis = "Concrete functor and monad transformers",    trusted = False}
tests/ParserTests/ipi/transformers.expr view
@@ -1,6 +1,8 @@ InstalledPackageInfo-  {abiDepends = [`AbiDependency {depUnitId = UnitId "base-4.10.1.0", depAbiHash = AbiHash "35a7f6be752ee4f7385cb5bf28677879"}`],-   abiHash = `AbiHash "e04579c0363c9229351d1a0b394bf2d5"`,+  {abiDepends = [AbiDependency+                   {depAbiHash = AbiHash "35a7f6be752ee4f7385cb5bf28677879",+                    depUnitId = UnitId "base-4.10.1.0"}],+   abiHash = AbiHash "e04579c0363c9229351d1a0b394bf2d5",    author = "Andy Gill, Ross Paterson",    category = "Control",    ccOptions = [],@@ -8,7 +10,7 @@    copyright = "",    cxxOptions = [],    dataDir = "/opt/ghc/8.2.2/share/x86_64-linux-ghc-8.2.2/transformers-0.5.2.0",-   depends = [`UnitId "base-4.10.1.0"`],+   depends = [UnitId "base-4.10.1.0"],    description = concat                    ["A portable library of functor and monad transformers, inspired by\n",                     "the paper \\\"Functional Programming with Overloading and Higher-Order\n",@@ -32,28 +34,72 @@                     "the @mtl@ or @monads-tf@ packages, which automatically lift operations\n",                     "introduced by monad transformers through other transformers."],    exposed = True,-   exposedModules = [`ExposedModule {exposedName = ModuleName ["Control","Applicative","Backwards"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Applicative","Lift"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Signatures"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Class"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Cont"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Error"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Except"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Identity"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","List"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Maybe"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","RWS"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","RWS","Lazy"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","RWS","Strict"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Reader"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","State"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","State","Lazy"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","State","Strict"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Writer"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Writer","Lazy"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Control","Monad","Trans","Writer","Strict"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Data","Functor","Constant"], exposedReexport = Nothing}`,-                     `ExposedModule {exposedName = ModuleName ["Data","Functor","Reverse"], exposedReexport = Nothing}`],+   exposedModules = [ExposedModule+                       {exposedName = ModuleName "Control.Applicative.Backwards",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Applicative.Lift",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Signatures",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Class",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Cont",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Error",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Except",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Identity",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.List",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Maybe",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.RWS",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.RWS.Lazy",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.RWS.Strict",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Reader",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.State",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.State.Lazy",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.State.Strict",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Writer",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Writer.Lazy",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Control.Monad.Trans.Writer.Strict",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Data.Functor.Constant",+                        exposedReexport = Nothing},+                     ExposedModule+                       {exposedName = ModuleName "Data.Functor.Reverse",+                        exposedReexport = Nothing}],    extraGHCiLibraries = [],    extraLibraries = [],    frameworkDirs = [],@@ -67,8 +113,8 @@    includeDirs = [],    includes = [],    indefinite = False,-   installedComponentId_ = `ComponentId ""`,-   installedUnitId = `UnitId "transformers-0.5.2.0"`,+   installedComponentId_ = ComponentId "",+   installedUnitId = UnitId "transformers-0.5.2.0",    instantiatedWith = [],    ldOptions = [],    libVisibility = LibraryVisibilityPublic,@@ -80,8 +126,8 @@    pkgUrl = "",    sourceLibName = LMainLibName,    sourcePackageId = PackageIdentifier-                       {pkgName = `PackageName "transformers"`,-                        pkgVersion = `mkVersion [0,5,2,0]`},+                       {pkgName = PackageName "transformers",+                        pkgVersion = mkVersion [0, 5, 2, 0]},    stability = "",    synopsis = "Concrete functor and monad transformers",    trusted = False}
tests/ParserTests/regressions/Octree-0.5.expr view
@@ -6,21 +6,21 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`+                                               (PackageName "base")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [4,0]`)-                                                  (EarlierVersion `mkVersion [4,7]`))-                                               (Set.fromList [LMainLibName]),+                                                  (OrLaterVersion (mkVersion [4, 0]))+                                                  (EarlierVersion (mkVersion [4, 7])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "AC-Vector"`-                                               (OrLaterVersion `mkVersion [2,3,0]`)-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "AC-Vector")+                                               (OrLaterVersion (mkVersion [2, 3, 0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "QuickCheck"`-                                               (OrLaterVersion `mkVersion [2,4,0]`)-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "QuickCheck")+                                               (OrLaterVersion (mkVersion [2, 4, 0]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["Data","Octree"]`],+                                       {exposedModules = [ModuleName "Data.Octree"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -59,32 +59,37 @@                                                           options = PerCompilerFlavor [] [],                                                           otherExtensions = [],                                                           otherLanguages = [],-                                                          otherModules = [`ModuleName ["Data","Octree","Internal"]`],+                                                          otherModules = [ModuleName+                                                                            "Data.Octree.Internal"],                                                           pkgconfigDepends = [],                                                           profOptions = PerCompilerFlavor [] [],                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [4,0]`)+                                                                                        (mkVersion+                                                                                           [4, 0]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [4,7]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [4, 7])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "AC-Vector"`+                                                                                  (PackageName+                                                                                     "AC-Vector")                                                                                   (OrLaterVersion-                                                                                     `mkVersion [2,3,0]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                     (mkVersion+                                                                                        [2, 3, 0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "QuickCheck"`+                                                                                  (PackageName+                                                                                     "QuickCheck")                                                                                   (OrLaterVersion-                                                                                     `mkVersion [2,4,0]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                     (mkVersion+                                                                                        [2, 4, 0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -93,23 +98,23 @@                                         signatures = []}},    condSubLibraries = [],    condTestSuites = [_×_-                       `UnqualComponentName "test_Octree"`+                       (UnqualComponentName "test_Octree")                        CondNode                          {condTreeComponents = [],                           condTreeConstraints = [Dependency-                                                   `PackageName "base"`+                                                   (PackageName "base")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [4,0]`)-                                                      (EarlierVersion `mkVersion [4,7]`))-                                                   (Set.fromList [LMainLibName]),+                                                      (OrLaterVersion (mkVersion [4, 0]))+                                                      (EarlierVersion (mkVersion [4, 7])))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "AC-Vector"`-                                                   (OrLaterVersion `mkVersion [2,3,0]`)-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "AC-Vector")+                                                   (OrLaterVersion (mkVersion [2, 3, 0]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "QuickCheck"`-                                                   (OrLaterVersion `mkVersion [2,4,0]`)-                                                   (Set.fromList [LMainLibName])],+                                                   (PackageName "QuickCheck")+                                                   (OrLaterVersion (mkVersion [2, 4, 0]))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],@@ -157,53 +162,63 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "base"`+                                                                                       (PackageName+                                                                                          "base")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [4,0]`)+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 0]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [4,7]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 7])))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "AC-Vector"`+                                                                                       (PackageName+                                                                                          "AC-Vector")                                                                                        (OrLaterVersion-                                                                                          `mkVersion [2,3,0]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                          (mkVersion+                                                                                             [2,+                                                                                              3,+                                                                                              0]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "QuickCheck"`+                                                                                       (PackageName+                                                                                          "QuickCheck")                                                                                        (OrLaterVersion-                                                                                          `mkVersion [2,4,0]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                          (mkVersion+                                                                                             [2,+                                                                                              4,+                                                                                              0]))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]`+                                                              (mkVersion [1, 0])                                                               "tests/test_Octree.hs",-                                            testName = `UnqualComponentName ""`}},+                                            testName = UnqualComponentName ""}},                      _×_-                       `UnqualComponentName "readme"`+                       (UnqualComponentName "readme")                        CondNode                          {condTreeComponents = [],                           condTreeConstraints = [Dependency-                                                   `PackageName "base"`+                                                   (PackageName "base")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [4,0]`)-                                                      (EarlierVersion `mkVersion [4,7]`))-                                                   (Set.fromList [LMainLibName]),+                                                      (OrLaterVersion (mkVersion [4, 0]))+                                                      (EarlierVersion (mkVersion [4, 7])))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "AC-Vector"`-                                                   (OrLaterVersion `mkVersion [2,3,0]`)-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "AC-Vector")+                                                   (OrLaterVersion (mkVersion [2, 3, 0]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "QuickCheck"`-                                                   (OrLaterVersion `mkVersion [2,4,0]`)-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "QuickCheck")+                                                   (OrLaterVersion (mkVersion [2, 4, 0]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "markdown-unlit"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName])],+                                                   (PackageName "markdown-unlit")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],@@ -254,36 +269,49 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "base"`+                                                                                       (PackageName+                                                                                          "base")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [4,0]`)+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 0]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [4,7]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 7])))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "AC-Vector"`+                                                                                       (PackageName+                                                                                          "AC-Vector")                                                                                        (OrLaterVersion-                                                                                          `mkVersion [2,3,0]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                          (mkVersion+                                                                                             [2,+                                                                                              3,+                                                                                              0]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "QuickCheck"`+                                                                                       (PackageName+                                                                                          "QuickCheck")                                                                                        (OrLaterVersion-                                                                                          `mkVersion [2,4,0]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                          (mkVersion+                                                                                             [2,+                                                                                              4,+                                                                                              0]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "markdown-unlit"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                       (PackageName+                                                                                          "markdown-unlit")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "README.lhs",-                                            testName = `UnqualComponentName ""`}}],+                                                              (mkVersion [1, 0]) "README.lhs",+                                            testName = UnqualComponentName ""}}],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "Michal J. Gajda",                            benchmarks = [],@@ -306,8 +334,8 @@                            licenseRaw = Right BSD3,                            maintainer = "mjgajda@googlemail.com",                            package = PackageIdentifier-                                       {pkgName = `PackageName "Octree"`,-                                        pkgVersion = `mkVersion [0,5]`},+                                       {pkgName = PackageName "Octree",+                                        pkgVersion = mkVersion [0, 5]},                            pkgUrl = "http://hackage.haskell.org/package/octree",                            setupBuildInfo = Nothing,                            sourceRepos = [SourceRepo@@ -317,13 +345,13 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [1,8]`),+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV1_8,                            stability = "beta",                            subLibraries = [],                            synopsis = "Simple unbalanced Octree for storing data about 3D points",                            testSuites = [],-                           testedWith = [_×_ GHC (ThisVersion `mkVersion [7,0,4]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,4,1]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,4,2]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,6,0]`)]}}+                           testedWith = [_×_ GHC (ThisVersion (mkVersion [7, 0, 4])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 4, 1])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 4, 2])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 6, 0]))]}}
tests/ParserTests/regressions/Octree-0.5.format view
@@ -48,4 +48,4 @@         base >=4.0 && <4.7,         AC-Vector >=2.3.0,         QuickCheck >=2.4.0,-        markdown-unlit -any+        markdown-unlit
+ tests/ParserTests/regressions/anynone.cabal view
@@ -0,0 +1,10 @@+cabal-version:       3.0+name:                anynone+version:             0+synopsis:            The -any none demo+build-type:          Simple++library+  default-language: Haskell2010+  exposed-modules:  AnyNone+  build-depends:    base -any
+ tests/ParserTests/regressions/anynone.expr view
@@ -0,0 +1,105 @@+GenericPackageDescription+  {condBenchmarks = [],+   condExecutables = [],+   condForeignLibs = [],+   condLibrary = Just+                   CondNode+                     {condTreeComponents = [],+                      condTreeConstraints = [Dependency+                                               (PackageName "base")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet],+                      condTreeData = Library+                                       {exposedModules = [ModuleName "AnyNone"],+                                        libBuildInfo = BuildInfo+                                                         {asmOptions = [],+                                                          asmSources = [],+                                                          autogenIncludes = [],+                                                          autogenModules = [],+                                                          buildToolDepends = [],+                                                          buildTools = [],+                                                          buildable = True,+                                                          cSources = [],+                                                          ccOptions = [],+                                                          cmmOptions = [],+                                                          cmmSources = [],+                                                          cppOptions = [],+                                                          customFieldsBI = [],+                                                          cxxOptions = [],+                                                          cxxSources = [],+                                                          defaultExtensions = [],+                                                          defaultLanguage = Just Haskell2010,+                                                          extraBundledLibs = [],+                                                          extraDynLibFlavours = [],+                                                          extraFrameworkDirs = [],+                                                          extraGHCiLibs = [],+                                                          extraLibDirs = [],+                                                          extraLibFlavours = [],+                                                          extraLibs = [],+                                                          frameworks = [],+                                                          hsSourceDirs = [],+                                                          includeDirs = [],+                                                          includes = [],+                                                          installIncludes = [],+                                                          jsSources = [],+                                                          ldOptions = [],+                                                          mixins = [],+                                                          oldExtensions = [],+                                                          options = PerCompilerFlavor [] [],+                                                          otherExtensions = [],+                                                          otherLanguages = [],+                                                          otherModules = [],+                                                          pkgconfigDepends = [],+                                                          profOptions = PerCompilerFlavor [] [],+                                                          sharedOptions = PerCompilerFlavor [] [],+                                                          staticOptions = PerCompilerFlavor [] [],+                                                          targetBuildDepends = [Dependency+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],+                                                          virtualModules = []},+                                        libExposed = True,+                                        libName = LMainLibName,+                                        libVisibility = LibraryVisibilityPublic,+                                        reexportedModules = [],+                                        signatures = []}},+   condSubLibraries = [],+   condTestSuites = [],+   genPackageFlags = [],+   gpdScannedVersion = Nothing,+   packageDescription = PackageDescription+                          {author = "",+                           benchmarks = [],+                           bugReports = "",+                           buildTypeRaw = Just Simple,+                           category = "",+                           copyright = "",+                           customFieldsPD = [],+                           dataDir = ".",+                           dataFiles = [],+                           description = "",+                           executables = [],+                           extraDocFiles = [],+                           extraSrcFiles = [],+                           extraTmpFiles = [],+                           foreignLibs = [],+                           homepage = "",+                           library = Nothing,+                           licenseFiles = [],+                           licenseRaw = Left NONE,+                           maintainer = "",+                           package = PackageIdentifier+                                       {pkgName = PackageName "anynone",+                                        pkgVersion = mkVersion [0]},+                           pkgUrl = "",+                           setupBuildInfo = Nothing,+                           sourceRepos = [],+                           specVersion = CabalSpecV3_0,+                           stability = "",+                           subLibraries = [],+                           synopsis = "The -any none demo",+                           testSuites = [],+                           testedWith = []}}
+ tests/ParserTests/regressions/anynone.format view
@@ -0,0 +1,10 @@+cabal-version: 3.0+name:          anynone+version:       0+synopsis:      The -any none demo+build-type:    Simple++library+    exposed-modules:  AnyNone+    default-language: Haskell2010+    build-depends:    base
tests/ParserTests/regressions/big-version.expr view
@@ -60,6 +60,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -82,12 +83,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "big-version"`,-                                        pkgVersion = `mkVersion [123456789]`},+                                       {pkgName = PackageName "big-version",+                                        pkgVersion = mkVersion [123456789]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "",
tests/ParserTests/regressions/common-conditional.expr view
@@ -5,7 +5,7 @@    condLibrary = Just                    CondNode                      {condTreeComponents = [CondBranch-                                              {condBranchCondition = `Var (Flag (FlagName "foo"))`,+                                              {condBranchCondition = `Var (PackageFlag (FlagName "foo"))`,                                                condBranchIfFalse = Nothing,                                                condBranchIfTrue = CondNode                                                                     {condTreeComponents = [CondBranch@@ -14,10 +14,12 @@                                                                                               condBranchIfTrue = CondNode                                                                                                                    {condTreeComponents = [],                                                                                                                     condTreeConstraints = [Dependency-                                                                                                                                             `PackageName "Win32"`-                                                                                                                                             AnyVersion-                                                                                                                                             (Set.fromList-                                                                                                                                                [LMainLibName])],+                                                                                                                                             (PackageName+                                                                                                                                                "Win32")+                                                                                                                                             (OrLaterVersion+                                                                                                                                                (mkVersion+                                                                                                                                                   [0]))+                                                                                                                                             mainLibSet],                                                                                                                     condTreeData = Library                                                                                                                                      {exposedModules = [],                                                                                                                                       libBuildInfo = BuildInfo@@ -71,10 +73,12 @@                                                                                                                                                                           []                                                                                                                                                                           [],                                                                                                                                                         targetBuildDepends = [Dependency-                                                                                                                                                                                `PackageName "Win32"`-                                                                                                                                                                                AnyVersion-                                                                                                                                                                                (Set.fromList-                                                                                                                                                                                   [LMainLibName])],+                                                                                                                                                                                (PackageName+                                                                                                                                                                                   "Win32")+                                                                                                                                                                                (OrLaterVersion+                                                                                                                                                                                   (mkVersion+                                                                                                                                                                                      [0]))+                                                                                                                                                                                mainLibSet],                                                                                                                                                         virtualModules = []},                                                                                                                                       libExposed = True,                                                                                                                                       libName = LMainLibName,@@ -82,19 +86,25 @@                                                                                                                                       reexportedModules = [],                                                                                                                                       signatures = []}}}],                                                                      condTreeConstraints = [Dependency-                                                                                              `PackageName "base"`+                                                                                              (PackageName+                                                                                                 "base")                                                                                               (IntersectVersionRanges                                                                                                  (OrLaterVersion-                                                                                                    `mkVersion [4,10]`)+                                                                                                    (mkVersion+                                                                                                       [4,+                                                                                                        10]))                                                                                                  (EarlierVersion-                                                                                                    `mkVersion [4,11]`))-                                                                                              (Set.fromList-                                                                                                 [LMainLibName]),+                                                                                                    (mkVersion+                                                                                                       [4,+                                                                                                        11])))+                                                                                              mainLibSet,                                                                                             Dependency-                                                                                              `PackageName "containers"`-                                                                                              AnyVersion-                                                                                              (Set.fromList-                                                                                                 [LMainLibName])],+                                                                                              (PackageName+                                                                                                 "containers")+                                                                                              (OrLaterVersion+                                                                                                 (mkVersion+                                                                                                    [0]))+                                                                                              mainLibSet],                                                                      condTreeData = Library                                                                                       {exposedModules = [],                                                                                        libBuildInfo = BuildInfo@@ -148,19 +158,25 @@                                                                                                                            []                                                                                                                            [],                                                                                                          targetBuildDepends = [Dependency-                                                                                                                                 `PackageName "base"`+                                                                                                                                 (PackageName+                                                                                                                                    "base")                                                                                                                                  (IntersectVersionRanges                                                                                                                                     (OrLaterVersion-                                                                                                                                       `mkVersion [4,10]`)+                                                                                                                                       (mkVersion+                                                                                                                                          [4,+                                                                                                                                           10]))                                                                                                                                     (EarlierVersion-                                                                                                                                       `mkVersion [4,11]`))-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName]),+                                                                                                                                       (mkVersion+                                                                                                                                          [4,+                                                                                                                                           11])))+                                                                                                                                 mainLibSet,                                                                                                                                Dependency-                                                                                                                                 `PackageName "containers"`-                                                                                                                                 AnyVersion-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName])],+                                                                                                                                 (PackageName+                                                                                                                                    "containers")+                                                                                                                                 (OrLaterVersion+                                                                                                                                    (mkVersion+                                                                                                                                       [0]))+                                                                                                                                 mainLibSet],                                                                                                          virtualModules = []},                                                                                        libExposed = True,                                                                                        libName = LMainLibName,@@ -168,11 +184,11 @@                                                                                        reexportedModules = [],                                                                                        signatures = []}}}],                       condTreeConstraints = [Dependency-                                               `PackageName "ghc-prim"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "ghc-prim")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["ElseIf"]`],+                                       {exposedModules = [ModuleName "ElseIf"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -216,10 +232,12 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "ghc-prim"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                  (PackageName+                                                                                     "ghc-prim")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -228,7 +246,7 @@                                         signatures = []}},    condSubLibraries = [],    condTestSuites = [_×_-                       `UnqualComponentName "tests"`+                       (UnqualComponentName "tests")                        CondNode                          {condTreeComponents = [CondBranch                                                   {condBranchCondition = `Var (OS Windows)`,@@ -292,10 +310,12 @@                                                                                            testInterface = TestSuiteUnsupported                                                                                                              (TestTypeUnknown                                                                                                                 ""-                                                                                                                `mkVersion []`),-                                                                                           testName = `UnqualComponentName ""`}}},+                                                                                                                (mkVersion+                                                                                                                   [])),+                                                                                           testName = UnqualComponentName+                                                                                                        ""}}},                                                 CondBranch-                                                  {condBranchCondition = `Var (Flag (FlagName "foo"))`,+                                                  {condBranchCondition = `Var (PackageFlag (FlagName "foo"))`,                                                    condBranchIfFalse = Nothing,                                                    condBranchIfTrue = CondNode                                                                         {condTreeComponents = [CondBranch@@ -304,10 +324,12 @@                                                                                                   condBranchIfTrue = CondNode                                                                                                                        {condTreeComponents = [],                                                                                                                         condTreeConstraints = [Dependency-                                                                                                                                                 `PackageName "Win32"`-                                                                                                                                                 AnyVersion-                                                                                                                                                 (Set.fromList-                                                                                                                                                    [LMainLibName])],+                                                                                                                                                 (PackageName+                                                                                                                                                    "Win32")+                                                                                                                                                 (OrLaterVersion+                                                                                                                                                    (mkVersion+                                                                                                                                                       [0]))+                                                                                                                                                 mainLibSet],                                                                                                                         condTreeData = TestSuite                                                                                                                                          {testBuildInfo = BuildInfo                                                                                                                                                             {asmOptions = [],@@ -360,26 +382,32 @@                                                                                                                                                                                []                                                                                                                                                                                [],                                                                                                                                                              targetBuildDepends = [Dependency-                                                                                                                                                                                     `PackageName "Win32"`-                                                                                                                                                                                     AnyVersion-                                                                                                                                                                                     (Set.fromList-                                                                                                                                                                                        [LMainLibName])],+                                                                                                                                                                                     (PackageName+                                                                                                                                                                                        "Win32")+                                                                                                                                                                                     (OrLaterVersion+                                                                                                                                                                                        (mkVersion+                                                                                                                                                                                           [0]))+                                                                                                                                                                                     mainLibSet],                                                                                                                                                              virtualModules = []},                                                                                                                                           testInterface = TestSuiteUnsupported                                                                                                                                                             (TestTypeUnknown                                                                                                                                                                ""-                                                                                                                                                               `mkVersion []`),-                                                                                                                                          testName = `UnqualComponentName ""`}}},+                                                                                                                                                               (mkVersion+                                                                                                                                                                  [])),+                                                                                                                                          testName = UnqualComponentName+                                                                                                                                                       ""}}},                                                                                                CondBranch                                                                                                  {condBranchCondition = `Var (OS Windows)`,                                                                                                   condBranchIfFalse = Nothing,                                                                                                   condBranchIfTrue = CondNode                                                                                                                        {condTreeComponents = [],                                                                                                                         condTreeConstraints = [Dependency-                                                                                                                                                 `PackageName "Win32"`-                                                                                                                                                 AnyVersion-                                                                                                                                                 (Set.fromList-                                                                                                                                                    [LMainLibName])],+                                                                                                                                                 (PackageName+                                                                                                                                                    "Win32")+                                                                                                                                                 (OrLaterVersion+                                                                                                                                                    (mkVersion+                                                                                                                                                       [0]))+                                                                                                                                                 mainLibSet],                                                                                                                         condTreeData = TestSuite                                                                                                                                          {testBuildInfo = BuildInfo                                                                                                                                                             {asmOptions = [],@@ -432,30 +460,40 @@                                                                                                                                                                                []                                                                                                                                                                                [],                                                                                                                                                              targetBuildDepends = [Dependency-                                                                                                                                                                                     `PackageName "Win32"`-                                                                                                                                                                                     AnyVersion-                                                                                                                                                                                     (Set.fromList-                                                                                                                                                                                        [LMainLibName])],+                                                                                                                                                                                     (PackageName+                                                                                                                                                                                        "Win32")+                                                                                                                                                                                     (OrLaterVersion+                                                                                                                                                                                        (mkVersion+                                                                                                                                                                                           [0]))+                                                                                                                                                                                     mainLibSet],                                                                                                                                                              virtualModules = []},                                                                                                                                           testInterface = TestSuiteUnsupported                                                                                                                                                             (TestTypeUnknown                                                                                                                                                                ""-                                                                                                                                                               `mkVersion []`),-                                                                                                                                          testName = `UnqualComponentName ""`}}}],+                                                                                                                                                               (mkVersion+                                                                                                                                                                  [])),+                                                                                                                                          testName = UnqualComponentName+                                                                                                                                                       ""}}}],                                                                          condTreeConstraints = [Dependency-                                                                                                  `PackageName "base"`+                                                                                                  (PackageName+                                                                                                     "base")                                                                                                   (IntersectVersionRanges                                                                                                      (OrLaterVersion-                                                                                                        `mkVersion [4,10]`)+                                                                                                        (mkVersion+                                                                                                           [4,+                                                                                                            10]))                                                                                                      (EarlierVersion-                                                                                                        `mkVersion [4,11]`))-                                                                                                  (Set.fromList-                                                                                                     [LMainLibName]),+                                                                                                        (mkVersion+                                                                                                           [4,+                                                                                                            11])))+                                                                                                  mainLibSet,                                                                                                 Dependency-                                                                                                  `PackageName "containers"`-                                                                                                  AnyVersion-                                                                                                  (Set.fromList-                                                                                                     [LMainLibName])],+                                                                                                  (PackageName+                                                                                                     "containers")+                                                                                                  (OrLaterVersion+                                                                                                     (mkVersion+                                                                                                        [0]))+                                                                                                  mainLibSet],                                                                          condTreeData = TestSuite                                                                                           {testBuildInfo = BuildInfo                                                                                                              {asmOptions = [],@@ -508,29 +546,37 @@                                                                                                                                 []                                                                                                                                 [],                                                                                                               targetBuildDepends = [Dependency-                                                                                                                                      `PackageName "base"`+                                                                                                                                      (PackageName+                                                                                                                                         "base")                                                                                                                                       (IntersectVersionRanges                                                                                                                                          (OrLaterVersion-                                                                                                                                            `mkVersion [4,10]`)+                                                                                                                                            (mkVersion+                                                                                                                                               [4,+                                                                                                                                                10]))                                                                                                                                          (EarlierVersion-                                                                                                                                            `mkVersion [4,11]`))-                                                                                                                                      (Set.fromList-                                                                                                                                         [LMainLibName]),+                                                                                                                                            (mkVersion+                                                                                                                                               [4,+                                                                                                                                                11])))+                                                                                                                                      mainLibSet,                                                                                                                                     Dependency-                                                                                                                                      `PackageName "containers"`-                                                                                                                                      AnyVersion-                                                                                                                                      (Set.fromList-                                                                                                                                         [LMainLibName])],+                                                                                                                                      (PackageName+                                                                                                                                         "containers")+                                                                                                                                      (OrLaterVersion+                                                                                                                                         (mkVersion+                                                                                                                                            [0]))+                                                                                                                                      mainLibSet],                                                                                                               virtualModules = []},                                                                                            testInterface = TestSuiteUnsupported                                                                                                              (TestTypeUnknown                                                                                                                 ""-                                                                                                                `mkVersion []`),-                                                                                           testName = `UnqualComponentName ""`}}}],+                                                                                                                (mkVersion+                                                                                                                   [])),+                                                                                           testName = UnqualComponentName+                                                                                                        ""}}}],                           condTreeConstraints = [Dependency-                                                   `PackageName "HUnit"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName])],+                                                   (PackageName "HUnit")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],@@ -578,19 +624,22 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "HUnit"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                       (PackageName+                                                                                          "HUnit")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "Tests.hs",-                                            testName = `UnqualComponentName ""`}}],-   genPackageFlags = [MkFlag+                                                              (mkVersion [1, 0]) "Tests.hs",+                                            testName = UnqualComponentName ""}}],+   genPackageFlags = [MkPackageFlag                         {flagDefault = True,                          flagDescription = "",                          flagManual = True,-                         flagName = `FlagName "foo"`}],+                         flagName = FlagName "foo"}],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -613,8 +662,8 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "common-conditional"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "common-conditional",+                                        pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [SourceRepo@@ -624,8 +673,8 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Left `mkVersion [3,0]`,+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "Common-stanza demo demo",
tests/ParserTests/regressions/common-conditional.format view
@@ -14,20 +14,20 @@ library     exposed-modules:  ElseIf     default-language: Haskell2010-    build-depends:    ghc-prim -any+    build-depends:    ghc-prim      if flag(foo)         build-depends:             base >=4.10 && <4.11,-            containers -any+            containers          if os(windows)-            build-depends: Win32 -any+            build-depends: Win32  test-suite tests     type:          exitcode-stdio-1.0     main-is:       Tests.hs-    build-depends: HUnit -any+    build-depends: HUnit      if os(windows)         buildable: False@@ -35,10 +35,10 @@     if flag(foo)         build-depends:             base >=4.10 && <4.11,-            containers -any+            containers          if os(windows)-            build-depends: Win32 -any+            build-depends: Win32          if os(windows)-            build-depends: Win32 -any+            build-depends: Win32
tests/ParserTests/regressions/common.expr view
@@ -6,11 +6,11 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "ghc-prim"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "ghc-prim")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["ElseIf"]`],+                                       {exposedModules = [ModuleName "ElseIf"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -54,10 +54,12 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "ghc-prim"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                  (PackageName+                                                                                     "ghc-prim")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -66,13 +68,13 @@                                         signatures = []}},    condSubLibraries = [],    condTestSuites = [_×_-                       `UnqualComponentName "tests"`+                       (UnqualComponentName "tests")                        CondNode                          {condTreeComponents = [],                           condTreeConstraints = [Dependency-                                                   `PackageName "HUnit"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName])],+                                                   (PackageName "HUnit")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],@@ -120,15 +122,18 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "HUnit"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                       (PackageName+                                                                                          "HUnit")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "Tests.hs",-                                            testName = `UnqualComponentName ""`}}],+                                                              (mkVersion [1, 0]) "Tests.hs",+                                            testName = UnqualComponentName ""}}],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -152,8 +157,7 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "common"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "common", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [SourceRepo@@ -163,8 +167,8 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [1,10]`),+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV1_10,                            stability = "",                            subLibraries = [],                            synopsis = "Common-stanza demo demo",
tests/ParserTests/regressions/common.format view
@@ -16,9 +16,9 @@ library     exposed-modules:  ElseIf     default-language: Haskell2010-    build-depends:    ghc-prim -any+    build-depends:    ghc-prim  test-suite tests     type:          exitcode-stdio-1.0     main-is:       Tests.hs-    build-depends: HUnit -any+    build-depends: HUnit
tests/ParserTests/regressions/common2.expr view
@@ -10,10 +10,12 @@                                                condBranchIfTrue = CondNode                                                                     {condTreeComponents = [],                                                                      condTreeConstraints = [Dependency-                                                                                              `PackageName "Win32"`-                                                                                              AnyVersion-                                                                                              (Set.fromList-                                                                                                 [LMainLibName])],+                                                                                              (PackageName+                                                                                                 "Win32")+                                                                                              (OrLaterVersion+                                                                                                 (mkVersion+                                                                                                    [0]))+                                                                                              mainLibSet],                                                                      condTreeData = Library                                                                                       {exposedModules = [],                                                                                        libBuildInfo = BuildInfo@@ -67,10 +69,12 @@                                                                                                                            []                                                                                                                            [],                                                                                                          targetBuildDepends = [Dependency-                                                                                                                                 `PackageName "Win32"`-                                                                                                                                 AnyVersion-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName])],+                                                                                                                                 (PackageName+                                                                                                                                    "Win32")+                                                                                                                                 (OrLaterVersion+                                                                                                                                    (mkVersion+                                                                                                                                       [0]))+                                                                                                                                 mainLibSet],                                                                                                          virtualModules = []},                                                                                        libExposed = True,                                                                                        libName = LMainLibName,@@ -78,21 +82,21 @@                                                                                        reexportedModules = [],                                                                                        signatures = []}}}],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`+                                               (PackageName "base")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [4,10]`)-                                                  (EarlierVersion `mkVersion [4,11]`))-                                               (Set.fromList [LMainLibName]),+                                                  (OrLaterVersion (mkVersion [4, 10]))+                                                  (EarlierVersion (mkVersion [4, 11])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "containers"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "containers")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "ghc-prim"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "ghc-prim")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["ElseIf"]`],+                                       {exposedModules = [ModuleName "ElseIf"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -136,24 +140,31 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [4,10]`)+                                                                                        (mkVersion+                                                                                           [4, 10]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [4,11]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [4,+                                                                                            11])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "containers"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "containers")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "ghc-prim"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                  (PackageName+                                                                                     "ghc-prim")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -161,7 +172,7 @@                                         reexportedModules = [],                                         signatures = []}},    condSubLibraries = [_×_-                         `UnqualComponentName "internal"`+                         (UnqualComponentName "internal")                          CondNode                            {condTreeComponents = [CondBranch                                                     {condBranchCondition = `Var (OS Windows)`,@@ -169,10 +180,12 @@                                                      condBranchIfTrue = CondNode                                                                           {condTreeComponents = [],                                                                            condTreeConstraints = [Dependency-                                                                                                    `PackageName "Win32"`-                                                                                                    AnyVersion-                                                                                                    (Set.fromList-                                                                                                       [LMainLibName])],+                                                                                                    (PackageName+                                                                                                       "Win32")+                                                                                                    (OrLaterVersion+                                                                                                       (mkVersion+                                                                                                          [0]))+                                                                                                    mainLibSet],                                                                            condTreeData = Library                                                                                             {exposedModules = [],                                                                                              libBuildInfo = BuildInfo@@ -226,33 +239,36 @@                                                                                                                                  []                                                                                                                                  [],                                                                                                                targetBuildDepends = [Dependency-                                                                                                                                       `PackageName "Win32"`-                                                                                                                                       AnyVersion-                                                                                                                                       (Set.fromList-                                                                                                                                          [LMainLibName])],+                                                                                                                                       (PackageName+                                                                                                                                          "Win32")+                                                                                                                                       (OrLaterVersion+                                                                                                                                          (mkVersion+                                                                                                                                             [0]))+                                                                                                                                       mainLibSet],                                                                                                                virtualModules = []},                                                                                              libExposed = True,                                                                                              libName = LSubLibName-                                                                                                         `UnqualComponentName "internal"`,+                                                                                                         (UnqualComponentName+                                                                                                            "internal"),                                                                                              libVisibility = LibraryVisibilityPrivate,                                                                                              reexportedModules = [],                                                                                              signatures = []}}}],                             condTreeConstraints = [Dependency-                                                     `PackageName "base"`+                                                     (PackageName "base")                                                      (IntersectVersionRanges-                                                        (OrLaterVersion `mkVersion [4,10]`)-                                                        (EarlierVersion `mkVersion [4,11]`))-                                                     (Set.fromList [LMainLibName]),+                                                        (OrLaterVersion (mkVersion [4, 10]))+                                                        (EarlierVersion (mkVersion [4, 11])))+                                                     mainLibSet,                                                    Dependency-                                                     `PackageName "containers"`-                                                     AnyVersion-                                                     (Set.fromList [LMainLibName]),+                                                     (PackageName "containers")+                                                     (OrLaterVersion (mkVersion [0]))+                                                     mainLibSet,                                                    Dependency-                                                     `PackageName "ghc-prim"`-                                                     AnyVersion-                                                     (Set.fromList [LMainLibName])],+                                                     (PackageName "ghc-prim")+                                                     (OrLaterVersion (mkVersion [0]))+                                                     mainLibSet],                             condTreeData = Library-                                             {exposedModules = [`ModuleName ["ElseIf2"]`],+                                             {exposedModules = [ModuleName "ElseIf2"],                                               libBuildInfo = BuildInfo                                                                {asmOptions = [],                                                                 asmSources = [],@@ -299,33 +315,41 @@                                                                 staticOptions = PerCompilerFlavor                                                                                   [] [],                                                                 targetBuildDepends = [Dependency-                                                                                        `PackageName "base"`+                                                                                        (PackageName+                                                                                           "base")                                                                                         (IntersectVersionRanges                                                                                            (OrLaterVersion-                                                                                              `mkVersion [4,10]`)+                                                                                              (mkVersion+                                                                                                 [4,+                                                                                                  10]))                                                                                            (EarlierVersion-                                                                                              `mkVersion [4,11]`))-                                                                                        (Set.fromList-                                                                                           [LMainLibName]),+                                                                                              (mkVersion+                                                                                                 [4,+                                                                                                  11])))+                                                                                        mainLibSet,                                                                                       Dependency-                                                                                        `PackageName "containers"`-                                                                                        AnyVersion-                                                                                        (Set.fromList-                                                                                           [LMainLibName]),+                                                                                        (PackageName+                                                                                           "containers")+                                                                                        (OrLaterVersion+                                                                                           (mkVersion+                                                                                              [0]))+                                                                                        mainLibSet,                                                                                       Dependency-                                                                                        `PackageName "ghc-prim"`-                                                                                        AnyVersion-                                                                                        (Set.fromList-                                                                                           [LMainLibName])],+                                                                                        (PackageName+                                                                                           "ghc-prim")+                                                                                        (OrLaterVersion+                                                                                           (mkVersion+                                                                                              [0]))+                                                                                        mainLibSet],                                                                 virtualModules = []},                                               libExposed = True,                                               libName = LSubLibName-                                                          `UnqualComponentName "internal"`,+                                                          (UnqualComponentName "internal"),                                               libVisibility = LibraryVisibilityPrivate,                                               reexportedModules = [],                                               signatures = []}}],    condTestSuites = [_×_-                       `UnqualComponentName "tests"`+                       (UnqualComponentName "tests")                        CondNode                          {condTreeComponents = [CondBranch                                                   {condBranchCondition = `Var (OS Windows)`,@@ -333,10 +357,12 @@                                                    condBranchIfTrue = CondNode                                                                         {condTreeComponents = [],                                                                          condTreeConstraints = [Dependency-                                                                                                  `PackageName "Win32"`-                                                                                                  AnyVersion-                                                                                                  (Set.fromList-                                                                                                     [LMainLibName])],+                                                                                                  (PackageName+                                                                                                     "Win32")+                                                                                                  (OrLaterVersion+                                                                                                     (mkVersion+                                                                                                        [0]))+                                                                                                  mainLibSet],                                                                          condTreeData = TestSuite                                                                                           {testBuildInfo = BuildInfo                                                                                                              {asmOptions = [],@@ -389,26 +415,32 @@                                                                                                                                 []                                                                                                                                 [],                                                                                                               targetBuildDepends = [Dependency-                                                                                                                                      `PackageName "Win32"`-                                                                                                                                      AnyVersion-                                                                                                                                      (Set.fromList-                                                                                                                                         [LMainLibName])],+                                                                                                                                      (PackageName+                                                                                                                                         "Win32")+                                                                                                                                      (OrLaterVersion+                                                                                                                                         (mkVersion+                                                                                                                                            [0]))+                                                                                                                                      mainLibSet],                                                                                                               virtualModules = []},                                                                                            testInterface = TestSuiteUnsupported                                                                                                              (TestTypeUnknown                                                                                                                 ""-                                                                                                                `mkVersion []`),-                                                                                           testName = `UnqualComponentName ""`}}},+                                                                                                                (mkVersion+                                                                                                                   [])),+                                                                                           testName = UnqualComponentName+                                                                                                        ""}}},                                                 CondBranch                                                   {condBranchCondition = `Var (OS Windows)`,                                                    condBranchIfFalse = Nothing,                                                    condBranchIfTrue = CondNode                                                                         {condTreeComponents = [],                                                                          condTreeConstraints = [Dependency-                                                                                                  `PackageName "Win32"`-                                                                                                  AnyVersion-                                                                                                  (Set.fromList-                                                                                                     [LMainLibName])],+                                                                                                  (PackageName+                                                                                                     "Win32")+                                                                                                  (OrLaterVersion+                                                                                                     (mkVersion+                                                                                                        [0]))+                                                                                                  mainLibSet],                                                                          condTreeData = TestSuite                                                                                           {testBuildInfo = BuildInfo                                                                                                              {asmOptions = [],@@ -461,16 +493,20 @@                                                                                                                                 []                                                                                                                                 [],                                                                                                               targetBuildDepends = [Dependency-                                                                                                                                      `PackageName "Win32"`-                                                                                                                                      AnyVersion-                                                                                                                                      (Set.fromList-                                                                                                                                         [LMainLibName])],+                                                                                                                                      (PackageName+                                                                                                                                         "Win32")+                                                                                                                                      (OrLaterVersion+                                                                                                                                         (mkVersion+                                                                                                                                            [0]))+                                                                                                                                      mainLibSet],                                                                                                               virtualModules = []},                                                                                            testInterface = TestSuiteUnsupported                                                                                                              (TestTypeUnknown                                                                                                                 ""-                                                                                                                `mkVersion []`),-                                                                                           testName = `UnqualComponentName ""`}}},+                                                                                                                (mkVersion+                                                                                                                   [])),+                                                                                           testName = UnqualComponentName+                                                                                                        ""}}},                                                 CondBranch                                                   {condBranchCondition = `Var (OS Windows)`,                                                    condBranchIfFalse = Nothing,@@ -533,22 +569,24 @@                                                                                            testInterface = TestSuiteUnsupported                                                                                                              (TestTypeUnknown                                                                                                                 ""-                                                                                                                `mkVersion []`),-                                                                                           testName = `UnqualComponentName ""`}}}],+                                                                                                                (mkVersion+                                                                                                                   [])),+                                                                                           testName = UnqualComponentName+                                                                                                        ""}}}],                           condTreeConstraints = [Dependency-                                                   `PackageName "base"`+                                                   (PackageName "base")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [4,10]`)-                                                      (EarlierVersion `mkVersion [4,11]`))-                                                   (Set.fromList [LMainLibName]),+                                                      (OrLaterVersion (mkVersion [4, 10]))+                                                      (EarlierVersion (mkVersion [4, 11])))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "containers"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "containers")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "HUnit"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName])],+                                                   (PackageName "HUnit")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],@@ -596,29 +634,38 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "base"`+                                                                                       (PackageName+                                                                                          "base")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [4,10]`)+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 10]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [4,11]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 11])))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "containers"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                       (PackageName+                                                                                          "containers")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "HUnit"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                       (PackageName+                                                                                          "HUnit")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "Tests.hs",-                                            testName = `UnqualComponentName ""`}}],+                                                              (mkVersion [1, 0]) "Tests.hs",+                                            testName = UnqualComponentName ""}}],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -641,8 +688,7 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "common"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "common", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [SourceRepo@@ -652,8 +698,8 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Left `mkVersion [2,2]`,+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV2_2,                            stability = "",                            subLibraries = [],                            synopsis = "Common-stanza demo demo",
tests/ParserTests/regressions/common2.format view
@@ -13,36 +13,36 @@     default-language: Haskell2010     build-depends:         base >=4.10 && <4.11,-        containers -any,-        ghc-prim -any+        containers,+        ghc-prim      if os(windows)-        build-depends: Win32 -any+        build-depends: Win32  library internal     exposed-modules:  ElseIf2     default-language: Haskell2010     build-depends:         base >=4.10 && <4.11,-        containers -any,-        ghc-prim -any+        containers,+        ghc-prim      if os(windows)-        build-depends: Win32 -any+        build-depends: Win32  test-suite tests     type:          exitcode-stdio-1.0     main-is:       Tests.hs     build-depends:         base >=4.10 && <4.11,-        containers -any,-        HUnit -any+        containers,+        HUnit      if os(windows)-        build-depends: Win32 -any+        build-depends: Win32      if os(windows)-        build-depends: Win32 -any+        build-depends: Win32      if os(windows)         buildable: False
tests/ParserTests/regressions/common3.expr view
@@ -6,11 +6,11 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "ghc-prim"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "ghc-prim")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["ElseIf"]`],+                                       {exposedModules = [ModuleName "ElseIf"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -54,10 +54,12 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "ghc-prim"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                  (PackageName+                                                                                     "ghc-prim")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -66,23 +68,23 @@                                         signatures = []}},    condSubLibraries = [],    condTestSuites = [_×_-                       `UnqualComponentName "tests"`+                       (UnqualComponentName "tests")                        CondNode                          {condTreeComponents = [],                           condTreeConstraints = [Dependency-                                                   `PackageName "base"`+                                                   (PackageName "base")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [4,10]`)-                                                      (EarlierVersion `mkVersion [4,11]`))-                                                   (Set.fromList [LMainLibName]),+                                                      (OrLaterVersion (mkVersion [4, 10]))+                                                      (EarlierVersion (mkVersion [4, 11])))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "containers"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "containers")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "HUnit"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName])],+                                                   (PackageName "HUnit")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],@@ -130,29 +132,38 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "base"`+                                                                                       (PackageName+                                                                                          "base")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [4,10]`)+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 10]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [4,11]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 11])))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "containers"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                       (PackageName+                                                                                          "containers")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "HUnit"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                       (PackageName+                                                                                          "HUnit")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "Tests.hs",-                                            testName = `UnqualComponentName ""`}}],+                                                              (mkVersion [1, 0]) "Tests.hs",+                                            testName = UnqualComponentName ""}}],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -176,8 +187,7 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "common"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "common", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [SourceRepo@@ -187,8 +197,8 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Left `mkVersion [2,2]`,+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV2_2,                            stability = "",                            subLibraries = [],                            synopsis = "Common-stanza demo demo",
tests/ParserTests/regressions/common3.format view
@@ -14,12 +14,12 @@ library     exposed-modules:  ElseIf     default-language: Haskell2010-    build-depends:    ghc-prim -any+    build-depends:    ghc-prim  test-suite tests     type:          exitcode-stdio-1.0     main-is:       Tests.hs     build-depends:         base >=4.10 && <4.11,-        containers -any,-        HUnit -any+        containers,+        HUnit
tests/ParserTests/regressions/elif.expr view
@@ -10,10 +10,12 @@                                                condBranchIfTrue = CondNode                                                                     {condTreeComponents = [],                                                                      condTreeConstraints = [Dependency-                                                                                              `PackageName "unix"`-                                                                                              AnyVersion-                                                                                              (Set.fromList-                                                                                                 [LMainLibName])],+                                                                                              (PackageName+                                                                                                 "unix")+                                                                                              (OrLaterVersion+                                                                                                 (mkVersion+                                                                                                    [0]))+                                                                                              mainLibSet],                                                                      condTreeData = Library                                                                                       {exposedModules = [],                                                                                        libBuildInfo = BuildInfo@@ -67,10 +69,12 @@                                                                                                                            []                                                                                                                            [],                                                                                                          targetBuildDepends = [Dependency-                                                                                                                                 `PackageName "unix"`-                                                                                                                                 AnyVersion-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName])],+                                                                                                                                 (PackageName+                                                                                                                                    "unix")+                                                                                                                                 (OrLaterVersion+                                                                                                                                    (mkVersion+                                                                                                                                       [0]))+                                                                                                                                 mainLibSet],                                                                                                          virtualModules = []},                                                                                        libExposed = True,                                                                                        libName = LMainLibName,@@ -79,7 +83,7 @@                                                                                        signatures = []}}}],                       condTreeConstraints = [],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["ElseIf"]`],+                                       {exposedModules = [ModuleName "ElseIf"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -132,6 +136,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -154,8 +159,7 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "elif"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "elif", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [SourceRepo@@ -165,8 +169,8 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [1,10]`),+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV1_10,                            stability = "",                            subLibraries = [],                            synopsis = "The elif demo",
tests/ParserTests/regressions/elif.format view
@@ -15,4 +15,4 @@     default-language: Haskell2010      if os(linux)-        build-depends: unix -any+        build-depends: unix
tests/ParserTests/regressions/elif2.expr view
@@ -76,10 +76,12 @@                                                                                                  condBranchIfTrue = CondNode                                                                                                                       {condTreeComponents = [],                                                                                                                        condTreeConstraints = [Dependency-                                                                                                                                                `PackageName "Win32"`-                                                                                                                                                AnyVersion-                                                                                                                                                (Set.fromList-                                                                                                                                                   [LMainLibName])],+                                                                                                                                                (PackageName+                                                                                                                                                   "Win32")+                                                                                                                                                (OrLaterVersion+                                                                                                                                                   (mkVersion+                                                                                                                                                      [0]))+                                                                                                                                                mainLibSet],                                                                                                                        condTreeData = Library                                                                                                                                         {exposedModules = [],                                                                                                                                          libBuildInfo = BuildInfo@@ -133,10 +135,12 @@                                                                                                                                                                              []                                                                                                                                                                              [],                                                                                                                                                            targetBuildDepends = [Dependency-                                                                                                                                                                                   `PackageName "Win32"`-                                                                                                                                                                                   AnyVersion-                                                                                                                                                                                   (Set.fromList-                                                                                                                                                                                      [LMainLibName])],+                                                                                                                                                                                   (PackageName+                                                                                                                                                                                      "Win32")+                                                                                                                                                                                   (OrLaterVersion+                                                                                                                                                                                      (mkVersion+                                                                                                                                                                                         [0]))+                                                                                                                                                                                   mainLibSet],                                                                                                                                                            virtualModules = []},                                                                                                                                          libExposed = True,                                                                                                                                          libName = LMainLibName,@@ -206,10 +210,12 @@                                                condBranchIfTrue = CondNode                                                                     {condTreeComponents = [],                                                                      condTreeConstraints = [Dependency-                                                                                              `PackageName "unix"`-                                                                                              AnyVersion-                                                                                              (Set.fromList-                                                                                                 [LMainLibName])],+                                                                                              (PackageName+                                                                                                 "unix")+                                                                                              (OrLaterVersion+                                                                                                 (mkVersion+                                                                                                    [0]))+                                                                                              mainLibSet],                                                                      condTreeData = Library                                                                                       {exposedModules = [],                                                                                        libBuildInfo = BuildInfo@@ -263,10 +269,12 @@                                                                                                                            []                                                                                                                            [],                                                                                                          targetBuildDepends = [Dependency-                                                                                                                                 `PackageName "unix"`-                                                                                                                                 AnyVersion-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName])],+                                                                                                                                 (PackageName+                                                                                                                                    "unix")+                                                                                                                                 (OrLaterVersion+                                                                                                                                    (mkVersion+                                                                                                                                       [0]))+                                                                                                                                 mainLibSet],                                                                                                          virtualModules = []},                                                                                        libExposed = True,                                                                                        libName = LMainLibName,@@ -275,7 +283,7 @@                                                                                        signatures = []}}}],                       condTreeConstraints = [],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["ElseIf"]`],+                                       {exposedModules = [ModuleName "ElseIf"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -328,6 +336,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -350,8 +359,7 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "elif"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "elif", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [SourceRepo@@ -361,8 +369,8 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Left `mkVersion [2,2]`,+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV2_2,                            stability = "",                            subLibraries = [],                            synopsis = "The elif demo",
tests/ParserTests/regressions/elif2.format view
@@ -13,11 +13,11 @@     default-language: Haskell2010      if os(linux)-        build-depends: unix -any+        build-depends: unix      else         if os(windows)-            build-depends: Win32 -any+            build-depends: Win32          else             buildable: False
tests/ParserTests/regressions/encoding-0.8.expr view
@@ -6,14 +6,13 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`-                                               (VersionRangeParens-                                                  (UnionVersionRanges-                                                     (LaterVersion `mkVersion [4,4]`)-                                                     (ThisVersion `mkVersion [4,4]`)))-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "base")+                                               (UnionVersionRanges+                                                  (LaterVersion (mkVersion [4, 4]))+                                                  (ThisVersion (mkVersion [4, 4])))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["Data","Encoding"]`],+                                       {exposedModules = [ModuleName "Data.Encoding"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -63,15 +62,16 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`-                                                                                  (VersionRangeParens-                                                                                     (UnionVersionRanges-                                                                                        (LaterVersion-                                                                                           `mkVersion [4,4]`)-                                                                                        (ThisVersion-                                                                                           `mkVersion [4,4]`)))-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (UnionVersionRanges+                                                                                     (LaterVersion+                                                                                        (mkVersion+                                                                                           [4, 4]))+                                                                                     (ThisVersion+                                                                                        (mkVersion+                                                                                           [4, 4])))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -81,6 +81,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -103,22 +104,22 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "encoding"`,-                                        pkgVersion = `mkVersion [0,8]`},+                                       {pkgName = PackageName "encoding",+                                        pkgVersion = mkVersion [0, 8]},                            pkgUrl = "",                            setupBuildInfo = Just                                               SetupBuildInfo                                                 {defaultSetupDepends = False,                                                  setupDepends = [Dependency-                                                                   `PackageName "base"`-                                                                   (EarlierVersion `mkVersion [5]`)-                                                                   (Set.fromList [LMainLibName]),+                                                                   (PackageName "base")+                                                                   (EarlierVersion (mkVersion [5]))+                                                                   mainLibSet,                                                                  Dependency-                                                                   `PackageName "ghc-prim"`-                                                                   AnyVersion-                                                                   (Set.fromList [LMainLibName])]},+                                                                   (PackageName "ghc-prim")+                                                                   (OrLaterVersion (mkVersion [0]))+                                                                   mainLibSet]},                            sourceRepos = [],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [1,12]`),+                           specVersion = CabalSpecV1_12,                            stability = "",                            subLibraries = [],                            synopsis = "",
tests/ParserTests/regressions/encoding-0.8.format view
@@ -1,5 +1,6 @@ encoding-0.8.cabal:1:1: The field "name" is specified more than once at positions 1:1, 2:1-cabal-version:      >=1.12+encoding-0.8.cabal:4:22: Packages with 'cabal-version: 1.12' or later should specify a specific version of the Cabal spec of the form 'cabal-version: x.y'. Use 'cabal-version: 1.12'.+cabal-version:      1.12 name:               encoding version:            0.8 extra-source-files:@@ -10,9 +11,9 @@ custom-setup     setup-depends:         base <5,-        ghc-prim -any+        ghc-prim  library     exposed-modules: Data.Encoding     ghc-options:     -Wall -O2 -threaded -rtsopts "-with-rtsopts=-N1 -A64m"-    build-depends:   base (>4.4 || ==4.4)+    build-depends:   base >4.4 || ==4.4
tests/ParserTests/regressions/generics-sop.expr view
@@ -10,14 +10,18 @@                                                condBranchIfTrue = CondNode                                                                     {condTreeComponents = [],                                                                      condTreeConstraints = [Dependency-                                                                                              `PackageName "tagged"`+                                                                                              (PackageName+                                                                                                 "tagged")                                                                                               (IntersectVersionRanges                                                                                                  (OrLaterVersion-                                                                                                    `mkVersion [0,7]`)+                                                                                                    (mkVersion+                                                                                                       [0,+                                                                                                        7]))                                                                                                  (EarlierVersion-                                                                                                    `mkVersion [0,9]`))-                                                                                              (Set.fromList-                                                                                                 [LMainLibName])],+                                                                                                    (mkVersion+                                                                                                       [0,+                                                                                                        9])))+                                                                                              mainLibSet],                                                                      condTreeData = Library                                                                                       {exposedModules = [],                                                                                        libBuildInfo = BuildInfo@@ -71,14 +75,18 @@                                                                                                                            []                                                                                                                            [],                                                                                                          targetBuildDepends = [Dependency-                                                                                                                                 `PackageName "tagged"`+                                                                                                                                 (PackageName+                                                                                                                                    "tagged")                                                                                                                                  (IntersectVersionRanges                                                                                                                                     (OrLaterVersion-                                                                                                                                       `mkVersion [0,7]`)+                                                                                                                                       (mkVersion+                                                                                                                                          [0,+                                                                                                                                           7]))                                                                                                                                     (EarlierVersion-                                                                                                                                       `mkVersion [0,9]`))-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName])],+                                                                                                                                       (mkVersion+                                                                                                                                          [0,+                                                                                                                                           9])))+                                                                                                                                 mainLibSet],                                                                                                          virtualModules = []},                                                                                        libExposed = True,                                                                                        libName = LMainLibName,@@ -91,23 +99,31 @@                                                condBranchIfTrue = CondNode                                                                     {condTreeComponents = [],                                                                      condTreeConstraints = [Dependency-                                                                                              `PackageName "transformers-compat"`+                                                                                              (PackageName+                                                                                                 "transformers-compat")                                                                                               (IntersectVersionRanges                                                                                                  (OrLaterVersion-                                                                                                    `mkVersion [0,3]`)+                                                                                                    (mkVersion+                                                                                                       [0,+                                                                                                        3]))                                                                                                  (EarlierVersion-                                                                                                    `mkVersion [0,6]`))-                                                                                              (Set.fromList-                                                                                                 [LMainLibName]),+                                                                                                    (mkVersion+                                                                                                       [0,+                                                                                                        6])))+                                                                                              mainLibSet,                                                                                             Dependency-                                                                                              `PackageName "transformers"`+                                                                                              (PackageName+                                                                                                 "transformers")                                                                                               (IntersectVersionRanges                                                                                                  (OrLaterVersion-                                                                                                    `mkVersion [0,3]`)+                                                                                                    (mkVersion+                                                                                                       [0,+                                                                                                        3]))                                                                                                  (EarlierVersion-                                                                                                    `mkVersion [0,6]`))-                                                                                              (Set.fromList-                                                                                                 [LMainLibName])],+                                                                                                    (mkVersion+                                                                                                       [0,+                                                                                                        6])))+                                                                                              mainLibSet],                                                                      condTreeData = Library                                                                                       {exposedModules = [],                                                                                        libBuildInfo = BuildInfo@@ -161,23 +177,31 @@                                                                                                                            []                                                                                                                            [],                                                                                                          targetBuildDepends = [Dependency-                                                                                                                                 `PackageName "transformers-compat"`+                                                                                                                                 (PackageName+                                                                                                                                    "transformers-compat")                                                                                                                                  (IntersectVersionRanges                                                                                                                                     (OrLaterVersion-                                                                                                                                       `mkVersion [0,3]`)+                                                                                                                                       (mkVersion+                                                                                                                                          [0,+                                                                                                                                           3]))                                                                                                                                     (EarlierVersion-                                                                                                                                       `mkVersion [0,6]`))-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName]),+                                                                                                                                       (mkVersion+                                                                                                                                          [0,+                                                                                                                                           6])))+                                                                                                                                 mainLibSet,                                                                                                                                Dependency-                                                                                                                                 `PackageName "transformers"`+                                                                                                                                 (PackageName+                                                                                                                                    "transformers")                                                                                                                                  (IntersectVersionRanges                                                                                                                                     (OrLaterVersion-                                                                                                                                       `mkVersion [0,3]`)+                                                                                                                                       (mkVersion+                                                                                                                                          [0,+                                                                                                                                           3]))                                                                                                                                     (EarlierVersion-                                                                                                                                       `mkVersion [0,6]`))-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName])],+                                                                                                                                       (mkVersion+                                                                                                                                          [0,+                                                                                                                                           6])))+                                                                                                                                 mainLibSet],                                                                                                          virtualModules = []},                                                                                        libExposed = True,                                                                                        libName = LMainLibName,@@ -317,44 +341,44 @@                                                                                        reexportedModules = [],                                                                                        signatures = []}}}],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`+                                               (PackageName "base")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [4,7]`)-                                                  (EarlierVersion `mkVersion [5]`))-                                               (Set.fromList [LMainLibName]),+                                                  (OrLaterVersion (mkVersion [4, 7]))+                                                  (EarlierVersion (mkVersion [5])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "template-haskell"`+                                               (PackageName "template-haskell")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [2,8]`)-                                                  (EarlierVersion `mkVersion [2,13]`))-                                               (Set.fromList [LMainLibName]),+                                                  (OrLaterVersion (mkVersion [2, 8]))+                                                  (EarlierVersion (mkVersion [2, 13])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "ghc-prim"`+                                               (PackageName "ghc-prim")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [0,3]`)-                                                  (EarlierVersion `mkVersion [0,6]`))-                                               (Set.fromList [LMainLibName]),+                                                  (OrLaterVersion (mkVersion [0, 3]))+                                                  (EarlierVersion (mkVersion [0, 6])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "deepseq"`+                                               (PackageName "deepseq")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [1,3]`)-                                                  (EarlierVersion `mkVersion [1,5]`))-                                               (Set.fromList [LMainLibName])],+                                                  (OrLaterVersion (mkVersion [1, 3]))+                                                  (EarlierVersion (mkVersion [1, 5])))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["Generics","SOP"]`,-                                                          `ModuleName ["Generics","SOP","GGP"]`,-                                                          `ModuleName ["Generics","SOP","TH"]`,-                                                          `ModuleName ["Generics","SOP","Dict"]`,-                                                          `ModuleName ["Generics","SOP","Type","Metadata"]`,-                                                          `ModuleName ["Generics","SOP","BasicFunctors"]`,-                                                          `ModuleName ["Generics","SOP","Classes"]`,-                                                          `ModuleName ["Generics","SOP","Constraint"]`,-                                                          `ModuleName ["Generics","SOP","Instances"]`,-                                                          `ModuleName ["Generics","SOP","Metadata"]`,-                                                          `ModuleName ["Generics","SOP","NP"]`,-                                                          `ModuleName ["Generics","SOP","NS"]`,-                                                          `ModuleName ["Generics","SOP","Universe"]`,-                                                          `ModuleName ["Generics","SOP","Sing"]`],+                                       {exposedModules = [ModuleName "Generics.SOP",+                                                          ModuleName "Generics.SOP.GGP",+                                                          ModuleName "Generics.SOP.TH",+                                                          ModuleName "Generics.SOP.Dict",+                                                          ModuleName "Generics.SOP.Type.Metadata",+                                                          ModuleName "Generics.SOP.BasicFunctors",+                                                          ModuleName "Generics.SOP.Classes",+                                                          ModuleName "Generics.SOP.Constraint",+                                                          ModuleName "Generics.SOP.Instances",+                                                          ModuleName "Generics.SOP.Metadata",+                                                          ModuleName "Generics.SOP.NP",+                                                          ModuleName "Generics.SOP.NS",+                                                          ModuleName "Generics.SOP.Universe",+                                                          ModuleName "Generics.SOP.Sing"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -443,41 +467,50 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [4,7]`)+                                                                                        (mkVersion+                                                                                           [4, 7]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [5]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [5])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "template-haskell"`+                                                                                  (PackageName+                                                                                     "template-haskell")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [2,8]`)+                                                                                        (mkVersion+                                                                                           [2, 8]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [2,13]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [2,+                                                                                            13])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "ghc-prim"`+                                                                                  (PackageName+                                                                                     "ghc-prim")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [0,3]`)+                                                                                        (mkVersion+                                                                                           [0, 3]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [0,6]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [0, 6])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "deepseq"`+                                                                                  (PackageName+                                                                                     "deepseq")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [1,3]`)+                                                                                        (mkVersion+                                                                                           [1, 3]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [1,5]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                        (mkVersion+                                                                                           [1, 5])))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -486,19 +519,19 @@                                         signatures = []}},    condSubLibraries = [],    condTestSuites = [_×_-                       `UnqualComponentName "doctests"`+                       (UnqualComponentName "doctests")                        CondNode                          {condTreeComponents = [],                           condTreeConstraints = [Dependency-                                                   `PackageName "base"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "base")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "doctest"`+                                                   (PackageName "doctest")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [0,13]`)-                                                      (EarlierVersion `mkVersion [0,14]`))-                                                   (Set.fromList [LMainLibName])],+                                                      (OrLaterVersion (mkVersion [0, 13]))+                                                      (EarlierVersion (mkVersion [0, 14])))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],@@ -550,37 +583,43 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "base"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                       (PackageName+                                                                                          "base")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "doctest"`+                                                                                       (PackageName+                                                                                          "doctest")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [0,13]`)+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 13]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [0,14]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 14])))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "doctests.hs",-                                            testName = `UnqualComponentName ""`}},+                                                              (mkVersion [1, 0]) "doctests.hs",+                                            testName = UnqualComponentName ""}},                      _×_-                       `UnqualComponentName "generics-sop-examples"`+                       (UnqualComponentName "generics-sop-examples")                        CondNode                          {condTreeComponents = [],                           condTreeConstraints = [Dependency-                                                   `PackageName "base"`+                                                   (PackageName "base")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [4,6]`)-                                                      (EarlierVersion `mkVersion [5]`))-                                                   (Set.fromList [LMainLibName]),+                                                      (OrLaterVersion (mkVersion [4, 6]))+                                                      (EarlierVersion (mkVersion [5])))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "generics-sop"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName])],+                                                   (PackageName "generics-sop")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],@@ -620,7 +659,8 @@                                                                            ["-Wall"] [],                                                                otherExtensions = [],                                                                otherLanguages = [],-                                                               otherModules = [`ModuleName ["HTransExample"]`],+                                                               otherModules = [ModuleName+                                                                                 "HTransExample"],                                                                pkgconfigDepends = [],                                                                profOptions = PerCompilerFlavor                                                                                [] [],@@ -629,24 +669,30 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "base"`+                                                                                       (PackageName+                                                                                          "base")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [4,6]`)+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 6]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [5]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                             (mkVersion+                                                                                                [5])))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "generics-sop"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                       (PackageName+                                                                                          "generics-sop")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "Example.hs",-                                            testName = `UnqualComponentName ""`}}],+                                                              (mkVersion [1, 0]) "Example.hs",+                                            testName = UnqualComponentName ""}}],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "Edsko de Vries <edsko@well-typed.com>, Andres L\246h <andres@well-typed.com>",                            benchmarks = [],@@ -695,28 +741,28 @@                            licenseRaw = Right BSD3,                            maintainer = "andres@well-typed.com",                            package = PackageIdentifier-                                       {pkgName = `PackageName "generics-sop"`,-                                        pkgVersion = `mkVersion [0,3,1,0]`},+                                       {pkgName = PackageName "generics-sop",+                                        pkgVersion = mkVersion [0, 3, 1, 0]},                            pkgUrl = "",                            setupBuildInfo = Just                                               SetupBuildInfo                                                 {defaultSetupDepends = False,                                                  setupDepends = [Dependency-                                                                   `PackageName "base"`-                                                                   AnyVersion-                                                                   (Set.fromList [LMainLibName]),+                                                                   (PackageName "base")+                                                                   (OrLaterVersion (mkVersion [0]))+                                                                   mainLibSet,                                                                  Dependency-                                                                   `PackageName "Cabal"`-                                                                   AnyVersion-                                                                   (Set.fromList [LMainLibName]),+                                                                   (PackageName "Cabal")+                                                                   (OrLaterVersion (mkVersion [0]))+                                                                   mainLibSet,                                                                  Dependency-                                                                   `PackageName "cabal-doctest"`+                                                                   (PackageName "cabal-doctest")                                                                    (IntersectVersionRanges                                                                       (OrLaterVersion-                                                                         `mkVersion [1,0,2]`)+                                                                         (mkVersion [1, 0, 2]))                                                                       (EarlierVersion-                                                                         `mkVersion [1,1]`))-                                                                   (Set.fromList [LMainLibName])]},+                                                                         (mkVersion [1, 1])))+                                                                   mainLibSet]},                            sourceRepos = [SourceRepo                                             {repoBranch = Nothing,                                              repoKind = RepoHead,@@ -725,15 +771,19 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [1,10]`),+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV1_10,                            stability = "",                            subLibraries = [],                            synopsis = "Generic Programming using True Sums of Products",                            testSuites = [],-                           testedWith = [_×_ GHC (ThisVersion `mkVersion [7,8,4]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,10,3]`),-                                         _×_ GHC (ThisVersion `mkVersion [8,0,1]`),-                                         _×_ GHC (ThisVersion `mkVersion [8,0,2]`),-                                         _×_ GHC (ThisVersion `mkVersion [8,2,1]`),-                                         _×_ GHC (WildcardVersion `mkVersion [8,3]`)]}}+                           testedWith = [_×_ GHC (ThisVersion (mkVersion [7, 8, 4])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 10, 3])),+                                         _×_ GHC (ThisVersion (mkVersion [8, 0, 1])),+                                         _×_ GHC (ThisVersion (mkVersion [8, 0, 2])),+                                         _×_ GHC (ThisVersion (mkVersion [8, 2, 1])),+                                         _×_+                                           GHC+                                           (IntersectVersionRanges+                                              (OrLaterVersion (mkVersion [8, 3]))+                                              (EarlierVersion (mkVersion [8, 4])))]}}
tests/ParserTests/regressions/generics-sop.format view
@@ -9,7 +9,7 @@  tested-with:     ghc ==7.8.4 ghc ==7.10.3 ghc ==8.0.1 ghc ==8.0.2 ghc ==8.2.1-    ghc ==8.3.*+    ghc >=8.3 && <8.4  synopsis:           Generic Programming using True Sums of Products description:@@ -51,8 +51,8 @@  custom-setup     setup-depends:-        base -any,-        Cabal -any,+        base,+        Cabal,         cabal-doctest >=1.0.2 && <1.1  library@@ -114,7 +114,7 @@     ghc-options:       -Wall -threaded     x-doctest-options: --preserve-it     build-depends:-        base -any,+        base,         doctest >=0.13 && <0.14  test-suite generics-sop-examples@@ -126,4 +126,4 @@     ghc-options:      -Wall     build-depends:         base >=4.6 && <5,-        generics-sop -any+        generics-sop
+ tests/ParserTests/regressions/hasktorch.cabal view
@@ -0,0 +1,558 @@+cabal-version: 2.2+-- ================================================================ --+-- ======== This cabal file has been modified from dhall ========== --+-- ======== This constitutes the 0.0.1.0 release.        ========== --+-- ======== Dhall can generate this file, but will never ========== --+-- ======== be able to upload to hackage. For more, see: ========== --+-- ==== https://github.com/haskell/hackage-server/issues/795 ====== --+-- ================================================================ --+name: hasktorch+version: 0.0.1.0+license: BSD-3-Clause+maintainer: Sam Stites <fnz@fgvgrf.vb>, Austin Huang <nhfgvau@nyhz.zvg.rqh> - cipher:ROT13+author: Hasktorch dev team+homepage: https://github.com/hasktorch/hasktorch#readme+bug-reports: https://github.com/hasktorch/hasktorch/issues+synopsis: Torch for tensors and neural networks in Haskell+description:+    Hasktorch is a library for tensors and neural networks in Haskell. It is an independent open source community project which leverages the core C libraries shared by Torch and PyTorch. This library leverages @cabal v2-build@ and @backpack@. *Note that this project is in early development and should only be used by contributing developers. Expect substantial changes to the library API as it evolves. Contributions and PRs are welcome (see details on github).*+category: Tensors, Machine Learning, AI+build-type: Simple++source-repository head+    type: git+    location: https://github.com/hasktorch/hasktorch++flag cuda+    description:+        build with THC support+    default: False++flag lite+    description:+        only build with Double and Long support+    default: False++library+    exposed-modules:+        Torch.Core.Exceptions+        Torch.Core.Random+        Torch.Core.LogAdd+    reexported-modules: Torch.Types.Numeric,+                        Torch.Long,+                        Torch.Long.Dynamic,+                        Torch.Long.Storage,+                        Torch.Double,+                        Torch.Double.Dynamic,+                        Torch.Double.Storage,+                        Torch.Double.NN,+                        Torch.Double.NN.Activation,+                        Torch.Double.NN.Backprop,+                        Torch.Double.NN.Conv1d,+                        Torch.Double.NN.Conv2d,+                        Torch.Double.NN.Criterion,+                        Torch.Double.NN.Layers,+                        Torch.Double.NN.Linear,+                        Torch.Double.NN.Math,+                        Torch.Double.NN.Padding,+                        Torch.Double.NN.Pooling,+                        Torch.Double.NN.Sampling,+                        Torch.Double.Dynamic.NN,+                        Torch.Double.Dynamic.NN.Activation,+                        Torch.Double.Dynamic.NN.Pooling,+                        Torch.Double.Dynamic.NN.Criterion+    hs-source-dirs: utils+    default-language: Haskell2010+    default-extensions: LambdaCase DataKinds TypeFamilies+                        TypeSynonymInstances ScopedTypeVariables FlexibleContexts CPP+    build-depends:+        base (==4.7 || >4.7) && <5,+        -- containers ==0.5.10 || >0.5.10,+        -- deepseq ==1.3.0 || >1.3.0,+        dimensions ==1.0 || >1.0,+        -- managed (==1.0.0 || >1.0.0) && <1.1,+        -- microlens ==0.4.8 || >0.4.8,+        -- numeric-limits ==0.1.0 || >0.1.0,+        safe-exceptions ==0.1.0 || >0.1.0,+        singletons ==2.2 || >2.2,+        text ==1.2.2 || >1.2.2,+        -- typelits-witnesses ==0.2.3 || >0.2.3,+        hasktorch-cpu -any,+        hasktorch-ffi-th (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-types-th (==0.0.1 || >0.0.1) && <0.0.2++    -- <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> --+    -- BEGIN EDITS+    -- <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> --+    if !flag(lite)+      reexported-modules:+        Torch.Byte,+        Torch.Byte.Dynamic,+        Torch.Byte.Storage,+        Torch.Char,+        Torch.Char.Dynamic,+        Torch.Char.Storage,+        Torch.Short,+        Torch.Short.Dynamic,+        Torch.Short.Storage,+        Torch.Int,+        Torch.Int.Dynamic,+        Torch.Int.Storage,+        Torch.Float,+        Torch.Float.Dynamic,+        Torch.Float.Storage++    if flag(cuda)+      build-depends:+        hasktorch-gpu -any+      reexported-modules:+        Torch.Cuda.Long,+        Torch.Cuda.Long.Dynamic,+        Torch.Cuda.Long.Storage,+        Torch.Cuda.Double,+        Torch.Cuda.Double.Dynamic,+        Torch.Cuda.Double.Storage,+        Torch.Cuda.Double.NN,+        Torch.Cuda.Double.NN.Activation,+        Torch.Cuda.Double.NN.Backprop,+        Torch.Cuda.Double.NN.Conv1d,+        Torch.Cuda.Double.NN.Conv2d,+        Torch.Cuda.Double.NN.Criterion,+        Torch.Cuda.Double.NN.Layers,+        Torch.Cuda.Double.NN.Linear,+        Torch.Cuda.Double.NN.Math,+        Torch.Cuda.Double.NN.Padding,+        Torch.Cuda.Double.NN.Pooling,+        Torch.Cuda.Double.NN.Sampling,+        Torch.Cuda.Double.Dynamic.NN,+        Torch.Cuda.Double.Dynamic.NN.Activation,+        Torch.Cuda.Double.Dynamic.NN.Pooling,+        Torch.Cuda.Double.Dynamic.NN.Criterion+      if !flag(lite)+        reexported-modules:+          Torch.Cuda.Byte,+          Torch.Cuda.Byte.Dynamic,+          Torch.Cuda.Byte.Storage,+          Torch.Cuda.Char,+          Torch.Cuda.Char.Dynamic,+          Torch.Cuda.Char.Storage,+          Torch.Cuda.Short,+          Torch.Cuda.Short.Dynamic,+          Torch.Cuda.Short.Storage,+          Torch.Cuda.Int,+          Torch.Cuda.Int.Dynamic,+          Torch.Cuda.Int.Storage,+          Torch.Cuda.Float,+          Torch.Cuda.Float.Dynamic,+          Torch.Cuda.Float.Storage+    -- <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> --+    -- END EDITS+    -- <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> --++library hasktorch-cpu+    exposed-modules:+        Torch.Long+        Torch.Long.Dynamic+        Torch.Long.Storage+        Torch.Double+        Torch.Double.Dynamic+        Torch.Double.Storage+    reexported-modules: Torch.Double.NN,+                        Torch.Double.NN.Activation,+                        Torch.Double.NN.Backprop,+                        Torch.Double.NN.Conv1d,+                        Torch.Double.NN.Conv2d,+                        Torch.Double.NN.Criterion,+                        Torch.Double.NN.Layers,+                        Torch.Double.NN.Linear,+                        Torch.Double.NN.Math,+                        Torch.Double.NN.Padding,+                        Torch.Double.NN.Pooling,+                        Torch.Double.NN.Sampling,+                        Torch.Double.Dynamic.NN,+                        Torch.Double.Dynamic.NN.Activation,+                        Torch.Double.Dynamic.NN.Pooling,+                        Torch.Double.Dynamic.NN.Criterion,+                        Torch.Float.NN,+                        Torch.Float.NN.Activation,+                        Torch.Float.NN.Backprop,+                        Torch.Float.NN.Conv1d,+                        Torch.Float.NN.Conv2d,+                        Torch.Float.NN.Criterion,+                        Torch.Float.NN.Layers,+                        Torch.Float.NN.Linear,+                        Torch.Float.NN.Math,+                        Torch.Float.NN.Padding,+                        Torch.Float.NN.Pooling,+                        Torch.Float.NN.Sampling,+                        Torch.Float.Dynamic.NN,+                        Torch.Float.Dynamic.NN.Activation,+                        Torch.Float.Dynamic.NN.Pooling,+                        Torch.Float.Dynamic.NN.Criterion+    hs-source-dirs: utils src+    other-modules:+        Torch.Core.Exceptions+        Torch.Core.Random+        Torch.Core.LogAdd+    default-language: Haskell2010+    default-extensions: LambdaCase DataKinds TypeFamilies+                        TypeSynonymInstances ScopedTypeVariables FlexibleContexts CPP+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-types-th (==0.0.1 || >0.0.1) && <0.0.2,+        -- containers ==0.5.10 || >0.5.10,+        -- deepseq ==1.3.0 || >1.3.0,+        dimensions ==1.0 || >1.0,+        hasktorch-ffi-th (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-types-th (==0.0.1 || >0.0.1) && <0.0.2,+        -- managed (==1.0.0 || >1.0.0) && <1.1,+        -- microlens ==0.4.8 || >0.4.8,+        -- numeric-limits ==0.1.0 || >0.1.0,+        safe-exceptions ==0.1.0 || >0.1.0,+        singletons ==2.2 || >2.2,+        text ==1.2.2 || >1.2.2,+        -- typelits-witnesses ==0.2.3 || >0.2.3,+        hasktorch-indef-floating -any,+        hasktorch-indef-signed -any+    mixins: hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Long.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Long.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Long.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Long.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Long.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Long.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Long.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Long.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Long.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Long.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Long.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Long.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Long.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Long.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Long.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Long.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Long.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Long.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Long.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Long.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Long.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Long.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Long.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Long.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Long.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Long.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Long.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Long.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Long.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Long.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Long.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Long.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Long.Types, Torch.Indef.Index as Torch.Long.Index, Torch.Indef.Mask as Torch.Long.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Long.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Long.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Long, Torch.Sig.Storage as Torch.FFI.TH.Long.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Long.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Long.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Long.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.TH.Long.TensorMath),+            hasktorch-indef-floating (Torch.Indef.Storage as Torch.Indef.Double.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Double.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Double.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Double.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Double.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Double.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Double.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Double.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Double.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Double.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Double.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Double.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Double.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Double.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Double.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Double.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Double.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Double.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Double.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Double.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Double.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Double.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Double.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Double.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Double.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Double.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Double.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Double.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Double.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Double.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Double.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Double.Types, Torch.Indef.Index as Torch.Double.Index, Torch.Indef.Mask as Torch.Double.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Double.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Blas as Torch.Indef.Double.Dynamic.Tensor.Math.Blas, Torch.Indef.Dynamic.Tensor.Math.Lapack as Torch.Indef.Double.Dynamic.Tensor.Math.Lapack, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating as Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise.Floating, Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating as Torch.Indef.Double.Dynamic.Tensor.Math.Reduce.Floating, Torch.Indef.Dynamic.Tensor.Math.Floating as Torch.Indef.Double.Dynamic.Tensor.Math.Floating, Torch.Indef.Static.Tensor.Math.Blas as Torch.Indef.Double.Tensor.Math.Blas, Torch.Indef.Static.Tensor.Math.Lapack as Torch.Indef.Double.Tensor.Math.Lapack, Torch.Indef.Static.Tensor.Math.Pointwise.Floating as Torch.Indef.Double.Tensor.Math.Pointwise.Floating, Torch.Indef.Static.Tensor.Math.Reduce.Floating as Torch.Indef.Double.Tensor.Math.Reduce.Floating, Torch.Indef.Static.Tensor.Math.Floating as Torch.Indef.Double.Tensor.Math.Floating, Torch.Indef.Static.Tensor.Random.TH as Torch.Indef.Double.Tensor.Random.TH, Torch.Indef.Static.Tensor.Math.Random.TH as Torch.Indef.Double.Tensor.Math.Random.TH, Torch.Indef.Dynamic.Tensor.Random.TH as Torch.Indef.Double.Dynamic.Tensor.Random.TH, Torch.Indef.Dynamic.Tensor.Math.Random.TH as Torch.Indef.Double.Dynamic.Tensor.Math.Random.TH, Torch.Undefined.Tensor.Random.THC as Torch.Undefined.Double.Tensor.Random.THC, Torch.Indef.Storage as Torch.Indef.Double.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Double.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Double.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Double.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Double.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Double.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Double.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Double.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Double.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Double.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Double.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Double.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Double.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Double.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Double.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Double.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Double.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Double.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Double.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Double.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Double.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Double.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Double.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Double.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Double.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Double.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Double.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Double.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Double.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Double.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Double.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Double.Types, Torch.Indef.Index as Torch.Double.Index, Torch.Indef.Mask as Torch.Double.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Double.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.NN as Torch.Double.Dynamic.NN, Torch.Indef.Dynamic.NN.Activation as Torch.Double.Dynamic.NN.Activation, Torch.Indef.Dynamic.NN.Pooling as Torch.Double.Dynamic.NN.Pooling, Torch.Indef.Dynamic.NN.Criterion as Torch.Double.Dynamic.NN.Criterion, Torch.Indef.Static.NN as Torch.Double.NN, Torch.Indef.Static.NN as Torch.Double.NN, Torch.Indef.Static.NN.Activation as Torch.Double.NN.Activation, Torch.Indef.Static.NN.Backprop as Torch.Double.NN.Backprop, Torch.Indef.Static.NN.Conv1d as Torch.Double.NN.Conv1d, Torch.Indef.Static.NN.Conv2d as Torch.Double.NN.Conv2d, Torch.Indef.Static.NN.Criterion as Torch.Double.NN.Criterion, Torch.Indef.Static.NN.Layers as Torch.Double.NN.Layers, Torch.Indef.Static.NN.Linear as Torch.Double.NN.Linear, Torch.Indef.Static.NN.Math as Torch.Double.NN.Math, Torch.Indef.Static.NN.Padding as Torch.Double.NN.Padding, Torch.Indef.Static.NN.Pooling as Torch.Double.NN.Pooling, Torch.Indef.Static.NN.Sampling as Torch.Double.NN.Sampling) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Double, Torch.Sig.Storage as Torch.FFI.TH.Double.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Double.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Double.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Double.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Double.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Double.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Floating as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Reduce.Floating as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Floating as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Blas as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Lapack as Torch.FFI.TH.Double.TensorLapack, Torch.Sig.NN as Torch.FFI.TH.NN.Double, Torch.Sig.Types.NN as Torch.Types.TH, Torch.Sig.Tensor.Math.Random.TH as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Random.TH as Torch.FFI.TH.Double.TensorRandom, Torch.Sig.Tensor.Random.THC as Torch.Undefined.Double.Tensor.Random.THC)+    +    if flag(lite)+    else+        exposed-modules:+            Torch.Byte+            Torch.Byte.Dynamic+            Torch.Byte.Storage+            Torch.Char+            Torch.Char.Dynamic+            Torch.Char.Storage+            Torch.Short+            Torch.Short.Dynamic+            Torch.Short.Storage+            Torch.Int+            Torch.Int.Dynamic+            Torch.Int.Storage+            Torch.Float+            Torch.Float.Dynamic+            Torch.Float.Storage+        build-depends:+            hasktorch-indef-unsigned -any+        mixins: hasktorch-indef-unsigned (Torch.Indef.Storage as Torch.Indef.Byte.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Byte.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Byte.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Byte.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Byte.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Byte.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Byte.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Byte.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Byte.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Byte.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Byte.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Byte.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Byte.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Byte.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Byte.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Byte.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Byte.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Byte.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Byte.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Byte.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Byte.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Byte.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Byte.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Byte.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Byte.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Byte.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Byte.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Byte.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Byte.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Byte.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Byte.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Byte.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Byte.Types, Torch.Indef.Index as Torch.Byte.Index, Torch.Indef.Mask as Torch.Byte.Mask) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Byte, Torch.Sig.Storage as Torch.FFI.TH.Byte.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Byte.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Byte.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Byte.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Byte.TensorMath),+                hasktorch-indef-unsigned (Torch.Indef.Storage as Torch.Indef.Char.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Char.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Char.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Char.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Char.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Char.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Char.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Char.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Char.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Char.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Char.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Char.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Char.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Char.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Char.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Char.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Char.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Char.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Char.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Char.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Char.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Char.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Char.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Char.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Char.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Char.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Char.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Char.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Char.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Char.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Char.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Char.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Char.Types, Torch.Indef.Index as Torch.Char.Index, Torch.Indef.Mask as Torch.Char.Mask) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Char, Torch.Sig.Storage as Torch.FFI.TH.Char.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Char.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Char.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Char.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Char.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Char.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Char.TensorMath),+                hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Short.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Short.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Short.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Short.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Short.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Short.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Short.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Short.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Short.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Short.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Short.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Short.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Short.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Short.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Short.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Short.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Short.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Short.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Short.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Short.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Short.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Short.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Short.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Short.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Short.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Short.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Short.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Short.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Short.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Short.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Short.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Short.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Short.Types, Torch.Indef.Index as Torch.Short.Index, Torch.Indef.Mask as Torch.Short.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Short.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Short.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Short, Torch.Sig.Storage as Torch.FFI.TH.Short.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Short.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Short.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Short.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Short.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Short.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.TH.Short.TensorMath),+                hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Int.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Int.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Int.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Int.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Int.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Int.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Int.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Int.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Int.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Int.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Int.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Int.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Int.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Int.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Int.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Int.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Int.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Int.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Int.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Int.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Int.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Int.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Int.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Int.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Int.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Int.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Int.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Int.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Int.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Int.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Int.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Int.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Int.Types, Torch.Indef.Index as Torch.Int.Index, Torch.Indef.Mask as Torch.Int.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Int.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Int.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Int, Torch.Sig.Storage as Torch.FFI.TH.Int.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Int.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Int.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Int.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Int.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Int.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.TH.Int.TensorMath),+                hasktorch-indef-floating (Torch.Indef.Storage as Torch.Indef.Float.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Float.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Float.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Float.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Float.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Float.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Float.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Float.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Float.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Float.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Float.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Float.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Float.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Float.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Float.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Float.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Float.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Float.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Float.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Float.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Float.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Float.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Float.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Float.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Float.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Float.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Float.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Float.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Float.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Float.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Float.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Float.Types, Torch.Indef.Index as Torch.Float.Index, Torch.Indef.Mask as Torch.Float.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Float.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Blas as Torch.Indef.Float.Dynamic.Tensor.Math.Blas, Torch.Indef.Dynamic.Tensor.Math.Lapack as Torch.Indef.Float.Dynamic.Tensor.Math.Lapack, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating as Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise.Floating, Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating as Torch.Indef.Float.Dynamic.Tensor.Math.Reduce.Floating, Torch.Indef.Dynamic.Tensor.Math.Floating as Torch.Indef.Float.Dynamic.Tensor.Math.Floating, Torch.Indef.Static.Tensor.Math.Blas as Torch.Indef.Float.Tensor.Math.Blas, Torch.Indef.Static.Tensor.Math.Lapack as Torch.Indef.Float.Tensor.Math.Lapack, Torch.Indef.Static.Tensor.Math.Pointwise.Floating as Torch.Indef.Float.Tensor.Math.Pointwise.Floating, Torch.Indef.Static.Tensor.Math.Reduce.Floating as Torch.Indef.Float.Tensor.Math.Reduce.Floating, Torch.Indef.Static.Tensor.Math.Floating as Torch.Indef.Float.Tensor.Math.Floating, Torch.Indef.Static.Tensor.Random.TH as Torch.Indef.Float.Tensor.Random.TH, Torch.Indef.Static.Tensor.Math.Random.TH as Torch.Indef.Float.Tensor.Math.Random.TH, Torch.Indef.Dynamic.Tensor.Random.TH as Torch.Indef.Float.Dynamic.Tensor.Random.TH, Torch.Indef.Dynamic.Tensor.Math.Random.TH as Torch.Indef.Float.Dynamic.Tensor.Math.Random.TH, Torch.Undefined.Tensor.Random.THC as Torch.Undefined.Float.Tensor.Random.THC, Torch.Indef.Storage as Torch.Indef.Float.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Float.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Float.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Float.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Float.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Float.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Float.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Float.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Float.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Float.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Float.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Float.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Float.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Float.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Float.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Float.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Float.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Float.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Float.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Float.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Float.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Float.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Float.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Float.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Float.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Float.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Float.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Float.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Float.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Float.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Float.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Float.Types, Torch.Indef.Index as Torch.Float.Index, Torch.Indef.Mask as Torch.Float.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Float.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.NN as Torch.Float.Dynamic.NN, Torch.Indef.Dynamic.NN.Activation as Torch.Float.Dynamic.NN.Activation, Torch.Indef.Dynamic.NN.Pooling as Torch.Float.Dynamic.NN.Pooling, Torch.Indef.Dynamic.NN.Criterion as Torch.Float.Dynamic.NN.Criterion, Torch.Indef.Static.NN as Torch.Float.NN, Torch.Indef.Static.NN as Torch.Float.NN, Torch.Indef.Static.NN.Activation as Torch.Float.NN.Activation, Torch.Indef.Static.NN.Backprop as Torch.Float.NN.Backprop, Torch.Indef.Static.NN.Conv1d as Torch.Float.NN.Conv1d, Torch.Indef.Static.NN.Conv2d as Torch.Float.NN.Conv2d, Torch.Indef.Static.NN.Criterion as Torch.Float.NN.Criterion, Torch.Indef.Static.NN.Layers as Torch.Float.NN.Layers, Torch.Indef.Static.NN.Linear as Torch.Float.NN.Linear, Torch.Indef.Static.NN.Math as Torch.Float.NN.Math, Torch.Indef.Static.NN.Padding as Torch.Float.NN.Padding, Torch.Indef.Static.NN.Pooling as Torch.Float.NN.Pooling, Torch.Indef.Static.NN.Sampling as Torch.Float.NN.Sampling) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Float, Torch.Sig.Storage as Torch.FFI.TH.Float.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Float.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Float.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Float.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Float.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Float.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Floating as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Reduce.Floating as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Floating as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Blas as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Lapack as Torch.FFI.TH.Float.TensorLapack, Torch.Sig.NN as Torch.FFI.TH.NN.Float, Torch.Sig.Types.NN as Torch.Types.TH, Torch.Sig.Tensor.Math.Random.TH as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Random.TH as Torch.FFI.TH.Float.TensorRandom, Torch.Sig.Tensor.Random.THC as Torch.Undefined.Float.Tensor.Random.THC)++library hasktorch-gpu+    exposed-modules:+        Torch.Cuda.Long+        Torch.Cuda.Long.Dynamic+        Torch.Cuda.Long.Storage+        Torch.Cuda.Double+        Torch.Cuda.Double.Dynamic+        Torch.Cuda.Double.Storage+    reexported-modules: Torch.Cuda.Double.NN,+                        Torch.Cuda.Double.NN.Activation,+                        Torch.Cuda.Double.NN.Backprop,+                        Torch.Cuda.Double.NN.Conv1d,+                        Torch.Cuda.Double.NN.Conv2d,+                        Torch.Cuda.Double.NN.Criterion,+                        Torch.Cuda.Double.NN.Layers,+                        Torch.Cuda.Double.NN.Linear,+                        Torch.Cuda.Double.NN.Math,+                        Torch.Cuda.Double.NN.Padding,+                        Torch.Cuda.Double.NN.Pooling,+                        Torch.Cuda.Double.NN.Sampling,+                        Torch.Cuda.Double.Dynamic.NN,+                        Torch.Cuda.Double.Dynamic.NN.Activation,+                        Torch.Cuda.Double.Dynamic.NN.Pooling,+                        Torch.Cuda.Double.Dynamic.NN.Criterion+    cpp-options: -DCUDA -DHASKTORCH_INTERNAL_CUDA+    hs-source-dirs: utils src+    other-modules:+        Torch.Core.Exceptions+        Torch.Core.Random+        Torch.Core.LogAdd+    default-language: Haskell2010+    default-extensions: LambdaCase DataKinds TypeFamilies+                        TypeSynonymInstances ScopedTypeVariables FlexibleContexts CPP+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-types-th (==0.0.1 || >0.0.1) && <0.0.2,+        -- containers ==0.5.10 || >0.5.10,+        -- deepseq ==1.3.0 || >1.3.0,+        dimensions ==1.0 || >1.0,+        hasktorch-ffi-th (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-types-th (==0.0.1 || >0.0.1) && <0.0.2,+        -- managed (==1.0.0 || >1.0.0) && <1.1,+        -- microlens ==0.4.8 || >0.4.8,+        -- numeric-limits ==0.1.0 || >0.1.0,+        safe-exceptions ==0.1.0 || >0.1.0,+        singletons ==2.2 || >2.2,+        text ==1.2.2 || >1.2.2,+        -- typelits-witnesses ==0.2.3 || >0.2.3,+        hasktorch-indef-floating -any,+        hasktorch-indef-signed -any,+        hasktorch-ffi-thc (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-types-thc (==0.0.1 || >0.0.1) && <0.0.2+    mixins: hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Cuda.Long.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Long.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Long.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Long.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Long.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Long.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Long.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Long.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Long.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Long.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Long.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Long.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Long.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Long.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Long.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Long.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Long.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Long.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Long.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Long.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Long.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Long.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Long.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Long.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Long.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Long.Types, Torch.Indef.Index as Torch.Cuda.Long.Index, Torch.Indef.Mask as Torch.Cuda.Long.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Long.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Long, Torch.Sig.Storage as Torch.FFI.THC.Long.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Long.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Long.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Long.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Long.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Long.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Long.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Long.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Long.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Long.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Long.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Long.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Long.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Long.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Long.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Long.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Long.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Long.TensorTopK, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.THC.Long.TensorMathPointwise),+            hasktorch-indef-floating (Torch.Indef.Storage as Torch.Indef.Cuda.Double.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Double.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Double.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Double.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Double.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Double.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Double.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Double.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Double.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Double.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Double.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Double.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Double.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Double.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Double.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Double.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Double.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Double.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Double.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Double.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Double.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Double.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Double.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Double.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Double.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Double.Types, Torch.Indef.Index as Torch.Cuda.Double.Index, Torch.Indef.Mask as Torch.Cuda.Double.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Double.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Blas as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Blas, Torch.Indef.Dynamic.Tensor.Math.Lapack as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Lapack, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise.Floating, Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Reduce.Floating, Torch.Indef.Dynamic.Tensor.Math.Floating as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Floating, Torch.Indef.Static.Tensor.Math.Blas as Torch.Indef.Cuda.Double.Tensor.Math.Blas, Torch.Indef.Static.Tensor.Math.Lapack as Torch.Indef.Cuda.Double.Tensor.Math.Lapack, Torch.Indef.Static.Tensor.Math.Pointwise.Floating as Torch.Indef.Cuda.Double.Tensor.Math.Pointwise.Floating, Torch.Indef.Static.Tensor.Math.Reduce.Floating as Torch.Indef.Cuda.Double.Tensor.Math.Reduce.Floating, Torch.Indef.Static.Tensor.Math.Floating as Torch.Indef.Cuda.Double.Tensor.Math.Floating, Torch.Undefined.Tensor.Random.TH as Torch.Undefined.Cuda.Double.Tensor.Random.TH, Torch.Undefined.Tensor.Math.Random.TH as Torch.Undefined.Cuda.Double.Tensor.Math.Random.TH, Torch.Indef.Static.Tensor.Random.THC as Torch.Indef.Cuda.Double.Tensor.Random.THC, Torch.Indef.Dynamic.Tensor.Random.THC as Torch.Indef.Cuda.Double.Dynamic.Tensor.Random.THC, Torch.Indef.Storage as Torch.Indef.Cuda.Double.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Double.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Double.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Double.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Double.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Double.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Double.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Double.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Double.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Double.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Double.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Double.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Double.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Double.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Double.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Double.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Double.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Double.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Double.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Double.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Double.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Double.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Double.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Double.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Double.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Double.Types, Torch.Indef.Index as Torch.Cuda.Double.Index, Torch.Indef.Mask as Torch.Cuda.Double.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Double.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.NN as Torch.Cuda.Double.Dynamic.NN, Torch.Indef.Dynamic.NN.Activation as Torch.Cuda.Double.Dynamic.NN.Activation, Torch.Indef.Dynamic.NN.Pooling as Torch.Cuda.Double.Dynamic.NN.Pooling, Torch.Indef.Dynamic.NN.Criterion as Torch.Cuda.Double.Dynamic.NN.Criterion, Torch.Indef.Static.NN as Torch.Cuda.Double.NN, Torch.Indef.Static.NN as Torch.Cuda.Double.NN, Torch.Indef.Static.NN.Activation as Torch.Cuda.Double.NN.Activation, Torch.Indef.Static.NN.Backprop as Torch.Cuda.Double.NN.Backprop, Torch.Indef.Static.NN.Conv1d as Torch.Cuda.Double.NN.Conv1d, Torch.Indef.Static.NN.Conv2d as Torch.Cuda.Double.NN.Conv2d, Torch.Indef.Static.NN.Criterion as Torch.Cuda.Double.NN.Criterion, Torch.Indef.Static.NN.Layers as Torch.Cuda.Double.NN.Layers, Torch.Indef.Static.NN.Linear as Torch.Cuda.Double.NN.Linear, Torch.Indef.Static.NN.Math as Torch.Cuda.Double.NN.Math, Torch.Indef.Static.NN.Padding as Torch.Cuda.Double.NN.Padding, Torch.Indef.Static.NN.Pooling as Torch.Cuda.Double.NN.Pooling, Torch.Indef.Static.NN.Sampling as Torch.Cuda.Double.NN.Sampling) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Double, Torch.Sig.Storage as Torch.FFI.THC.Double.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Double.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Double.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Double.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Double.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Double.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Double.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Double.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Double.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Double.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Double.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Double.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Double.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Double.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Double.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Double.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Double.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Double.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Double.TensorTopK, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.THC.Double.TensorMathPointwise, Torch.Sig.Tensor.Math.Pointwise.Floating as Torch.FFI.THC.Double.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce.Floating as Torch.FFI.THC.Double.TensorMathReduce, Torch.Sig.Tensor.Math.Floating as Torch.FFI.THC.Double.TensorMath, Torch.Sig.Tensor.Math.Blas as Torch.FFI.THC.Double.TensorMathBlas, Torch.Sig.Tensor.Math.Lapack as Torch.FFI.THC.Double.TensorMathMagma, Torch.Sig.NN as Torch.FFI.THC.NN.Double, Torch.Sig.Types.NN as Torch.Types.THC, Torch.Sig.Tensor.Math.Random.TH as Torch.Undefined.Cuda.Double.Tensor.Math.Random.TH, Torch.Sig.Tensor.Random.TH as Torch.Undefined.Cuda.Double.Tensor.Random.TH, Torch.Sig.Tensor.Random.THC as Torch.FFI.THC.Double.TensorRandom)+    +    if flag(lite)+    else+        exposed-modules:+            Torch.Cuda.Byte+            Torch.Cuda.Byte.Dynamic+            Torch.Cuda.Byte.Storage+            Torch.Cuda.Char+            Torch.Cuda.Char.Dynamic+            Torch.Cuda.Char.Storage+            Torch.Cuda.Short+            Torch.Cuda.Short.Dynamic+            Torch.Cuda.Short.Storage+            Torch.Cuda.Int+            Torch.Cuda.Int.Dynamic+            Torch.Cuda.Int.Storage+        build-depends:+            hasktorch-indef-unsigned -any+        mixins: hasktorch-indef-unsigned (Torch.Indef.Storage as Torch.Indef.Cuda.Byte.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Byte.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Byte.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Byte.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Byte.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Byte.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Byte.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Byte.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Byte.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Byte.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Byte.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Byte.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Byte.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Byte.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Byte.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Byte.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Byte.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Byte.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Byte.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Byte.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Byte.Types, Torch.Indef.Index as Torch.Cuda.Byte.Index, Torch.Indef.Mask as Torch.Cuda.Byte.Mask) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Byte, Torch.Sig.Storage as Torch.FFI.THC.Byte.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Byte.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Byte.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Byte.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Byte.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Byte.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Byte.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Byte.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Byte.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Byte.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Byte.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Byte.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Byte.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Byte.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Byte.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Byte.TensorTopK),+                hasktorch-indef-unsigned (Torch.Indef.Storage as Torch.Indef.Cuda.Char.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Char.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Char.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Char.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Char.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Char.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Char.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Char.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Char.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Char.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Char.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Char.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Char.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Char.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Char.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Char.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Char.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Char.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Char.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Char.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Char.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Char.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Char.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Char.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Char.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Char.Types, Torch.Indef.Index as Torch.Cuda.Char.Index, Torch.Indef.Mask as Torch.Cuda.Char.Mask) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Char, Torch.Sig.Storage as Torch.FFI.THC.Char.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Char.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Char.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Char.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Char.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Char.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Char.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Char.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Char.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Char.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Char.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Char.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Char.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Char.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Char.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Char.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Char.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Char.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Char.TensorTopK),+                hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Cuda.Short.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Short.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Short.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Short.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Short.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Short.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Short.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Short.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Short.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Short.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Short.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Short.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Short.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Short.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Short.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Short.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Short.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Short.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Short.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Short.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Short.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Short.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Short.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Short.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Short.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Short.Types, Torch.Indef.Index as Torch.Cuda.Short.Index, Torch.Indef.Mask as Torch.Cuda.Short.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Short.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Short, Torch.Sig.Storage as Torch.FFI.THC.Short.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Short.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Short.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Short.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Short.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Short.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Short.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Short.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Short.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Short.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Short.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Short.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Short.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Short.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Short.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Short.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Short.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Short.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Short.TensorTopK, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.THC.Short.TensorMathPointwise),+                hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Cuda.Int.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Int.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Int.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Int.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Int.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Int.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Int.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Int.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Int.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Int.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Int.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Int.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Int.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Int.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Int.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Int.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Int.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Int.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Int.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Int.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Int.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Int.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Int.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Int.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Int.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Int.Types, Torch.Indef.Index as Torch.Cuda.Int.Index, Torch.Indef.Mask as Torch.Cuda.Int.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Int.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Int, Torch.Sig.Storage as Torch.FFI.THC.Int.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Int.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Int.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Int.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Int.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Int.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Int.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Int.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Int.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Int.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Int.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Int.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Int.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Int.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Int.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Int.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Int.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Int.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Int.TensorTopK, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.THC.Int.TensorMathPointwise)++library hasktorch-indef-unsigned+    reexported-modules: Torch.Indef.Index,+                        Torch.Indef.Mask,+                        Torch.Indef.Types,+                        Torch.Indef.Storage,+                        Torch.Indef.Storage.Copy,+                        Torch.Indef.Dynamic.Print,+                        Torch.Indef.Dynamic.Tensor,+                        Torch.Indef.Dynamic.Tensor.Copy,+                        Torch.Indef.Dynamic.Tensor.Index,+                        Torch.Indef.Dynamic.Tensor.Masked,+                        Torch.Indef.Dynamic.Tensor.Math,+                        Torch.Indef.Dynamic.Tensor.Math.Compare,+                        Torch.Indef.Dynamic.Tensor.Math.CompareT,+                        Torch.Indef.Dynamic.Tensor.Math.Pairwise,+                        Torch.Indef.Dynamic.Tensor.Math.Pointwise,+                        Torch.Indef.Dynamic.Tensor.Math.Reduce,+                        Torch.Indef.Dynamic.Tensor.Math.Scan,+                        Torch.Indef.Dynamic.Tensor.Mode,+                        Torch.Indef.Dynamic.Tensor.ScatterGather,+                        Torch.Indef.Dynamic.Tensor.Sort,+                        Torch.Indef.Dynamic.Tensor.TopK,+                        Torch.Indef.Static.Tensor,+                        Torch.Indef.Static.Tensor.Copy,+                        Torch.Indef.Static.Tensor.Index,+                        Torch.Indef.Static.Tensor.Masked,+                        Torch.Indef.Static.Tensor.Math,+                        Torch.Indef.Static.Tensor.Math.Compare,+                        Torch.Indef.Static.Tensor.Math.CompareT,+                        Torch.Indef.Static.Tensor.Math.Pairwise,+                        Torch.Indef.Static.Tensor.Math.Pointwise,+                        Torch.Indef.Static.Tensor.Math.Reduce,+                        Torch.Indef.Static.Tensor.Math.Scan,+                        Torch.Indef.Static.Tensor.Mode,+                        Torch.Indef.Static.Tensor.ScatterGather,+                        Torch.Indef.Static.Tensor.Sort,+                        Torch.Indef.Static.Tensor.TopK+    default-language: Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-signatures-partial (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-indef -any+    mixins: hasktorch-indef requires (Torch.Sig.NN as Torch.Undefined.NN, Torch.Sig.Types.NN as Torch.Undefined.Types.NN, Torch.Sig.Tensor.Math.Blas as Torch.Undefined.Tensor.Math.Blas, Torch.Sig.Tensor.Math.Floating as Torch.Undefined.Tensor.Math.Floating, Torch.Sig.Tensor.Math.Lapack as Torch.Undefined.Tensor.Math.Lapack, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.Undefined.Tensor.Math.Pointwise.Signed, Torch.Sig.Tensor.Math.Pointwise.Floating as Torch.Undefined.Tensor.Math.Pointwise.Floating, Torch.Sig.Tensor.Math.Reduce.Floating as Torch.Undefined.Tensor.Math.Reduce.Floating, Torch.Sig.Tensor.Math.Random.TH as Torch.Undefined.Tensor.Math.Random.TH, Torch.Sig.Tensor.Random.TH as Torch.Undefined.Tensor.Random.TH, Torch.Sig.Tensor.Random.THC as Torch.Undefined.Tensor.Random.THC)++library hasktorch-indef-signed+    reexported-modules: Torch.Indef.Index,+                        Torch.Indef.Mask,+                        Torch.Indef.Types,+                        Torch.Indef.Storage,+                        Torch.Indef.Storage.Copy,+                        Torch.Indef.Dynamic.Print,+                        Torch.Indef.Dynamic.Tensor,+                        Torch.Indef.Dynamic.Tensor.Copy,+                        Torch.Indef.Dynamic.Tensor.Index,+                        Torch.Indef.Dynamic.Tensor.Masked,+                        Torch.Indef.Dynamic.Tensor.Math,+                        Torch.Indef.Dynamic.Tensor.Math.Compare,+                        Torch.Indef.Dynamic.Tensor.Math.CompareT,+                        Torch.Indef.Dynamic.Tensor.Math.Pairwise,+                        Torch.Indef.Dynamic.Tensor.Math.Pointwise,+                        Torch.Indef.Dynamic.Tensor.Math.Reduce,+                        Torch.Indef.Dynamic.Tensor.Math.Scan,+                        Torch.Indef.Dynamic.Tensor.Mode,+                        Torch.Indef.Dynamic.Tensor.ScatterGather,+                        Torch.Indef.Dynamic.Tensor.Sort,+                        Torch.Indef.Dynamic.Tensor.TopK,+                        Torch.Indef.Static.Tensor,+                        Torch.Indef.Static.Tensor.Copy,+                        Torch.Indef.Static.Tensor.Index,+                        Torch.Indef.Static.Tensor.Masked,+                        Torch.Indef.Static.Tensor.Math,+                        Torch.Indef.Static.Tensor.Math.Compare,+                        Torch.Indef.Static.Tensor.Math.CompareT,+                        Torch.Indef.Static.Tensor.Math.Pairwise,+                        Torch.Indef.Static.Tensor.Math.Pointwise,+                        Torch.Indef.Static.Tensor.Math.Reduce,+                        Torch.Indef.Static.Tensor.Math.Scan,+                        Torch.Indef.Static.Tensor.Mode,+                        Torch.Indef.Static.Tensor.ScatterGather,+                        Torch.Indef.Static.Tensor.Sort,+                        Torch.Indef.Static.Tensor.TopK,+                        Torch.Indef.Static.Tensor.Math.Pointwise.Signed,+                        Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed+    default-language: Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-signatures-partial (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-indef -any+    mixins: hasktorch-indef requires (Torch.Sig.NN as Torch.Undefined.NN, Torch.Sig.Types.NN as Torch.Undefined.Types.NN, Torch.Sig.Tensor.Math.Blas as Torch.Undefined.Tensor.Math.Blas, Torch.Sig.Tensor.Math.Floating as Torch.Undefined.Tensor.Math.Floating, Torch.Sig.Tensor.Math.Lapack as Torch.Undefined.Tensor.Math.Lapack, Torch.Sig.Tensor.Math.Pointwise.Floating as Torch.Undefined.Tensor.Math.Pointwise.Floating, Torch.Sig.Tensor.Math.Reduce.Floating as Torch.Undefined.Tensor.Math.Reduce.Floating, Torch.Sig.Tensor.Math.Random.TH as Torch.Undefined.Tensor.Math.Random.TH, Torch.Sig.Tensor.Random.TH as Torch.Undefined.Tensor.Random.TH, Torch.Sig.Tensor.Random.THC as Torch.Undefined.Tensor.Random.THC)++library hasktorch-indef-floating+    reexported-modules: Torch.Indef.Index,+                        Torch.Indef.Mask,+                        Torch.Indef.Types,+                        Torch.Indef.Storage,+                        Torch.Indef.Storage.Copy,+                        Torch.Indef.Dynamic.Print,+                        Torch.Indef.Dynamic.Tensor,+                        Torch.Indef.Dynamic.Tensor.Copy,+                        Torch.Indef.Dynamic.Tensor.Index,+                        Torch.Indef.Dynamic.Tensor.Masked,+                        Torch.Indef.Dynamic.Tensor.Math,+                        Torch.Indef.Dynamic.Tensor.Math.Compare,+                        Torch.Indef.Dynamic.Tensor.Math.CompareT,+                        Torch.Indef.Dynamic.Tensor.Math.Pairwise,+                        Torch.Indef.Dynamic.Tensor.Math.Pointwise,+                        Torch.Indef.Dynamic.Tensor.Math.Reduce,+                        Torch.Indef.Dynamic.Tensor.Math.Scan,+                        Torch.Indef.Dynamic.Tensor.Mode,+                        Torch.Indef.Dynamic.Tensor.ScatterGather,+                        Torch.Indef.Dynamic.Tensor.Sort,+                        Torch.Indef.Dynamic.Tensor.TopK,+                        Torch.Indef.Static.Tensor,+                        Torch.Indef.Static.Tensor.Copy,+                        Torch.Indef.Static.Tensor.Index,+                        Torch.Indef.Static.Tensor.Masked,+                        Torch.Indef.Static.Tensor.Math,+                        Torch.Indef.Static.Tensor.Math.Compare,+                        Torch.Indef.Static.Tensor.Math.CompareT,+                        Torch.Indef.Static.Tensor.Math.Pairwise,+                        Torch.Indef.Static.Tensor.Math.Pointwise,+                        Torch.Indef.Static.Tensor.Math.Reduce,+                        Torch.Indef.Static.Tensor.Math.Scan,+                        Torch.Indef.Static.Tensor.Mode,+                        Torch.Indef.Static.Tensor.ScatterGather,+                        Torch.Indef.Static.Tensor.Sort,+                        Torch.Indef.Static.Tensor.TopK,+                        Torch.Indef.Static.Tensor.Math.Pointwise.Signed,+                        Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed,+                        Torch.Indef.Dynamic.Tensor.Math.Blas,+                        Torch.Indef.Dynamic.Tensor.Math.Floating,+                        Torch.Indef.Dynamic.Tensor.Math.Lapack,+                        Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating,+                        Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating,+                        Torch.Indef.Dynamic.Tensor.Random.TH,+                        Torch.Indef.Dynamic.Tensor.Random.THC,+                        Torch.Indef.Dynamic.Tensor.Math.Random.TH,+                        Torch.Indef.Static.Tensor.Math.Blas,+                        Torch.Indef.Static.Tensor.Math.Floating,+                        Torch.Indef.Static.Tensor.Math.Lapack,+                        Torch.Indef.Static.Tensor.Math.Pointwise.Floating,+                        Torch.Indef.Static.Tensor.Math.Reduce.Floating,+                        Torch.Indef.Static.Tensor.Random.TH,+                        Torch.Indef.Static.Tensor.Random.THC,+                        Torch.Indef.Static.Tensor.Math.Random.TH,+                        Torch.Indef.Dynamic.NN,+                        Torch.Indef.Dynamic.NN.Activation,+                        Torch.Indef.Dynamic.NN.Pooling,+                        Torch.Indef.Dynamic.NN.Criterion,+                        Torch.Indef.Static.NN,+                        Torch.Indef.Static.NN.Activation,+                        Torch.Indef.Static.NN.Backprop,+                        Torch.Indef.Static.NN.Conv1d,+                        Torch.Indef.Static.NN.Conv2d,+                        Torch.Indef.Static.NN.Criterion,+                        Torch.Indef.Static.NN.Layers,+                        Torch.Indef.Static.NN.Linear,+                        Torch.Indef.Static.NN.Math,+                        Torch.Indef.Static.NN.Padding,+                        Torch.Indef.Static.NN.Pooling,+                        Torch.Indef.Static.NN.Sampling,+                        Torch.Undefined.Tensor.Math.Random.TH,+                        Torch.Undefined.Tensor.Random.TH,+                        Torch.Undefined.Tensor.Random.THC+    default-language: Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-indef -any,+        hasktorch-signatures-partial (==0.0.1 || >0.0.1) && <0.0.2++executable isdefinite-cpu+    main-is: Noop.hs+    hs-source-dirs: exe+    default-language: Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-cpu -any++executable isdefinite-gpu+    main-is: Noop.hs+    hs-source-dirs: exe+    default-language: Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-gpu -any++executable isdefinite+    main-is: Noop.hs+    hs-source-dirs: exe+    default-language: Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch -any++executable memcheck+    main-is: Memcheck.hs+    hs-source-dirs: exe+    default-language: Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch -any++test-suite spec+    type: exitcode-stdio-1.0+    main-is: Spec.hs+    hs-source-dirs: tests+    other-modules:+        Orphans+        MemorySpec+        RawLapackSVDSpec+        GarbageCollectionSpec+        Torch.Prelude.Extras+        Torch.Core.LogAddSpec+        Torch.Core.RandomSpec+        Torch.Static.NN.AbsSpec+        Torch.Static.NN.LinearSpec+    default-language: Haskell2010+    default-extensions: LambdaCase DataKinds TypeFamilies+                        TypeSynonymInstances ScopedTypeVariables FlexibleContexts CPP+    build-depends:+        QuickCheck ==2.11 || >2.11,+        backprop ==0.2.5 || >0.2.5,+        base (==4.7 || >4.7) && <5,+        dimensions ==1.0 || >1.0,+        ghc-typelits-natnormalise -any,+        hasktorch -any,+        hspec ==2.4.4 || >2.4.4,+        singletons ==2.2 || >2.2,+        -- text ==1.2.2 || >1.2.2,+        mtl ==2.2.2 || >2.2.2,+        microlens-platform ==0.3.10 || >0.3.10,+        monad-loops ==0.4.3 || >0.4.3,+        time ==1.8.0 || >1.8.0,+        transformers ==0.5.5 || >0.5.5,+        generic-lens -any+
+ tests/ParserTests/regressions/hasktorch.expr view
@@ -0,0 +1,9817 @@+GenericPackageDescription+  {condBenchmarks = [],+   condExecutables = [_×_+                        (UnqualComponentName "isdefinite-cpu")+                        CondNode+                          {condTreeComponents = [],+                           condTreeConstraints = [Dependency+                                                    (PackageName "base")+                                                    (IntersectVersionRanges+                                                       (UnionVersionRanges+                                                          (ThisVersion (mkVersion [4, 7]))+                                                          (LaterVersion (mkVersion [4, 7])))+                                                       (EarlierVersion (mkVersion [5])))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "hasktorch")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    (NonEmptySet.fromNonEmpty+                                                       (NE.fromList+                                                          [LSubLibName+                                                             (UnqualComponentName+                                                                "hasktorch-cpu")]))],+                           condTreeData = Executable+                                            {buildInfo = BuildInfo+                                                           {asmOptions = [],+                                                            asmSources = [],+                                                            autogenIncludes = [],+                                                            autogenModules = [],+                                                            buildToolDepends = [],+                                                            buildTools = [],+                                                            buildable = True,+                                                            cSources = [],+                                                            ccOptions = [],+                                                            cmmOptions = [],+                                                            cmmSources = [],+                                                            cppOptions = [],+                                                            customFieldsBI = [],+                                                            cxxOptions = [],+                                                            cxxSources = [],+                                                            defaultExtensions = [],+                                                            defaultLanguage = Just Haskell2010,+                                                            extraBundledLibs = [],+                                                            extraDynLibFlavours = [],+                                                            extraFrameworkDirs = [],+                                                            extraGHCiLibs = [],+                                                            extraLibDirs = [],+                                                            extraLibFlavours = [],+                                                            extraLibs = [],+                                                            frameworks = [],+                                                            hsSourceDirs = ["exe"],+                                                            includeDirs = [],+                                                            includes = [],+                                                            installIncludes = [],+                                                            jsSources = [],+                                                            ldOptions = [],+                                                            mixins = [],+                                                            oldExtensions = [],+                                                            options = PerCompilerFlavor [] [],+                                                            otherExtensions = [],+                                                            otherLanguages = [],+                                                            otherModules = [],+                                                            pkgconfigDepends = [],+                                                            profOptions = PerCompilerFlavor [] [],+                                                            sharedOptions = PerCompilerFlavor [] [],+                                                            staticOptions = PerCompilerFlavor [] [],+                                                            targetBuildDepends = [Dependency+                                                                                    (PackageName+                                                                                       "base")+                                                                                    (IntersectVersionRanges+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 7]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 7])))+                                                                                       (EarlierVersion+                                                                                          (mkVersion+                                                                                             [5])))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "hasktorch")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    (NonEmptySet.fromNonEmpty+                                                                                       (NE.fromList+                                                                                          [LSubLibName+                                                                                             (UnqualComponentName+                                                                                                "hasktorch-cpu")]))],+                                                            virtualModules = []},+                                             exeName = UnqualComponentName "isdefinite-cpu",+                                             exeScope = ExecutablePublic,+                                             modulePath = "Noop.hs"}},+                      _×_+                        (UnqualComponentName "isdefinite-gpu")+                        CondNode+                          {condTreeComponents = [],+                           condTreeConstraints = [Dependency+                                                    (PackageName "base")+                                                    (IntersectVersionRanges+                                                       (UnionVersionRanges+                                                          (ThisVersion (mkVersion [4, 7]))+                                                          (LaterVersion (mkVersion [4, 7])))+                                                       (EarlierVersion (mkVersion [5])))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "hasktorch")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    (NonEmptySet.fromNonEmpty+                                                       (NE.fromList+                                                          [LSubLibName+                                                             (UnqualComponentName+                                                                "hasktorch-gpu")]))],+                           condTreeData = Executable+                                            {buildInfo = BuildInfo+                                                           {asmOptions = [],+                                                            asmSources = [],+                                                            autogenIncludes = [],+                                                            autogenModules = [],+                                                            buildToolDepends = [],+                                                            buildTools = [],+                                                            buildable = True,+                                                            cSources = [],+                                                            ccOptions = [],+                                                            cmmOptions = [],+                                                            cmmSources = [],+                                                            cppOptions = [],+                                                            customFieldsBI = [],+                                                            cxxOptions = [],+                                                            cxxSources = [],+                                                            defaultExtensions = [],+                                                            defaultLanguage = Just Haskell2010,+                                                            extraBundledLibs = [],+                                                            extraDynLibFlavours = [],+                                                            extraFrameworkDirs = [],+                                                            extraGHCiLibs = [],+                                                            extraLibDirs = [],+                                                            extraLibFlavours = [],+                                                            extraLibs = [],+                                                            frameworks = [],+                                                            hsSourceDirs = ["exe"],+                                                            includeDirs = [],+                                                            includes = [],+                                                            installIncludes = [],+                                                            jsSources = [],+                                                            ldOptions = [],+                                                            mixins = [],+                                                            oldExtensions = [],+                                                            options = PerCompilerFlavor [] [],+                                                            otherExtensions = [],+                                                            otherLanguages = [],+                                                            otherModules = [],+                                                            pkgconfigDepends = [],+                                                            profOptions = PerCompilerFlavor [] [],+                                                            sharedOptions = PerCompilerFlavor [] [],+                                                            staticOptions = PerCompilerFlavor [] [],+                                                            targetBuildDepends = [Dependency+                                                                                    (PackageName+                                                                                       "base")+                                                                                    (IntersectVersionRanges+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 7]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 7])))+                                                                                       (EarlierVersion+                                                                                          (mkVersion+                                                                                             [5])))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "hasktorch")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    (NonEmptySet.fromNonEmpty+                                                                                       (NE.fromList+                                                                                          [LSubLibName+                                                                                             (UnqualComponentName+                                                                                                "hasktorch-gpu")]))],+                                                            virtualModules = []},+                                             exeName = UnqualComponentName "isdefinite-gpu",+                                             exeScope = ExecutablePublic,+                                             modulePath = "Noop.hs"}},+                      _×_+                        (UnqualComponentName "isdefinite")+                        CondNode+                          {condTreeComponents = [],+                           condTreeConstraints = [Dependency+                                                    (PackageName "base")+                                                    (IntersectVersionRanges+                                                       (UnionVersionRanges+                                                          (ThisVersion (mkVersion [4, 7]))+                                                          (LaterVersion (mkVersion [4, 7])))+                                                       (EarlierVersion (mkVersion [5])))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "hasktorch")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet],+                           condTreeData = Executable+                                            {buildInfo = BuildInfo+                                                           {asmOptions = [],+                                                            asmSources = [],+                                                            autogenIncludes = [],+                                                            autogenModules = [],+                                                            buildToolDepends = [],+                                                            buildTools = [],+                                                            buildable = True,+                                                            cSources = [],+                                                            ccOptions = [],+                                                            cmmOptions = [],+                                                            cmmSources = [],+                                                            cppOptions = [],+                                                            customFieldsBI = [],+                                                            cxxOptions = [],+                                                            cxxSources = [],+                                                            defaultExtensions = [],+                                                            defaultLanguage = Just Haskell2010,+                                                            extraBundledLibs = [],+                                                            extraDynLibFlavours = [],+                                                            extraFrameworkDirs = [],+                                                            extraGHCiLibs = [],+                                                            extraLibDirs = [],+                                                            extraLibFlavours = [],+                                                            extraLibs = [],+                                                            frameworks = [],+                                                            hsSourceDirs = ["exe"],+                                                            includeDirs = [],+                                                            includes = [],+                                                            installIncludes = [],+                                                            jsSources = [],+                                                            ldOptions = [],+                                                            mixins = [],+                                                            oldExtensions = [],+                                                            options = PerCompilerFlavor [] [],+                                                            otherExtensions = [],+                                                            otherLanguages = [],+                                                            otherModules = [],+                                                            pkgconfigDepends = [],+                                                            profOptions = PerCompilerFlavor [] [],+                                                            sharedOptions = PerCompilerFlavor [] [],+                                                            staticOptions = PerCompilerFlavor [] [],+                                                            targetBuildDepends = [Dependency+                                                                                    (PackageName+                                                                                       "base")+                                                                                    (IntersectVersionRanges+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 7]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 7])))+                                                                                       (EarlierVersion+                                                                                          (mkVersion+                                                                                             [5])))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "hasktorch")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet],+                                                            virtualModules = []},+                                             exeName = UnqualComponentName "isdefinite",+                                             exeScope = ExecutablePublic,+                                             modulePath = "Noop.hs"}},+                      _×_+                        (UnqualComponentName "memcheck")+                        CondNode+                          {condTreeComponents = [],+                           condTreeConstraints = [Dependency+                                                    (PackageName "base")+                                                    (IntersectVersionRanges+                                                       (UnionVersionRanges+                                                          (ThisVersion (mkVersion [4, 7]))+                                                          (LaterVersion (mkVersion [4, 7])))+                                                       (EarlierVersion (mkVersion [5])))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "hasktorch")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet],+                           condTreeData = Executable+                                            {buildInfo = BuildInfo+                                                           {asmOptions = [],+                                                            asmSources = [],+                                                            autogenIncludes = [],+                                                            autogenModules = [],+                                                            buildToolDepends = [],+                                                            buildTools = [],+                                                            buildable = True,+                                                            cSources = [],+                                                            ccOptions = [],+                                                            cmmOptions = [],+                                                            cmmSources = [],+                                                            cppOptions = [],+                                                            customFieldsBI = [],+                                                            cxxOptions = [],+                                                            cxxSources = [],+                                                            defaultExtensions = [],+                                                            defaultLanguage = Just Haskell2010,+                                                            extraBundledLibs = [],+                                                            extraDynLibFlavours = [],+                                                            extraFrameworkDirs = [],+                                                            extraGHCiLibs = [],+                                                            extraLibDirs = [],+                                                            extraLibFlavours = [],+                                                            extraLibs = [],+                                                            frameworks = [],+                                                            hsSourceDirs = ["exe"],+                                                            includeDirs = [],+                                                            includes = [],+                                                            installIncludes = [],+                                                            jsSources = [],+                                                            ldOptions = [],+                                                            mixins = [],+                                                            oldExtensions = [],+                                                            options = PerCompilerFlavor [] [],+                                                            otherExtensions = [],+                                                            otherLanguages = [],+                                                            otherModules = [],+                                                            pkgconfigDepends = [],+                                                            profOptions = PerCompilerFlavor [] [],+                                                            sharedOptions = PerCompilerFlavor [] [],+                                                            staticOptions = PerCompilerFlavor [] [],+                                                            targetBuildDepends = [Dependency+                                                                                    (PackageName+                                                                                       "base")+                                                                                    (IntersectVersionRanges+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 7]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 7])))+                                                                                       (EarlierVersion+                                                                                          (mkVersion+                                                                                             [5])))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "hasktorch")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet],+                                                            virtualModules = []},+                                             exeName = UnqualComponentName "memcheck",+                                             exeScope = ExecutablePublic,+                                             modulePath = "Memcheck.hs"}}],+   condForeignLibs = [],+   condLibrary = Just+                   CondNode+                     {condTreeComponents = [CondBranch+                                              {condBranchCondition = `CNot (Var (PackageFlag (FlagName "lite")))`,+                                               condBranchIfFalse = Nothing,+                                               condBranchIfTrue = CondNode+                                                                    {condTreeComponents = [],+                                                                     condTreeConstraints = [],+                                                                     condTreeData = Library+                                                                                      {exposedModules = [],+                                                                                       libBuildInfo = BuildInfo+                                                                                                        {asmOptions = [],+                                                                                                         asmSources = [],+                                                                                                         autogenIncludes = [],+                                                                                                         autogenModules = [],+                                                                                                         buildToolDepends = [],+                                                                                                         buildTools = [],+                                                                                                         buildable = True,+                                                                                                         cSources = [],+                                                                                                         ccOptions = [],+                                                                                                         cmmOptions = [],+                                                                                                         cmmSources = [],+                                                                                                         cppOptions = [],+                                                                                                         customFieldsBI = [],+                                                                                                         cxxOptions = [],+                                                                                                         cxxSources = [],+                                                                                                         defaultExtensions = [],+                                                                                                         defaultLanguage = Nothing,+                                                                                                         extraBundledLibs = [],+                                                                                                         extraDynLibFlavours = [],+                                                                                                         extraFrameworkDirs = [],+                                                                                                         extraGHCiLibs = [],+                                                                                                         extraLibDirs = [],+                                                                                                         extraLibFlavours = [],+                                                                                                         extraLibs = [],+                                                                                                         frameworks = [],+                                                                                                         hsSourceDirs = [],+                                                                                                         includeDirs = [],+                                                                                                         includes = [],+                                                                                                         installIncludes = [],+                                                                                                         jsSources = [],+                                                                                                         ldOptions = [],+                                                                                                         mixins = [],+                                                                                                         oldExtensions = [],+                                                                                                         options = PerCompilerFlavor+                                                                                                                     []+                                                                                                                     [],+                                                                                                         otherExtensions = [],+                                                                                                         otherLanguages = [],+                                                                                                         otherModules = [],+                                                                                                         pkgconfigDepends = [],+                                                                                                         profOptions = PerCompilerFlavor+                                                                                                                         []+                                                                                                                         [],+                                                                                                         sharedOptions = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                         staticOptions = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                         targetBuildDepends = [],+                                                                                                         virtualModules = []},+                                                                                       libExposed = True,+                                                                                       libName = LMainLibName,+                                                                                       libVisibility = LibraryVisibilityPublic,+                                                                                       reexportedModules = [ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Byte",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Byte",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Byte.Dynamic",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Byte.Dynamic",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Byte.Storage",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Byte.Storage",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Char",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Char",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Char.Dynamic",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Char.Dynamic",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Char.Storage",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Char.Storage",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Short",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Short",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Short.Dynamic",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Short.Dynamic",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Short.Storage",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Short.Storage",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Int",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Int",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Int.Dynamic",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Int.Dynamic",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Int.Storage",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Int.Storage",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Float",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Float",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Float.Dynamic",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Float.Dynamic",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Float.Storage",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Float.Storage",+                                                                                                               moduleReexportOriginalPackage = Nothing}],+                                                                                       signatures = []}}},+                                            CondBranch+                                              {condBranchCondition = `Var (PackageFlag (FlagName "cuda"))`,+                                               condBranchIfFalse = Nothing,+                                               condBranchIfTrue = CondNode+                                                                    {condTreeComponents = [CondBranch+                                                                                             {condBranchCondition = `CNot (Var (PackageFlag (FlagName "lite")))`,+                                                                                              condBranchIfFalse = Nothing,+                                                                                              condBranchIfTrue = CondNode+                                                                                                                   {condTreeComponents = [],+                                                                                                                    condTreeConstraints = [],+                                                                                                                    condTreeData = Library+                                                                                                                                     {exposedModules = [],+                                                                                                                                      libBuildInfo = BuildInfo+                                                                                                                                                       {asmOptions = [],+                                                                                                                                                        asmSources = [],+                                                                                                                                                        autogenIncludes = [],+                                                                                                                                                        autogenModules = [],+                                                                                                                                                        buildToolDepends = [],+                                                                                                                                                        buildTools = [],+                                                                                                                                                        buildable = True,+                                                                                                                                                        cSources = [],+                                                                                                                                                        ccOptions = [],+                                                                                                                                                        cmmOptions = [],+                                                                                                                                                        cmmSources = [],+                                                                                                                                                        cppOptions = [],+                                                                                                                                                        customFieldsBI = [],+                                                                                                                                                        cxxOptions = [],+                                                                                                                                                        cxxSources = [],+                                                                                                                                                        defaultExtensions = [],+                                                                                                                                                        defaultLanguage = Nothing,+                                                                                                                                                        extraBundledLibs = [],+                                                                                                                                                        extraDynLibFlavours = [],+                                                                                                                                                        extraFrameworkDirs = [],+                                                                                                                                                        extraGHCiLibs = [],+                                                                                                                                                        extraLibDirs = [],+                                                                                                                                                        extraLibFlavours = [],+                                                                                                                                                        extraLibs = [],+                                                                                                                                                        frameworks = [],+                                                                                                                                                        hsSourceDirs = [],+                                                                                                                                                        includeDirs = [],+                                                                                                                                                        includes = [],+                                                                                                                                                        installIncludes = [],+                                                                                                                                                        jsSources = [],+                                                                                                                                                        ldOptions = [],+                                                                                                                                                        mixins = [],+                                                                                                                                                        oldExtensions = [],+                                                                                                                                                        options = PerCompilerFlavor+                                                                                                                                                                    []+                                                                                                                                                                    [],+                                                                                                                                                        otherExtensions = [],+                                                                                                                                                        otherLanguages = [],+                                                                                                                                                        otherModules = [],+                                                                                                                                                        pkgconfigDepends = [],+                                                                                                                                                        profOptions = PerCompilerFlavor+                                                                                                                                                                        []+                                                                                                                                                                        [],+                                                                                                                                                        sharedOptions = PerCompilerFlavor+                                                                                                                                                                          []+                                                                                                                                                                          [],+                                                                                                                                                        staticOptions = PerCompilerFlavor+                                                                                                                                                                          []+                                                                                                                                                                          [],+                                                                                                                                                        targetBuildDepends = [],+                                                                                                                                                        virtualModules = []},+                                                                                                                                      libExposed = True,+                                                                                                                                      libName = LMainLibName,+                                                                                                                                      libVisibility = LibraryVisibilityPublic,+                                                                                                                                      reexportedModules = [ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Byte",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Byte",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Byte.Dynamic",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Byte.Dynamic",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Byte.Storage",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Byte.Storage",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Char",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Char",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Char.Dynamic",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Char.Dynamic",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Char.Storage",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Char.Storage",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Short",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Short",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Short.Dynamic",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Short.Dynamic",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Short.Storage",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Short.Storage",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Int",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Int",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Int.Dynamic",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Int.Dynamic",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Int.Storage",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Int.Storage",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Float",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Float",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Float.Dynamic",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Float.Dynamic",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing},+                                                                                                                                                           ModuleReexport+                                                                                                                                                             {moduleReexportName = ModuleName+                                                                                                                                                                                     "Torch.Cuda.Float.Storage",+                                                                                                                                                              moduleReexportOriginalName = ModuleName+                                                                                                                                                                                             "Torch.Cuda.Float.Storage",+                                                                                                                                                              moduleReexportOriginalPackage = Nothing}],+                                                                                                                                      signatures = []}}}],+                                                                     condTreeConstraints = [Dependency+                                                                                              (PackageName+                                                                                                 "hasktorch")+                                                                                              (OrLaterVersion+                                                                                                 (mkVersion+                                                                                                    [0]))+                                                                                              (NonEmptySet.fromNonEmpty+                                                                                                 (NE.fromList+                                                                                                    [LSubLibName+                                                                                                       (UnqualComponentName+                                                                                                          "hasktorch-gpu")]))],+                                                                     condTreeData = Library+                                                                                      {exposedModules = [],+                                                                                       libBuildInfo = BuildInfo+                                                                                                        {asmOptions = [],+                                                                                                         asmSources = [],+                                                                                                         autogenIncludes = [],+                                                                                                         autogenModules = [],+                                                                                                         buildToolDepends = [],+                                                                                                         buildTools = [],+                                                                                                         buildable = True,+                                                                                                         cSources = [],+                                                                                                         ccOptions = [],+                                                                                                         cmmOptions = [],+                                                                                                         cmmSources = [],+                                                                                                         cppOptions = [],+                                                                                                         customFieldsBI = [],+                                                                                                         cxxOptions = [],+                                                                                                         cxxSources = [],+                                                                                                         defaultExtensions = [],+                                                                                                         defaultLanguage = Nothing,+                                                                                                         extraBundledLibs = [],+                                                                                                         extraDynLibFlavours = [],+                                                                                                         extraFrameworkDirs = [],+                                                                                                         extraGHCiLibs = [],+                                                                                                         extraLibDirs = [],+                                                                                                         extraLibFlavours = [],+                                                                                                         extraLibs = [],+                                                                                                         frameworks = [],+                                                                                                         hsSourceDirs = [],+                                                                                                         includeDirs = [],+                                                                                                         includes = [],+                                                                                                         installIncludes = [],+                                                                                                         jsSources = [],+                                                                                                         ldOptions = [],+                                                                                                         mixins = [],+                                                                                                         oldExtensions = [],+                                                                                                         options = PerCompilerFlavor+                                                                                                                     []+                                                                                                                     [],+                                                                                                         otherExtensions = [],+                                                                                                         otherLanguages = [],+                                                                                                         otherModules = [],+                                                                                                         pkgconfigDepends = [],+                                                                                                         profOptions = PerCompilerFlavor+                                                                                                                         []+                                                                                                                         [],+                                                                                                         sharedOptions = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                         staticOptions = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                         targetBuildDepends = [Dependency+                                                                                                                                 (PackageName+                                                                                                                                    "hasktorch")+                                                                                                                                 (OrLaterVersion+                                                                                                                                    (mkVersion+                                                                                                                                       [0]))+                                                                                                                                 (NonEmptySet.fromNonEmpty+                                                                                                                                    (NE.fromList+                                                                                                                                       [LSubLibName+                                                                                                                                          (UnqualComponentName+                                                                                                                                             "hasktorch-gpu")]))],+                                                                                                         virtualModules = []},+                                                                                       libExposed = True,+                                                                                       libName = LMainLibName,+                                                                                       libVisibility = LibraryVisibilityPublic,+                                                                                       reexportedModules = [ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Long",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Long",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Long.Dynamic",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Long.Dynamic",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Long.Storage",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Long.Storage",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.Dynamic",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.Dynamic",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.Storage",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.Storage",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN.Activation",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN.Activation",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN.Backprop",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN.Backprop",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN.Conv1d",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN.Conv1d",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN.Conv2d",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN.Conv2d",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN.Criterion",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN.Criterion",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN.Layers",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN.Layers",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN.Linear",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN.Linear",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN.Math",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN.Math",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN.Padding",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN.Padding",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN.Pooling",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN.Pooling",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.NN.Sampling",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.NN.Sampling",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.Dynamic.NN",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.Dynamic.NN",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.Dynamic.NN.Activation",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.Dynamic.NN.Activation",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.Dynamic.NN.Pooling",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.Dynamic.NN.Pooling",+                                                                                                               moduleReexportOriginalPackage = Nothing},+                                                                                                            ModuleReexport+                                                                                                              {moduleReexportName = ModuleName+                                                                                                                                      "Torch.Cuda.Double.Dynamic.NN.Criterion",+                                                                                                               moduleReexportOriginalName = ModuleName+                                                                                                                                              "Torch.Cuda.Double.Dynamic.NN.Criterion",+                                                                                                               moduleReexportOriginalPackage = Nothing}],+                                                                                       signatures = []}}}],+                      condTreeConstraints = [Dependency+                                               (PackageName "base")+                                               (IntersectVersionRanges+                                                  (UnionVersionRanges+                                                     (ThisVersion (mkVersion [4, 7]))+                                                     (LaterVersion (mkVersion [4, 7])))+                                                  (EarlierVersion (mkVersion [5])))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "dimensions")+                                               (UnionVersionRanges+                                                  (ThisVersion (mkVersion [1, 0]))+                                                  (LaterVersion (mkVersion [1, 0])))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "safe-exceptions")+                                               (UnionVersionRanges+                                                  (ThisVersion (mkVersion [0, 1, 0]))+                                                  (LaterVersion (mkVersion [0, 1, 0])))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "singletons")+                                               (UnionVersionRanges+                                                  (ThisVersion (mkVersion [2, 2]))+                                                  (LaterVersion (mkVersion [2, 2])))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "text")+                                               (UnionVersionRanges+                                                  (ThisVersion (mkVersion [1, 2, 2]))+                                                  (LaterVersion (mkVersion [1, 2, 2])))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "hasktorch")+                                               (OrLaterVersion (mkVersion [0]))+                                               (NonEmptySet.fromNonEmpty+                                                  (NE.fromList+                                                     [LSubLibName+                                                        (UnqualComponentName "hasktorch-cpu")])),+                                             Dependency+                                               (PackageName "hasktorch-ffi-th")+                                               (IntersectVersionRanges+                                                  (UnionVersionRanges+                                                     (ThisVersion (mkVersion [0, 0, 1]))+                                                     (LaterVersion (mkVersion [0, 0, 1])))+                                                  (EarlierVersion (mkVersion [0, 0, 2])))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "hasktorch-types-th")+                                               (IntersectVersionRanges+                                                  (UnionVersionRanges+                                                     (ThisVersion (mkVersion [0, 0, 1]))+                                                     (LaterVersion (mkVersion [0, 0, 1])))+                                                  (EarlierVersion (mkVersion [0, 0, 2])))+                                               mainLibSet],+                      condTreeData = Library+                                       {exposedModules = [ModuleName "Torch.Core.Exceptions",+                                                          ModuleName "Torch.Core.Random",+                                                          ModuleName "Torch.Core.LogAdd"],+                                        libBuildInfo = BuildInfo+                                                         {asmOptions = [],+                                                          asmSources = [],+                                                          autogenIncludes = [],+                                                          autogenModules = [],+                                                          buildToolDepends = [],+                                                          buildTools = [],+                                                          buildable = True,+                                                          cSources = [],+                                                          ccOptions = [],+                                                          cmmOptions = [],+                                                          cmmSources = [],+                                                          cppOptions = [],+                                                          customFieldsBI = [],+                                                          cxxOptions = [],+                                                          cxxSources = [],+                                                          defaultExtensions = [EnableExtension+                                                                                 LambdaCase,+                                                                               EnableExtension+                                                                                 DataKinds,+                                                                               EnableExtension+                                                                                 TypeFamilies,+                                                                               EnableExtension+                                                                                 TypeSynonymInstances,+                                                                               EnableExtension+                                                                                 ScopedTypeVariables,+                                                                               EnableExtension+                                                                                 FlexibleContexts,+                                                                               EnableExtension CPP],+                                                          defaultLanguage = Just Haskell2010,+                                                          extraBundledLibs = [],+                                                          extraDynLibFlavours = [],+                                                          extraFrameworkDirs = [],+                                                          extraGHCiLibs = [],+                                                          extraLibDirs = [],+                                                          extraLibFlavours = [],+                                                          extraLibs = [],+                                                          frameworks = [],+                                                          hsSourceDirs = ["utils"],+                                                          includeDirs = [],+                                                          includes = [],+                                                          installIncludes = [],+                                                          jsSources = [],+                                                          ldOptions = [],+                                                          mixins = [],+                                                          oldExtensions = [],+                                                          options = PerCompilerFlavor [] [],+                                                          otherExtensions = [],+                                                          otherLanguages = [],+                                                          otherModules = [],+                                                          pkgconfigDepends = [],+                                                          profOptions = PerCompilerFlavor [] [],+                                                          sharedOptions = PerCompilerFlavor [] [],+                                                          staticOptions = PerCompilerFlavor [] [],+                                                          targetBuildDepends = [Dependency+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (IntersectVersionRanges+                                                                                     (UnionVersionRanges+                                                                                        (ThisVersion+                                                                                           (mkVersion+                                                                                              [4,+                                                                                               7]))+                                                                                        (LaterVersion+                                                                                           (mkVersion+                                                                                              [4,+                                                                                               7])))+                                                                                     (EarlierVersion+                                                                                        (mkVersion+                                                                                           [5])))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "dimensions")+                                                                                  (UnionVersionRanges+                                                                                     (ThisVersion+                                                                                        (mkVersion+                                                                                           [1, 0]))+                                                                                     (LaterVersion+                                                                                        (mkVersion+                                                                                           [1, 0])))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "safe-exceptions")+                                                                                  (UnionVersionRanges+                                                                                     (ThisVersion+                                                                                        (mkVersion+                                                                                           [0,+                                                                                            1,+                                                                                            0]))+                                                                                     (LaterVersion+                                                                                        (mkVersion+                                                                                           [0,+                                                                                            1,+                                                                                            0])))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "singletons")+                                                                                  (UnionVersionRanges+                                                                                     (ThisVersion+                                                                                        (mkVersion+                                                                                           [2, 2]))+                                                                                     (LaterVersion+                                                                                        (mkVersion+                                                                                           [2, 2])))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "text")+                                                                                  (UnionVersionRanges+                                                                                     (ThisVersion+                                                                                        (mkVersion+                                                                                           [1,+                                                                                            2,+                                                                                            2]))+                                                                                     (LaterVersion+                                                                                        (mkVersion+                                                                                           [1,+                                                                                            2,+                                                                                            2])))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "hasktorch")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  (NonEmptySet.fromNonEmpty+                                                                                     (NE.fromList+                                                                                        [LSubLibName+                                                                                           (UnqualComponentName+                                                                                              "hasktorch-cpu")])),+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "hasktorch-ffi-th")+                                                                                  (IntersectVersionRanges+                                                                                     (UnionVersionRanges+                                                                                        (ThisVersion+                                                                                           (mkVersion+                                                                                              [0,+                                                                                               0,+                                                                                               1]))+                                                                                        (LaterVersion+                                                                                           (mkVersion+                                                                                              [0,+                                                                                               0,+                                                                                               1])))+                                                                                     (EarlierVersion+                                                                                        (mkVersion+                                                                                           [0,+                                                                                            0,+                                                                                            2])))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "hasktorch-types-th")+                                                                                  (IntersectVersionRanges+                                                                                     (UnionVersionRanges+                                                                                        (ThisVersion+                                                                                           (mkVersion+                                                                                              [0,+                                                                                               0,+                                                                                               1]))+                                                                                        (LaterVersion+                                                                                           (mkVersion+                                                                                              [0,+                                                                                               0,+                                                                                               1])))+                                                                                     (EarlierVersion+                                                                                        (mkVersion+                                                                                           [0,+                                                                                            0,+                                                                                            2])))+                                                                                  mainLibSet],+                                                          virtualModules = []},+                                        libExposed = True,+                                        libName = LMainLibName,+                                        libVisibility = LibraryVisibilityPublic,+                                        reexportedModules = [ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Types.Numeric",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Types.Numeric",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Long",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Long",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Long.Dynamic",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Long.Dynamic",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Long.Storage",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Long.Storage",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.Dynamic",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.Dynamic",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.Storage",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.Storage",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN.Activation",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN.Activation",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN.Backprop",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN.Backprop",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN.Conv1d",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN.Conv1d",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN.Conv2d",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN.Conv2d",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN.Criterion",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN.Criterion",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN.Layers",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN.Layers",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN.Linear",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN.Linear",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN.Math",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN.Math",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN.Padding",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN.Padding",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN.Pooling",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN.Pooling",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.NN.Sampling",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.NN.Sampling",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.Dynamic.NN",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.Dynamic.NN",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.Dynamic.NN.Activation",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.Dynamic.NN.Activation",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.Dynamic.NN.Pooling",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.Dynamic.NN.Pooling",+                                                                moduleReexportOriginalPackage = Nothing},+                                                             ModuleReexport+                                                               {moduleReexportName = ModuleName+                                                                                       "Torch.Double.Dynamic.NN.Criterion",+                                                                moduleReexportOriginalName = ModuleName+                                                                                               "Torch.Double.Dynamic.NN.Criterion",+                                                                moduleReexportOriginalPackage = Nothing}],+                                        signatures = []}},+   condSubLibraries = [_×_+                         (UnqualComponentName "hasktorch-cpu")+                         CondNode+                           {condTreeComponents = [CondBranch+                                                    {condBranchCondition = `Var (PackageFlag (FlagName "lite"))`,+                                                     condBranchIfFalse = Just+                                                                           CondNode+                                                                             {condTreeComponents = [],+                                                                              condTreeConstraints = [Dependency+                                                                                                       (PackageName+                                                                                                          "hasktorch")+                                                                                                       (OrLaterVersion+                                                                                                          (mkVersion+                                                                                                             [0]))+                                                                                                       (NonEmptySet.fromNonEmpty+                                                                                                          (NE.fromList+                                                                                                             [LSubLibName+                                                                                                                (UnqualComponentName+                                                                                                                   "hasktorch-indef-unsigned")]))],+                                                                              condTreeData = Library+                                                                                               {exposedModules = [ModuleName+                                                                                                                    "Torch.Byte",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Byte.Dynamic",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Byte.Storage",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Char",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Char.Dynamic",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Char.Storage",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Short",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Short.Dynamic",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Short.Storage",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Int",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Int.Dynamic",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Int.Storage",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Float",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Float.Dynamic",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Float.Storage"],+                                                                                                libBuildInfo = BuildInfo+                                                                                                                 {asmOptions = [],+                                                                                                                  asmSources = [],+                                                                                                                  autogenIncludes = [],+                                                                                                                  autogenModules = [],+                                                                                                                  buildToolDepends = [],+                                                                                                                  buildTools = [],+                                                                                                                  buildable = True,+                                                                                                                  cSources = [],+                                                                                                                  ccOptions = [],+                                                                                                                  cmmOptions = [],+                                                                                                                  cmmSources = [],+                                                                                                                  cppOptions = [],+                                                                                                                  customFieldsBI = [],+                                                                                                                  cxxOptions = [],+                                                                                                                  cxxSources = [],+                                                                                                                  defaultExtensions = [],+                                                                                                                  defaultLanguage = Nothing,+                                                                                                                  extraBundledLibs = [],+                                                                                                                  extraDynLibFlavours = [],+                                                                                                                  extraFrameworkDirs = [],+                                                                                                                  extraGHCiLibs = [],+                                                                                                                  extraLibDirs = [],+                                                                                                                  extraLibFlavours = [],+                                                                                                                  extraLibs = [],+                                                                                                                  frameworks = [],+                                                                                                                  hsSourceDirs = [],+                                                                                                                  includeDirs = [],+                                                                                                                  includes = [],+                                                                                                                  installIncludes = [],+                                                                                                                  jsSources = [],+                                                                                                                  ldOptions = [],+                                                                                                                  mixins = [Mixin+                                                                                                                              {mixinIncludeRenaming = IncludeRenaming+                                                                                                                                                        {includeProvidesRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Storage.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Byte.Dynamic.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Byte.Types"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Byte.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Mask")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Byte.Mask")],+                                                                                                                                                         includeRequiresRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Long.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.MathReduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.State")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types.Global")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH.Byte"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.StorageCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.FreeStorage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath")]},+                                                                                                                               mixinLibraryName = LSubLibName+                                                                                                                                                    (UnqualComponentName+                                                                                                                                                       "hasktorch-indef-unsigned"),+                                                                                                                               mixinPackageName = PackageName+                                                                                                                                                    "hasktorch"},+                                                                                                                            Mixin+                                                                                                                              {mixinIncludeRenaming = IncludeRenaming+                                                                                                                                                        {includeProvidesRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Storage.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Char.Dynamic.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Char.Types"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Char.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Mask")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Char.Mask")],+                                                                                                                                                         includeRequiresRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Long.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.MathReduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.State")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types.Global")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH.Char"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.StorageCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.FreeStorage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Char.TensorMath")]},+                                                                                                                               mixinLibraryName = LSubLibName+                                                                                                                                                    (UnqualComponentName+                                                                                                                                                       "hasktorch-indef-unsigned"),+                                                                                                                               mixinPackageName = PackageName+                                                                                                                                                    "hasktorch"},+                                                                                                                            Mixin+                                                                                                                              {mixinIncludeRenaming = IncludeRenaming+                                                                                                                                                        {includeProvidesRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Storage.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Short.Types"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Short.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Mask")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Short.Mask"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Tensor.Math.Pointwise.Signed"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Short.Dynamic.Tensor.Math.Pointwise.Signed")],+                                                                                                                                                         includeRequiresRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Long.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.MathReduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.State")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types.Global")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH.Short"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.StorageCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.FreeStorage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Short.TensorMath")]},+                                                                                                                               mixinLibraryName = LSubLibName+                                                                                                                                                    (UnqualComponentName+                                                                                                                                                       "hasktorch-indef-signed"),+                                                                                                                               mixinPackageName = PackageName+                                                                                                                                                    "hasktorch"},+                                                                                                                            Mixin+                                                                                                                              {mixinIncludeRenaming = IncludeRenaming+                                                                                                                                                        {includeProvidesRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Storage.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Int.Types"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Int.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Mask")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Int.Mask"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Tensor.Math.Pointwise.Signed"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Int.Dynamic.Tensor.Math.Pointwise.Signed")],+                                                                                                                                                         includeRequiresRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Long.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.MathReduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.State")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types.Global")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH.Int"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.StorageCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.FreeStorage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Int.TensorMath")]},+                                                                                                                               mixinLibraryName = LSubLibName+                                                                                                                                                    (UnqualComponentName+                                                                                                                                                       "hasktorch-indef-signed"),+                                                                                                                               mixinPackageName = PackageName+                                                                                                                                                    "hasktorch"},+                                                                                                                            Mixin+                                                                                                                              {mixinIncludeRenaming = IncludeRenaming+                                                                                                                                                        {includeProvidesRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Storage.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.Types"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Mask")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.Mask"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Pointwise.Signed"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise.Signed"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Blas")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Blas"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Lapack")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Lapack"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise.Floating"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Reduce.Floating"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Floating")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Floating"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Blas")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Blas"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Lapack")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Lapack"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise.Floating")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Pointwise.Floating"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce.Floating")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Reduce.Floating"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Floating")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Floating"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Random.TH")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Random.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Random.TH")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Random.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Random.TH")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Random.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Random.TH")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Random.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Undefined.Tensor.Random.THC")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Undefined.Float.Tensor.Random.THC"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Storage.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.Types"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Mask")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.Mask"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Tensor.Math.Pointwise.Signed"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise.Signed"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.NN")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.Dynamic.NN"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.NN.Activation")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.Dynamic.NN.Activation"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.NN.Pooling")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.Dynamic.NN.Pooling"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.NN.Criterion")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.Dynamic.NN.Criterion"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN.Activation")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN.Activation"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN.Backprop")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN.Backprop"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN.Conv1d")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN.Conv1d"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN.Conv2d")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN.Conv2d"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN.Criterion")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN.Criterion"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN.Layers")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN.Layers"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN.Linear")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN.Linear"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN.Padding")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN.Padding"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN.Pooling")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN.Pooling"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.NN.Sampling")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Float.NN.Sampling")],+                                                                                                                                                         includeRequiresRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Long.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.MathReduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.State")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types.Global")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH.Float"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.StorageCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.FreeStorage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.FreeTensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise.Floating")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Reduce.Floating")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Floating")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Blas")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Lapack")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorLapack"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.NN")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.NN.Float"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types.NN")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.TH"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Random.TH")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Random.TH")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.TH.Float.TensorRandom"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Random.THC")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Undefined.Float.Tensor.Random.THC")]},+                                                                                                                               mixinLibraryName = LSubLibName+                                                                                                                                                    (UnqualComponentName+                                                                                                                                                       "hasktorch-indef-floating"),+                                                                                                                               mixinPackageName = PackageName+                                                                                                                                                    "hasktorch"}],+                                                                                                                  oldExtensions = [],+                                                                                                                  options = PerCompilerFlavor+                                                                                                                              []+                                                                                                                              [],+                                                                                                                  otherExtensions = [],+                                                                                                                  otherLanguages = [],+                                                                                                                  otherModules = [],+                                                                                                                  pkgconfigDepends = [],+                                                                                                                  profOptions = PerCompilerFlavor+                                                                                                                                  []+                                                                                                                                  [],+                                                                                                                  sharedOptions = PerCompilerFlavor+                                                                                                                                    []+                                                                                                                                    [],+                                                                                                                  staticOptions = PerCompilerFlavor+                                                                                                                                    []+                                                                                                                                    [],+                                                                                                                  targetBuildDepends = [Dependency+                                                                                                                                          (PackageName+                                                                                                                                             "hasktorch")+                                                                                                                                          (OrLaterVersion+                                                                                                                                             (mkVersion+                                                                                                                                                [0]))+                                                                                                                                          (NonEmptySet.fromNonEmpty+                                                                                                                                             (NE.fromList+                                                                                                                                                [LSubLibName+                                                                                                                                                   (UnqualComponentName+                                                                                                                                                      "hasktorch-indef-unsigned")]))],+                                                                                                                  virtualModules = []},+                                                                                                libExposed = True,+                                                                                                libName = LSubLibName+                                                                                                            (UnqualComponentName+                                                                                                               "hasktorch-cpu"),+                                                                                                libVisibility = LibraryVisibilityPrivate,+                                                                                                reexportedModules = [],+                                                                                                signatures = []}},+                                                     condBranchIfTrue = CondNode+                                                                          {condTreeComponents = [],+                                                                           condTreeConstraints = [],+                                                                           condTreeData = Library+                                                                                            {exposedModules = [],+                                                                                             libBuildInfo = BuildInfo+                                                                                                              {asmOptions = [],+                                                                                                               asmSources = [],+                                                                                                               autogenIncludes = [],+                                                                                                               autogenModules = [],+                                                                                                               buildToolDepends = [],+                                                                                                               buildTools = [],+                                                                                                               buildable = True,+                                                                                                               cSources = [],+                                                                                                               ccOptions = [],+                                                                                                               cmmOptions = [],+                                                                                                               cmmSources = [],+                                                                                                               cppOptions = [],+                                                                                                               customFieldsBI = [],+                                                                                                               cxxOptions = [],+                                                                                                               cxxSources = [],+                                                                                                               defaultExtensions = [],+                                                                                                               defaultLanguage = Nothing,+                                                                                                               extraBundledLibs = [],+                                                                                                               extraDynLibFlavours = [],+                                                                                                               extraFrameworkDirs = [],+                                                                                                               extraGHCiLibs = [],+                                                                                                               extraLibDirs = [],+                                                                                                               extraLibFlavours = [],+                                                                                                               extraLibs = [],+                                                                                                               frameworks = [],+                                                                                                               hsSourceDirs = [],+                                                                                                               includeDirs = [],+                                                                                                               includes = [],+                                                                                                               installIncludes = [],+                                                                                                               jsSources = [],+                                                                                                               ldOptions = [],+                                                                                                               mixins = [],+                                                                                                               oldExtensions = [],+                                                                                                               options = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                               otherExtensions = [],+                                                                                                               otherLanguages = [],+                                                                                                               otherModules = [],+                                                                                                               pkgconfigDepends = [],+                                                                                                               profOptions = PerCompilerFlavor+                                                                                                                               []+                                                                                                                               [],+                                                                                                               sharedOptions = PerCompilerFlavor+                                                                                                                                 []+                                                                                                                                 [],+                                                                                                               staticOptions = PerCompilerFlavor+                                                                                                                                 []+                                                                                                                                 [],+                                                                                                               targetBuildDepends = [],+                                                                                                               virtualModules = []},+                                                                                             libExposed = True,+                                                                                             libName = LSubLibName+                                                                                                         (UnqualComponentName+                                                                                                            "hasktorch-cpu"),+                                                                                             libVisibility = LibraryVisibilityPrivate,+                                                                                             reexportedModules = [],+                                                                                             signatures = []}}}],+                            condTreeConstraints = [Dependency+                                                     (PackageName "base")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [4, 7]))+                                                           (LaterVersion (mkVersion [4, 7])))+                                                        (EarlierVersion (mkVersion [5])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-types-th")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [0, 0, 1]))+                                                           (LaterVersion (mkVersion [0, 0, 1])))+                                                        (EarlierVersion (mkVersion [0, 0, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "dimensions")+                                                     (UnionVersionRanges+                                                        (ThisVersion (mkVersion [1, 0]))+                                                        (LaterVersion (mkVersion [1, 0])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-ffi-th")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [0, 0, 1]))+                                                           (LaterVersion (mkVersion [0, 0, 1])))+                                                        (EarlierVersion (mkVersion [0, 0, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-types-th")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [0, 0, 1]))+                                                           (LaterVersion (mkVersion [0, 0, 1])))+                                                        (EarlierVersion (mkVersion [0, 0, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "safe-exceptions")+                                                     (UnionVersionRanges+                                                        (ThisVersion (mkVersion [0, 1, 0]))+                                                        (LaterVersion (mkVersion [0, 1, 0])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "singletons")+                                                     (UnionVersionRanges+                                                        (ThisVersion (mkVersion [2, 2]))+                                                        (LaterVersion (mkVersion [2, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "text")+                                                     (UnionVersionRanges+                                                        (ThisVersion (mkVersion [1, 2, 2]))+                                                        (LaterVersion (mkVersion [1, 2, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch")+                                                     (OrLaterVersion (mkVersion [0]))+                                                     (NonEmptySet.fromNonEmpty+                                                        (NE.fromList+                                                           [LSubLibName+                                                              (UnqualComponentName+                                                                 "hasktorch-indef-floating")])),+                                                   Dependency+                                                     (PackageName "hasktorch")+                                                     (OrLaterVersion (mkVersion [0]))+                                                     (NonEmptySet.fromNonEmpty+                                                        (NE.fromList+                                                           [LSubLibName+                                                              (UnqualComponentName+                                                                 "hasktorch-indef-signed")]))],+                            condTreeData = Library+                                             {exposedModules = [ModuleName "Torch.Long",+                                                                ModuleName "Torch.Long.Dynamic",+                                                                ModuleName "Torch.Long.Storage",+                                                                ModuleName "Torch.Double",+                                                                ModuleName "Torch.Double.Dynamic",+                                                                ModuleName "Torch.Double.Storage"],+                                              libBuildInfo = BuildInfo+                                                               {asmOptions = [],+                                                                asmSources = [],+                                                                autogenIncludes = [],+                                                                autogenModules = [],+                                                                buildToolDepends = [],+                                                                buildTools = [],+                                                                buildable = True,+                                                                cSources = [],+                                                                ccOptions = [],+                                                                cmmOptions = [],+                                                                cmmSources = [],+                                                                cppOptions = [],+                                                                customFieldsBI = [],+                                                                cxxOptions = [],+                                                                cxxSources = [],+                                                                defaultExtensions = [EnableExtension+                                                                                       LambdaCase,+                                                                                     EnableExtension+                                                                                       DataKinds,+                                                                                     EnableExtension+                                                                                       TypeFamilies,+                                                                                     EnableExtension+                                                                                       TypeSynonymInstances,+                                                                                     EnableExtension+                                                                                       ScopedTypeVariables,+                                                                                     EnableExtension+                                                                                       FlexibleContexts,+                                                                                     EnableExtension+                                                                                       CPP],+                                                                defaultLanguage = Just Haskell2010,+                                                                extraBundledLibs = [],+                                                                extraDynLibFlavours = [],+                                                                extraFrameworkDirs = [],+                                                                extraGHCiLibs = [],+                                                                extraLibDirs = [],+                                                                extraLibFlavours = [],+                                                                extraLibs = [],+                                                                frameworks = [],+                                                                hsSourceDirs = ["utils", "src"],+                                                                includeDirs = [],+                                                                includes = [],+                                                                installIncludes = [],+                                                                jsSources = [],+                                                                ldOptions = [],+                                                                mixins = [Mixin+                                                                            {mixinIncludeRenaming = IncludeRenaming+                                                                                                      {includeProvidesRn = ModuleRenaming+                                                                                                                             [_×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Storage.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Types")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Long.Types"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Long.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Mask")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Long.Mask"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Tensor.Math.Pointwise.Signed"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Long.Dynamic.Tensor.Math.Pointwise.Signed")],+                                                                                                       includeRequiresRn = ModuleRenaming+                                                                                                                             [_×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Index.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Index.TensorFree")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.FreeTensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Byte.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.TensorFree")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Byte.FreeTensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.MathReduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.State")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types.Global")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.TH.Long"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.StorageCopy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage.Memory")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.FreeStorage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorCopy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Memory")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.FreeTensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.TensorMath")]},+                                                                             mixinLibraryName = LSubLibName+                                                                                                  (UnqualComponentName+                                                                                                     "hasktorch-indef-signed"),+                                                                             mixinPackageName = PackageName+                                                                                                  "hasktorch"},+                                                                          Mixin+                                                                            {mixinIncludeRenaming = IncludeRenaming+                                                                                                      {includeProvidesRn = ModuleRenaming+                                                                                                                             [_×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Storage.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Types")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.Types"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Mask")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.Mask"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Pointwise.Signed"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise.Signed"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Blas")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Blas"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Lapack")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Lapack"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Reduce.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Blas")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Blas"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Lapack")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Lapack"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Pointwise.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Reduce.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Reduce.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Random.THC")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Double.Tensor.Random.THC"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Storage.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Types")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.Types"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Mask")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.Mask"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Tensor.Math.Pointwise.Signed"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise.Signed"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.Dynamic.NN"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.NN.Activation")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.Dynamic.NN.Activation"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.NN.Pooling")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.Dynamic.NN.Pooling"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.NN.Criterion")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.Dynamic.NN.Criterion"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Activation")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN.Activation"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Backprop")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN.Backprop"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Conv1d")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN.Conv1d"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Conv2d")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN.Conv2d"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Criterion")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN.Criterion"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Layers")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN.Layers"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Linear")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN.Linear"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Padding")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN.Padding"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Pooling")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN.Pooling"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Sampling")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Double.NN.Sampling")],+                                                                                                       includeRequiresRn = ModuleRenaming+                                                                                                                             [_×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Index.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Index.TensorFree")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Long.FreeTensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Byte.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.TensorFree")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Byte.FreeTensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.MathReduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Byte.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.State")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types.Global")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.TH.Double"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.StorageCopy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage.Memory")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.FreeStorage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorCopy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Memory")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.FreeTensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Reduce.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Blas")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Lapack")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorLapack"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.NN.Double"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.TH.Double.TensorRandom"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Random.THC")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Double.Tensor.Random.THC")]},+                                                                             mixinLibraryName = LSubLibName+                                                                                                  (UnqualComponentName+                                                                                                     "hasktorch-indef-floating"),+                                                                             mixinPackageName = PackageName+                                                                                                  "hasktorch"}],+                                                                oldExtensions = [],+                                                                options = PerCompilerFlavor [] [],+                                                                otherExtensions = [],+                                                                otherLanguages = [],+                                                                otherModules = [ModuleName+                                                                                  "Torch.Core.Exceptions",+                                                                                ModuleName+                                                                                  "Torch.Core.Random",+                                                                                ModuleName+                                                                                  "Torch.Core.LogAdd"],+                                                                pkgconfigDepends = [],+                                                                profOptions = PerCompilerFlavor+                                                                                [] [],+                                                                sharedOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                staticOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                targetBuildDepends = [Dependency+                                                                                        (PackageName+                                                                                           "base")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [4,+                                                                                                     7]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [4,+                                                                                                     7])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [5])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-types-th")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  0,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "dimensions")+                                                                                        (UnionVersionRanges+                                                                                           (ThisVersion+                                                                                              (mkVersion+                                                                                                 [1,+                                                                                                  0]))+                                                                                           (LaterVersion+                                                                                              (mkVersion+                                                                                                 [1,+                                                                                                  0])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-ffi-th")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  0,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-types-th")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  0,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "safe-exceptions")+                                                                                        (UnionVersionRanges+                                                                                           (ThisVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  1,+                                                                                                  0]))+                                                                                           (LaterVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  1,+                                                                                                  0])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "singletons")+                                                                                        (UnionVersionRanges+                                                                                           (ThisVersion+                                                                                              (mkVersion+                                                                                                 [2,+                                                                                                  2]))+                                                                                           (LaterVersion+                                                                                              (mkVersion+                                                                                                 [2,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "text")+                                                                                        (UnionVersionRanges+                                                                                           (ThisVersion+                                                                                              (mkVersion+                                                                                                 [1,+                                                                                                  2,+                                                                                                  2]))+                                                                                           (LaterVersion+                                                                                              (mkVersion+                                                                                                 [1,+                                                                                                  2,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch")+                                                                                        (OrLaterVersion+                                                                                           (mkVersion+                                                                                              [0]))+                                                                                        (NonEmptySet.fromNonEmpty+                                                                                           (NE.fromList+                                                                                              [LSubLibName+                                                                                                 (UnqualComponentName+                                                                                                    "hasktorch-indef-floating")])),+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch")+                                                                                        (OrLaterVersion+                                                                                           (mkVersion+                                                                                              [0]))+                                                                                        (NonEmptySet.fromNonEmpty+                                                                                           (NE.fromList+                                                                                              [LSubLibName+                                                                                                 (UnqualComponentName+                                                                                                    "hasktorch-indef-signed")]))],+                                                                virtualModules = []},+                                              libExposed = True,+                                              libName = LSubLibName+                                                          (UnqualComponentName "hasktorch-cpu"),+                                              libVisibility = LibraryVisibilityPrivate,+                                              reexportedModules = [ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN.Activation",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN.Activation",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN.Backprop",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN.Backprop",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN.Conv1d",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN.Conv1d",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN.Conv2d",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN.Conv2d",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN.Criterion",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN.Criterion",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN.Layers",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN.Layers",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN.Linear",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN.Linear",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN.Math",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN.Math",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN.Padding",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN.Padding",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN.Pooling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN.Pooling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.NN.Sampling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.NN.Sampling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.Dynamic.NN",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.Dynamic.NN",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.Dynamic.NN.Activation",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.Dynamic.NN.Activation",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.Dynamic.NN.Pooling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.Dynamic.NN.Pooling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Double.Dynamic.NN.Criterion",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Double.Dynamic.NN.Criterion",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN.Activation",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN.Activation",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN.Backprop",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN.Backprop",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN.Conv1d",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN.Conv1d",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN.Conv2d",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN.Conv2d",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN.Criterion",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN.Criterion",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN.Layers",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN.Layers",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN.Linear",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN.Linear",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN.Math",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN.Math",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN.Padding",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN.Padding",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN.Pooling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN.Pooling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.NN.Sampling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.NN.Sampling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.Dynamic.NN",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.Dynamic.NN",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.Dynamic.NN.Activation",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.Dynamic.NN.Activation",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.Dynamic.NN.Pooling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.Dynamic.NN.Pooling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Float.Dynamic.NN.Criterion",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Float.Dynamic.NN.Criterion",+                                                                      moduleReexportOriginalPackage = Nothing}],+                                              signatures = []}},+                       _×_+                         (UnqualComponentName "hasktorch-gpu")+                         CondNode+                           {condTreeComponents = [CondBranch+                                                    {condBranchCondition = `Var (PackageFlag (FlagName "lite"))`,+                                                     condBranchIfFalse = Just+                                                                           CondNode+                                                                             {condTreeComponents = [],+                                                                              condTreeConstraints = [Dependency+                                                                                                       (PackageName+                                                                                                          "hasktorch")+                                                                                                       (OrLaterVersion+                                                                                                          (mkVersion+                                                                                                             [0]))+                                                                                                       (NonEmptySet.fromNonEmpty+                                                                                                          (NE.fromList+                                                                                                             [LSubLibName+                                                                                                                (UnqualComponentName+                                                                                                                   "hasktorch-indef-unsigned")]))],+                                                                              condTreeData = Library+                                                                                               {exposedModules = [ModuleName+                                                                                                                    "Torch.Cuda.Byte",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Cuda.Byte.Dynamic",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Cuda.Byte.Storage",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Cuda.Char",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Cuda.Char.Dynamic",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Cuda.Char.Storage",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Cuda.Short",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Cuda.Short.Dynamic",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Cuda.Short.Storage",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Cuda.Int",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Cuda.Int.Dynamic",+                                                                                                                  ModuleName+                                                                                                                    "Torch.Cuda.Int.Storage"],+                                                                                                libBuildInfo = BuildInfo+                                                                                                                 {asmOptions = [],+                                                                                                                  asmSources = [],+                                                                                                                  autogenIncludes = [],+                                                                                                                  autogenModules = [],+                                                                                                                  buildToolDepends = [],+                                                                                                                  buildTools = [],+                                                                                                                  buildable = True,+                                                                                                                  cSources = [],+                                                                                                                  ccOptions = [],+                                                                                                                  cmmOptions = [],+                                                                                                                  cmmSources = [],+                                                                                                                  cppOptions = [],+                                                                                                                  customFieldsBI = [],+                                                                                                                  cxxOptions = [],+                                                                                                                  cxxSources = [],+                                                                                                                  defaultExtensions = [],+                                                                                                                  defaultLanguage = Nothing,+                                                                                                                  extraBundledLibs = [],+                                                                                                                  extraDynLibFlavours = [],+                                                                                                                  extraFrameworkDirs = [],+                                                                                                                  extraGHCiLibs = [],+                                                                                                                  extraLibDirs = [],+                                                                                                                  extraLibFlavours = [],+                                                                                                                  extraLibs = [],+                                                                                                                  frameworks = [],+                                                                                                                  hsSourceDirs = [],+                                                                                                                  includeDirs = [],+                                                                                                                  includes = [],+                                                                                                                  installIncludes = [],+                                                                                                                  jsSources = [],+                                                                                                                  ldOptions = [],+                                                                                                                  mixins = [Mixin+                                                                                                                              {mixinIncludeRenaming = IncludeRenaming+                                                                                                                                                        {includeProvidesRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Storage.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Byte.Dynamic.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Byte.Types"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Byte.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Mask")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Byte.Mask")],+                                                                                                                                                         includeRequiresRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.MathReduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMathReduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.State")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.State"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types.Global")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.THC"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.THC.Byte"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.StorageCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorIndex"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMasked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMathCompare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMathCompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMathPairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMathPointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMathReduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMathScan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorSort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorTopK")]},+                                                                                                                               mixinLibraryName = LSubLibName+                                                                                                                                                    (UnqualComponentName+                                                                                                                                                       "hasktorch-indef-unsigned"),+                                                                                                                               mixinPackageName = PackageName+                                                                                                                                                    "hasktorch"},+                                                                                                                            Mixin+                                                                                                                              {mixinIncludeRenaming = IncludeRenaming+                                                                                                                                                        {includeProvidesRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Storage.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Char.Dynamic.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Char.Types"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Char.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Mask")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Char.Mask")],+                                                                                                                                                         includeRequiresRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.MathReduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMathReduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.State")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.State"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types.Global")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.THC"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.THC.Char"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.StorageCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorIndex"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorMasked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorMathCompare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorMathCompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorMathPairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorMathPointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorMathReduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorMathScan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorMode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorSort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Char.TensorTopK")]},+                                                                                                                               mixinLibraryName = LSubLibName+                                                                                                                                                    (UnqualComponentName+                                                                                                                                                       "hasktorch-indef-unsigned"),+                                                                                                                               mixinPackageName = PackageName+                                                                                                                                                    "hasktorch"},+                                                                                                                            Mixin+                                                                                                                              {mixinIncludeRenaming = IncludeRenaming+                                                                                                                                                        {includeProvidesRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Storage.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Short.Types"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Short.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Mask")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Short.Mask"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Tensor.Math.Pointwise.Signed"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Pointwise.Signed")],+                                                                                                                                                         includeRequiresRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.MathReduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMathReduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.State")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.State"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types.Global")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.THC"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.THC.Short"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.StorageCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorIndex"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorMasked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorMathCompare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorMathCompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorMathPairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorMathPointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorMathReduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorMathScan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorMode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorSort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorTopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Short.TensorMathPointwise")]},+                                                                                                                               mixinLibraryName = LSubLibName+                                                                                                                                                    (UnqualComponentName+                                                                                                                                                       "hasktorch-indef-signed"),+                                                                                                                               mixinPackageName = PackageName+                                                                                                                                                    "hasktorch"},+                                                                                                                            Mixin+                                                                                                                              {mixinIncludeRenaming = IncludeRenaming+                                                                                                                                                        {includeProvidesRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Storage.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Copy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Masked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Math"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Compare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.CompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Reduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Scan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Mode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.ScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Sort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.TopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Int.Types"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Int.Index"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Mask")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Cuda.Int.Mask"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Tensor.Math.Pointwise.Signed"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Pointwise.Signed")],+                                                                                                                                                         includeRequiresRn = ModuleRenaming+                                                                                                                                                                               [_×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Index.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Long.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.TensorFree")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Mask.MathReduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Byte.TensorMathReduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.State")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.State"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types.Global")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.THC"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Types")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Types.THC.Int"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.StorageCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Storage.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.Storage"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Copy")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorCopy"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Memory")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.Tensor"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Index")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorIndex"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Masked")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorMasked"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorMath"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorMathCompare"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorMathCompareT"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorMathPairwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorMathPointwise"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorMathReduce"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorMathScan"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Mode")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorMode"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorScatterGather"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Sort")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorSort"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.TopK")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorTopK"),+                                                                                                                                                                                _×_+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.Sig.Tensor.Math.Pointwise.Signed")+                                                                                                                                                                                  (ModuleName+                                                                                                                                                                                     "Torch.FFI.THC.Int.TensorMathPointwise")]},+                                                                                                                               mixinLibraryName = LSubLibName+                                                                                                                                                    (UnqualComponentName+                                                                                                                                                       "hasktorch-indef-signed"),+                                                                                                                               mixinPackageName = PackageName+                                                                                                                                                    "hasktorch"}],+                                                                                                                  oldExtensions = [],+                                                                                                                  options = PerCompilerFlavor+                                                                                                                              []+                                                                                                                              [],+                                                                                                                  otherExtensions = [],+                                                                                                                  otherLanguages = [],+                                                                                                                  otherModules = [],+                                                                                                                  pkgconfigDepends = [],+                                                                                                                  profOptions = PerCompilerFlavor+                                                                                                                                  []+                                                                                                                                  [],+                                                                                                                  sharedOptions = PerCompilerFlavor+                                                                                                                                    []+                                                                                                                                    [],+                                                                                                                  staticOptions = PerCompilerFlavor+                                                                                                                                    []+                                                                                                                                    [],+                                                                                                                  targetBuildDepends = [Dependency+                                                                                                                                          (PackageName+                                                                                                                                             "hasktorch")+                                                                                                                                          (OrLaterVersion+                                                                                                                                             (mkVersion+                                                                                                                                                [0]))+                                                                                                                                          (NonEmptySet.fromNonEmpty+                                                                                                                                             (NE.fromList+                                                                                                                                                [LSubLibName+                                                                                                                                                   (UnqualComponentName+                                                                                                                                                      "hasktorch-indef-unsigned")]))],+                                                                                                                  virtualModules = []},+                                                                                                libExposed = True,+                                                                                                libName = LSubLibName+                                                                                                            (UnqualComponentName+                                                                                                               "hasktorch-gpu"),+                                                                                                libVisibility = LibraryVisibilityPrivate,+                                                                                                reexportedModules = [],+                                                                                                signatures = []}},+                                                     condBranchIfTrue = CondNode+                                                                          {condTreeComponents = [],+                                                                           condTreeConstraints = [],+                                                                           condTreeData = Library+                                                                                            {exposedModules = [],+                                                                                             libBuildInfo = BuildInfo+                                                                                                              {asmOptions = [],+                                                                                                               asmSources = [],+                                                                                                               autogenIncludes = [],+                                                                                                               autogenModules = [],+                                                                                                               buildToolDepends = [],+                                                                                                               buildTools = [],+                                                                                                               buildable = True,+                                                                                                               cSources = [],+                                                                                                               ccOptions = [],+                                                                                                               cmmOptions = [],+                                                                                                               cmmSources = [],+                                                                                                               cppOptions = [],+                                                                                                               customFieldsBI = [],+                                                                                                               cxxOptions = [],+                                                                                                               cxxSources = [],+                                                                                                               defaultExtensions = [],+                                                                                                               defaultLanguage = Nothing,+                                                                                                               extraBundledLibs = [],+                                                                                                               extraDynLibFlavours = [],+                                                                                                               extraFrameworkDirs = [],+                                                                                                               extraGHCiLibs = [],+                                                                                                               extraLibDirs = [],+                                                                                                               extraLibFlavours = [],+                                                                                                               extraLibs = [],+                                                                                                               frameworks = [],+                                                                                                               hsSourceDirs = [],+                                                                                                               includeDirs = [],+                                                                                                               includes = [],+                                                                                                               installIncludes = [],+                                                                                                               jsSources = [],+                                                                                                               ldOptions = [],+                                                                                                               mixins = [],+                                                                                                               oldExtensions = [],+                                                                                                               options = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                               otherExtensions = [],+                                                                                                               otherLanguages = [],+                                                                                                               otherModules = [],+                                                                                                               pkgconfigDepends = [],+                                                                                                               profOptions = PerCompilerFlavor+                                                                                                                               []+                                                                                                                               [],+                                                                                                               sharedOptions = PerCompilerFlavor+                                                                                                                                 []+                                                                                                                                 [],+                                                                                                               staticOptions = PerCompilerFlavor+                                                                                                                                 []+                                                                                                                                 [],+                                                                                                               targetBuildDepends = [],+                                                                                                               virtualModules = []},+                                                                                             libExposed = True,+                                                                                             libName = LSubLibName+                                                                                                         (UnqualComponentName+                                                                                                            "hasktorch-gpu"),+                                                                                             libVisibility = LibraryVisibilityPrivate,+                                                                                             reexportedModules = [],+                                                                                             signatures = []}}}],+                            condTreeConstraints = [Dependency+                                                     (PackageName "base")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [4, 7]))+                                                           (LaterVersion (mkVersion [4, 7])))+                                                        (EarlierVersion (mkVersion [5])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-types-th")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [0, 0, 1]))+                                                           (LaterVersion (mkVersion [0, 0, 1])))+                                                        (EarlierVersion (mkVersion [0, 0, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "dimensions")+                                                     (UnionVersionRanges+                                                        (ThisVersion (mkVersion [1, 0]))+                                                        (LaterVersion (mkVersion [1, 0])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-ffi-th")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [0, 0, 1]))+                                                           (LaterVersion (mkVersion [0, 0, 1])))+                                                        (EarlierVersion (mkVersion [0, 0, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-types-th")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [0, 0, 1]))+                                                           (LaterVersion (mkVersion [0, 0, 1])))+                                                        (EarlierVersion (mkVersion [0, 0, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "safe-exceptions")+                                                     (UnionVersionRanges+                                                        (ThisVersion (mkVersion [0, 1, 0]))+                                                        (LaterVersion (mkVersion [0, 1, 0])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "singletons")+                                                     (UnionVersionRanges+                                                        (ThisVersion (mkVersion [2, 2]))+                                                        (LaterVersion (mkVersion [2, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "text")+                                                     (UnionVersionRanges+                                                        (ThisVersion (mkVersion [1, 2, 2]))+                                                        (LaterVersion (mkVersion [1, 2, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch")+                                                     (OrLaterVersion (mkVersion [0]))+                                                     (NonEmptySet.fromNonEmpty+                                                        (NE.fromList+                                                           [LSubLibName+                                                              (UnqualComponentName+                                                                 "hasktorch-indef-floating")])),+                                                   Dependency+                                                     (PackageName "hasktorch")+                                                     (OrLaterVersion (mkVersion [0]))+                                                     (NonEmptySet.fromNonEmpty+                                                        (NE.fromList+                                                           [LSubLibName+                                                              (UnqualComponentName+                                                                 "hasktorch-indef-signed")])),+                                                   Dependency+                                                     (PackageName "hasktorch-ffi-thc")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [0, 0, 1]))+                                                           (LaterVersion (mkVersion [0, 0, 1])))+                                                        (EarlierVersion (mkVersion [0, 0, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-types-thc")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [0, 0, 1]))+                                                           (LaterVersion (mkVersion [0, 0, 1])))+                                                        (EarlierVersion (mkVersion [0, 0, 2])))+                                                     mainLibSet],+                            condTreeData = Library+                                             {exposedModules = [ModuleName "Torch.Cuda.Long",+                                                                ModuleName+                                                                  "Torch.Cuda.Long.Dynamic",+                                                                ModuleName+                                                                  "Torch.Cuda.Long.Storage",+                                                                ModuleName "Torch.Cuda.Double",+                                                                ModuleName+                                                                  "Torch.Cuda.Double.Dynamic",+                                                                ModuleName+                                                                  "Torch.Cuda.Double.Storage"],+                                              libBuildInfo = BuildInfo+                                                               {asmOptions = [],+                                                                asmSources = [],+                                                                autogenIncludes = [],+                                                                autogenModules = [],+                                                                buildToolDepends = [],+                                                                buildTools = [],+                                                                buildable = True,+                                                                cSources = [],+                                                                ccOptions = [],+                                                                cmmOptions = [],+                                                                cmmSources = [],+                                                                cppOptions = ["-DCUDA",+                                                                              "-DHASKTORCH_INTERNAL_CUDA"],+                                                                customFieldsBI = [],+                                                                cxxOptions = [],+                                                                cxxSources = [],+                                                                defaultExtensions = [EnableExtension+                                                                                       LambdaCase,+                                                                                     EnableExtension+                                                                                       DataKinds,+                                                                                     EnableExtension+                                                                                       TypeFamilies,+                                                                                     EnableExtension+                                                                                       TypeSynonymInstances,+                                                                                     EnableExtension+                                                                                       ScopedTypeVariables,+                                                                                     EnableExtension+                                                                                       FlexibleContexts,+                                                                                     EnableExtension+                                                                                       CPP],+                                                                defaultLanguage = Just Haskell2010,+                                                                extraBundledLibs = [],+                                                                extraDynLibFlavours = [],+                                                                extraFrameworkDirs = [],+                                                                extraGHCiLibs = [],+                                                                extraLibDirs = [],+                                                                extraLibFlavours = [],+                                                                extraLibs = [],+                                                                frameworks = [],+                                                                hsSourceDirs = ["utils", "src"],+                                                                includeDirs = [],+                                                                includes = [],+                                                                installIncludes = [],+                                                                jsSources = [],+                                                                ldOptions = [],+                                                                mixins = [Mixin+                                                                            {mixinIncludeRenaming = IncludeRenaming+                                                                                                      {includeProvidesRn = ModuleRenaming+                                                                                                                             [_×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Storage.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Types")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Long.Types"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Long.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Mask")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Long.Mask"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Tensor.Math.Pointwise.Signed"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Pointwise.Signed")],+                                                                                                       includeRequiresRn = ModuleRenaming+                                                                                                                             [_×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Index.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Index.TensorFree")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.TensorFree")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.MathReduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Byte.TensorMathReduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.State")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.State"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types.Global")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.THC"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.THC.Long"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.StorageCopy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage.Memory")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorCopy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Memory")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorIndex"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorMasked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorMathCompare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorMathCompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorMathPairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorMathPointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorMathReduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorMathScan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorMode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorSort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorTopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.TensorMathPointwise")]},+                                                                             mixinLibraryName = LSubLibName+                                                                                                  (UnqualComponentName+                                                                                                     "hasktorch-indef-signed"),+                                                                             mixinPackageName = PackageName+                                                                                                  "hasktorch"},+                                                                          Mixin+                                                                            {mixinIncludeRenaming = IncludeRenaming+                                                                                                      {includeProvidesRn = ModuleRenaming+                                                                                                                             [_×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Storage.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Types")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.Types"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Mask")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.Mask"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Pointwise.Signed"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise.Signed"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Blas")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Blas"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Lapack")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Lapack"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Reduce.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Blas")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Blas"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Lapack")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Lapack"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Pointwise.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Reduce.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Reduce.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Cuda.Double.Tensor.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Cuda.Double.Tensor.Math.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Random.THC")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Random.THC"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Random.THC")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Random.THC"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Storage.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Storage.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Copy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Masked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Compare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.CompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Reduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Scan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Mode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.ScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Sort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.TopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Types")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.Types"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.Index"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Mask")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.Mask"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Tensor.Math.Pointwise.Signed"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise.Signed"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.Dynamic.NN"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.NN.Activation")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.Dynamic.NN.Activation"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.NN.Pooling")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.Dynamic.NN.Pooling"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Dynamic.NN.Criterion")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.Dynamic.NN.Criterion"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Activation")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN.Activation"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Backprop")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN.Backprop"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Conv1d")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN.Conv1d"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Conv2d")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN.Conv2d"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Criterion")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN.Criterion"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Layers")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN.Layers"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Linear")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN.Linear"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN.Math"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Padding")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN.Padding"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Pooling")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN.Pooling"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Indef.Static.NN.Sampling")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Cuda.Double.NN.Sampling")],+                                                                                                       includeRequiresRn = ModuleRenaming+                                                                                                                             [_×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Index.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Index.TensorFree")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Long.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.TensorFree")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Byte.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Mask.MathReduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Byte.TensorMathReduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.State")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.State"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types.Global")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.THC"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.THC.Double"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.StorageCopy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Storage.Memory")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.Storage"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Copy")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorCopy"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Memory")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.Tensor"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Index")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorIndex"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Masked")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMasked"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Compare")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMathCompare"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.CompareT")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMathCompareT"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pairwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMathPairwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMathPointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Reduce")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMathReduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Scan")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMathScan"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Mode")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMode"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.ScatterGather")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorScatterGather"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Sort")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorSort"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.TopK")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorTopK"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMathPointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMathPointwise"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Reduce.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMathReduce"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMath"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Blas")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMathBlas"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Lapack")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorMathMagma"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.NN.Double"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Types.THC"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Cuda.Double.Tensor.Math.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Cuda.Double.Tensor.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Random.THC")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.FFI.THC.Double.TensorRandom")]},+                                                                             mixinLibraryName = LSubLibName+                                                                                                  (UnqualComponentName+                                                                                                     "hasktorch-indef-floating"),+                                                                             mixinPackageName = PackageName+                                                                                                  "hasktorch"}],+                                                                oldExtensions = [],+                                                                options = PerCompilerFlavor [] [],+                                                                otherExtensions = [],+                                                                otherLanguages = [],+                                                                otherModules = [ModuleName+                                                                                  "Torch.Core.Exceptions",+                                                                                ModuleName+                                                                                  "Torch.Core.Random",+                                                                                ModuleName+                                                                                  "Torch.Core.LogAdd"],+                                                                pkgconfigDepends = [],+                                                                profOptions = PerCompilerFlavor+                                                                                [] [],+                                                                sharedOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                staticOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                targetBuildDepends = [Dependency+                                                                                        (PackageName+                                                                                           "base")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [4,+                                                                                                     7]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [4,+                                                                                                     7])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [5])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-types-th")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  0,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "dimensions")+                                                                                        (UnionVersionRanges+                                                                                           (ThisVersion+                                                                                              (mkVersion+                                                                                                 [1,+                                                                                                  0]))+                                                                                           (LaterVersion+                                                                                              (mkVersion+                                                                                                 [1,+                                                                                                  0])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-ffi-th")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  0,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-types-th")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  0,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "safe-exceptions")+                                                                                        (UnionVersionRanges+                                                                                           (ThisVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  1,+                                                                                                  0]))+                                                                                           (LaterVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  1,+                                                                                                  0])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "singletons")+                                                                                        (UnionVersionRanges+                                                                                           (ThisVersion+                                                                                              (mkVersion+                                                                                                 [2,+                                                                                                  2]))+                                                                                           (LaterVersion+                                                                                              (mkVersion+                                                                                                 [2,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "text")+                                                                                        (UnionVersionRanges+                                                                                           (ThisVersion+                                                                                              (mkVersion+                                                                                                 [1,+                                                                                                  2,+                                                                                                  2]))+                                                                                           (LaterVersion+                                                                                              (mkVersion+                                                                                                 [1,+                                                                                                  2,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch")+                                                                                        (OrLaterVersion+                                                                                           (mkVersion+                                                                                              [0]))+                                                                                        (NonEmptySet.fromNonEmpty+                                                                                           (NE.fromList+                                                                                              [LSubLibName+                                                                                                 (UnqualComponentName+                                                                                                    "hasktorch-indef-floating")])),+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch")+                                                                                        (OrLaterVersion+                                                                                           (mkVersion+                                                                                              [0]))+                                                                                        (NonEmptySet.fromNonEmpty+                                                                                           (NE.fromList+                                                                                              [LSubLibName+                                                                                                 (UnqualComponentName+                                                                                                    "hasktorch-indef-signed")])),+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-ffi-thc")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  0,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-types-thc")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  0,+                                                                                                  2])))+                                                                                        mainLibSet],+                                                                virtualModules = []},+                                              libExposed = True,+                                              libName = LSubLibName+                                                          (UnqualComponentName "hasktorch-gpu"),+                                              libVisibility = LibraryVisibilityPrivate,+                                              reexportedModules = [ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN.Activation",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN.Activation",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN.Backprop",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN.Backprop",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN.Conv1d",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN.Conv1d",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN.Conv2d",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN.Conv2d",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN.Criterion",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN.Criterion",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN.Layers",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN.Layers",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN.Linear",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN.Linear",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN.Math",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN.Math",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN.Padding",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN.Padding",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN.Pooling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN.Pooling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.NN.Sampling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.NN.Sampling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.Dynamic.NN",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.Dynamic.NN",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.Dynamic.NN.Activation",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.Dynamic.NN.Activation",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.Dynamic.NN.Pooling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.Dynamic.NN.Pooling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Cuda.Double.Dynamic.NN.Criterion",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Cuda.Double.Dynamic.NN.Criterion",+                                                                      moduleReexportOriginalPackage = Nothing}],+                                              signatures = []}},+                       _×_+                         (UnqualComponentName "hasktorch-indef-unsigned")+                         CondNode+                           {condTreeComponents = [],+                            condTreeConstraints = [Dependency+                                                     (PackageName "base")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [4, 7]))+                                                           (LaterVersion (mkVersion [4, 7])))+                                                        (EarlierVersion (mkVersion [5])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-signatures-partial")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [0, 0, 1]))+                                                           (LaterVersion (mkVersion [0, 0, 1])))+                                                        (EarlierVersion (mkVersion [0, 0, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-indef")+                                                     (OrLaterVersion (mkVersion [0]))+                                                     mainLibSet],+                            condTreeData = Library+                                             {exposedModules = [],+                                              libBuildInfo = BuildInfo+                                                               {asmOptions = [],+                                                                asmSources = [],+                                                                autogenIncludes = [],+                                                                autogenModules = [],+                                                                buildToolDepends = [],+                                                                buildTools = [],+                                                                buildable = True,+                                                                cSources = [],+                                                                ccOptions = [],+                                                                cmmOptions = [],+                                                                cmmSources = [],+                                                                cppOptions = [],+                                                                customFieldsBI = [],+                                                                cxxOptions = [],+                                                                cxxSources = [],+                                                                defaultExtensions = [],+                                                                defaultLanguage = Just Haskell2010,+                                                                extraBundledLibs = [],+                                                                extraDynLibFlavours = [],+                                                                extraFrameworkDirs = [],+                                                                extraGHCiLibs = [],+                                                                extraLibDirs = [],+                                                                extraLibFlavours = [],+                                                                extraLibs = [],+                                                                frameworks = [],+                                                                hsSourceDirs = [],+                                                                includeDirs = [],+                                                                includes = [],+                                                                installIncludes = [],+                                                                jsSources = [],+                                                                ldOptions = [],+                                                                mixins = [Mixin+                                                                            {mixinIncludeRenaming = IncludeRenaming+                                                                                                      {includeProvidesRn = DefaultRenaming,+                                                                                                       includeRequiresRn = ModuleRenaming+                                                                                                                             [_×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.NN"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Types.NN"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Blas")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Blas"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Lapack")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Lapack"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise.Signed")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Pointwise.Signed"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Pointwise.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Reduce.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Reduce.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Random.THC")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Random.THC")]},+                                                                             mixinLibraryName = LMainLibName,+                                                                             mixinPackageName = PackageName+                                                                                                  "hasktorch-indef"}],+                                                                oldExtensions = [],+                                                                options = PerCompilerFlavor [] [],+                                                                otherExtensions = [],+                                                                otherLanguages = [],+                                                                otherModules = [],+                                                                pkgconfigDepends = [],+                                                                profOptions = PerCompilerFlavor+                                                                                [] [],+                                                                sharedOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                staticOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                targetBuildDepends = [Dependency+                                                                                        (PackageName+                                                                                           "base")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [4,+                                                                                                     7]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [4,+                                                                                                     7])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [5])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-signatures-partial")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  0,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-indef")+                                                                                        (OrLaterVersion+                                                                                           (mkVersion+                                                                                              [0]))+                                                                                        mainLibSet],+                                                                virtualModules = []},+                                              libExposed = True,+                                              libName = LSubLibName+                                                          (UnqualComponentName+                                                             "hasktorch-indef-unsigned"),+                                              libVisibility = LibraryVisibilityPrivate,+                                              reexportedModules = [ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Index",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Index",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Mask",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Mask",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Types",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Types",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Storage",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Storage",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Storage.Copy",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Storage.Copy",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Print",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Print",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Copy",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Index",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Index",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Masked",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Compare",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Scan",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Mode",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.ScatterGather",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Sort",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.TopK",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Copy",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Copy",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Index",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Index",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Masked",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Masked",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Compare",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Scan",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Mode",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Mode",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.ScatterGather",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Sort",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Sort",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.TopK",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.TopK",+                                                                      moduleReexportOriginalPackage = Nothing}],+                                              signatures = []}},+                       _×_+                         (UnqualComponentName "hasktorch-indef-signed")+                         CondNode+                           {condTreeComponents = [],+                            condTreeConstraints = [Dependency+                                                     (PackageName "base")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [4, 7]))+                                                           (LaterVersion (mkVersion [4, 7])))+                                                        (EarlierVersion (mkVersion [5])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-signatures-partial")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [0, 0, 1]))+                                                           (LaterVersion (mkVersion [0, 0, 1])))+                                                        (EarlierVersion (mkVersion [0, 0, 2])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-indef")+                                                     (OrLaterVersion (mkVersion [0]))+                                                     mainLibSet],+                            condTreeData = Library+                                             {exposedModules = [],+                                              libBuildInfo = BuildInfo+                                                               {asmOptions = [],+                                                                asmSources = [],+                                                                autogenIncludes = [],+                                                                autogenModules = [],+                                                                buildToolDepends = [],+                                                                buildTools = [],+                                                                buildable = True,+                                                                cSources = [],+                                                                ccOptions = [],+                                                                cmmOptions = [],+                                                                cmmSources = [],+                                                                cppOptions = [],+                                                                customFieldsBI = [],+                                                                cxxOptions = [],+                                                                cxxSources = [],+                                                                defaultExtensions = [],+                                                                defaultLanguage = Just Haskell2010,+                                                                extraBundledLibs = [],+                                                                extraDynLibFlavours = [],+                                                                extraFrameworkDirs = [],+                                                                extraGHCiLibs = [],+                                                                extraLibDirs = [],+                                                                extraLibFlavours = [],+                                                                extraLibs = [],+                                                                frameworks = [],+                                                                hsSourceDirs = [],+                                                                includeDirs = [],+                                                                includes = [],+                                                                installIncludes = [],+                                                                jsSources = [],+                                                                ldOptions = [],+                                                                mixins = [Mixin+                                                                            {mixinIncludeRenaming = IncludeRenaming+                                                                                                      {includeProvidesRn = DefaultRenaming,+                                                                                                       includeRequiresRn = ModuleRenaming+                                                                                                                             [_×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.NN"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Types.NN")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Types.NN"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Blas")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Blas"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Lapack")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Lapack"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Pointwise.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Pointwise.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Reduce.Floating")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Reduce.Floating"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Math.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Math.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Random.TH")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Random.TH"),+                                                                                                                              _×_+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Sig.Tensor.Random.THC")+                                                                                                                                (ModuleName+                                                                                                                                   "Torch.Undefined.Tensor.Random.THC")]},+                                                                             mixinLibraryName = LMainLibName,+                                                                             mixinPackageName = PackageName+                                                                                                  "hasktorch-indef"}],+                                                                oldExtensions = [],+                                                                options = PerCompilerFlavor [] [],+                                                                otherExtensions = [],+                                                                otherLanguages = [],+                                                                otherModules = [],+                                                                pkgconfigDepends = [],+                                                                profOptions = PerCompilerFlavor+                                                                                [] [],+                                                                sharedOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                staticOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                targetBuildDepends = [Dependency+                                                                                        (PackageName+                                                                                           "base")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [4,+                                                                                                     7]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [4,+                                                                                                     7])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [5])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-signatures-partial")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  0,+                                                                                                  2])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-indef")+                                                                                        (OrLaterVersion+                                                                                           (mkVersion+                                                                                              [0]))+                                                                                        mainLibSet],+                                                                virtualModules = []},+                                              libExposed = True,+                                              libName = LSubLibName+                                                          (UnqualComponentName+                                                             "hasktorch-indef-signed"),+                                              libVisibility = LibraryVisibilityPrivate,+                                              reexportedModules = [ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Index",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Index",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Mask",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Mask",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Types",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Types",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Storage",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Storage",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Storage.Copy",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Storage.Copy",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Print",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Print",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Copy",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Index",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Index",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Masked",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Compare",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Scan",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Mode",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.ScatterGather",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Sort",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.TopK",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Copy",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Copy",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Index",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Index",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Masked",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Masked",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Compare",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Scan",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Mode",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Mode",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.ScatterGather",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Sort",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Sort",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.TopK",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.TopK",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Pointwise.Signed",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise.Signed",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed",+                                                                      moduleReexportOriginalPackage = Nothing}],+                                              signatures = []}},+                       _×_+                         (UnqualComponentName "hasktorch-indef-floating")+                         CondNode+                           {condTreeComponents = [],+                            condTreeConstraints = [Dependency+                                                     (PackageName "base")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [4, 7]))+                                                           (LaterVersion (mkVersion [4, 7])))+                                                        (EarlierVersion (mkVersion [5])))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-indef")+                                                     (OrLaterVersion (mkVersion [0]))+                                                     mainLibSet,+                                                   Dependency+                                                     (PackageName "hasktorch-signatures-partial")+                                                     (IntersectVersionRanges+                                                        (UnionVersionRanges+                                                           (ThisVersion (mkVersion [0, 0, 1]))+                                                           (LaterVersion (mkVersion [0, 0, 1])))+                                                        (EarlierVersion (mkVersion [0, 0, 2])))+                                                     mainLibSet],+                            condTreeData = Library+                                             {exposedModules = [],+                                              libBuildInfo = BuildInfo+                                                               {asmOptions = [],+                                                                asmSources = [],+                                                                autogenIncludes = [],+                                                                autogenModules = [],+                                                                buildToolDepends = [],+                                                                buildTools = [],+                                                                buildable = True,+                                                                cSources = [],+                                                                ccOptions = [],+                                                                cmmOptions = [],+                                                                cmmSources = [],+                                                                cppOptions = [],+                                                                customFieldsBI = [],+                                                                cxxOptions = [],+                                                                cxxSources = [],+                                                                defaultExtensions = [],+                                                                defaultLanguage = Just Haskell2010,+                                                                extraBundledLibs = [],+                                                                extraDynLibFlavours = [],+                                                                extraFrameworkDirs = [],+                                                                extraGHCiLibs = [],+                                                                extraLibDirs = [],+                                                                extraLibFlavours = [],+                                                                extraLibs = [],+                                                                frameworks = [],+                                                                hsSourceDirs = [],+                                                                includeDirs = [],+                                                                includes = [],+                                                                installIncludes = [],+                                                                jsSources = [],+                                                                ldOptions = [],+                                                                mixins = [],+                                                                oldExtensions = [],+                                                                options = PerCompilerFlavor [] [],+                                                                otherExtensions = [],+                                                                otherLanguages = [],+                                                                otherModules = [],+                                                                pkgconfigDepends = [],+                                                                profOptions = PerCompilerFlavor+                                                                                [] [],+                                                                sharedOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                staticOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                targetBuildDepends = [Dependency+                                                                                        (PackageName+                                                                                           "base")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [4,+                                                                                                     7]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [4,+                                                                                                     7])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [5])))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-indef")+                                                                                        (OrLaterVersion+                                                                                           (mkVersion+                                                                                              [0]))+                                                                                        mainLibSet,+                                                                                      Dependency+                                                                                        (PackageName+                                                                                           "hasktorch-signatures-partial")+                                                                                        (IntersectVersionRanges+                                                                                           (UnionVersionRanges+                                                                                              (ThisVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1]))+                                                                                              (LaterVersion+                                                                                                 (mkVersion+                                                                                                    [0,+                                                                                                     0,+                                                                                                     1])))+                                                                                           (EarlierVersion+                                                                                              (mkVersion+                                                                                                 [0,+                                                                                                  0,+                                                                                                  2])))+                                                                                        mainLibSet],+                                                                virtualModules = []},+                                              libExposed = True,+                                              libName = LSubLibName+                                                          (UnqualComponentName+                                                             "hasktorch-indef-floating"),+                                              libVisibility = LibraryVisibilityPrivate,+                                              reexportedModules = [ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Index",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Index",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Mask",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Mask",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Types",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Types",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Storage",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Storage",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Storage.Copy",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Storage.Copy",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Print",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Print",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Copy",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Copy",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Index",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Index",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Masked",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Masked",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Compare",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Compare",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Scan",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Scan",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Mode",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Mode",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.ScatterGather",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.ScatterGather",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Sort",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Sort",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.TopK",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.TopK",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Copy",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Copy",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Index",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Index",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Masked",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Masked",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Compare",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Compare",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.CompareT",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Pairwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Scan",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Scan",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Mode",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Mode",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.ScatterGather",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.ScatterGather",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Sort",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Sort",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.TopK",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.TopK",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Pointwise.Signed",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise.Signed",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Blas",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Blas",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Floating",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Floating",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Lapack",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Lapack",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Random.TH",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Random.TH",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Random.THC",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Random.THC",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.Tensor.Math.Random.TH",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.Tensor.Math.Random.TH",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Blas",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Blas",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Floating",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Floating",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Lapack",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Lapack",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Pointwise.Floating",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Pointwise.Floating",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Reduce.Floating",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Reduce.Floating",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Random.TH",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Random.TH",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Random.THC",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Random.THC",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.Tensor.Math.Random.TH",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.Tensor.Math.Random.TH",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.NN",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.NN",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.NN.Activation",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.NN.Activation",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.NN.Pooling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.NN.Pooling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Dynamic.NN.Criterion",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Dynamic.NN.Criterion",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN.Activation",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN.Activation",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN.Backprop",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN.Backprop",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN.Conv1d",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN.Conv1d",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN.Conv2d",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN.Conv2d",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN.Criterion",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN.Criterion",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN.Layers",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN.Layers",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN.Linear",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN.Linear",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN.Math",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN.Math",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN.Padding",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN.Padding",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN.Pooling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN.Pooling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Indef.Static.NN.Sampling",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Indef.Static.NN.Sampling",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Undefined.Tensor.Math.Random.TH",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Undefined.Tensor.Math.Random.TH",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Undefined.Tensor.Random.TH",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Undefined.Tensor.Random.TH",+                                                                      moduleReexportOriginalPackage = Nothing},+                                                                   ModuleReexport+                                                                     {moduleReexportName = ModuleName+                                                                                             "Torch.Undefined.Tensor.Random.THC",+                                                                      moduleReexportOriginalName = ModuleName+                                                                                                     "Torch.Undefined.Tensor.Random.THC",+                                                                      moduleReexportOriginalPackage = Nothing}],+                                              signatures = []}}],+   condTestSuites = [_×_+                       (UnqualComponentName "spec")+                       CondNode+                         {condTreeComponents = [],+                          condTreeConstraints = [Dependency+                                                   (PackageName "QuickCheck")+                                                   (UnionVersionRanges+                                                      (ThisVersion (mkVersion [2, 11]))+                                                      (LaterVersion (mkVersion [2, 11])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "backprop")+                                                   (UnionVersionRanges+                                                      (ThisVersion (mkVersion [0, 2, 5]))+                                                      (LaterVersion (mkVersion [0, 2, 5])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "base")+                                                   (IntersectVersionRanges+                                                      (UnionVersionRanges+                                                         (ThisVersion (mkVersion [4, 7]))+                                                         (LaterVersion (mkVersion [4, 7])))+                                                      (EarlierVersion (mkVersion [5])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "dimensions")+                                                   (UnionVersionRanges+                                                      (ThisVersion (mkVersion [1, 0]))+                                                      (LaterVersion (mkVersion [1, 0])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "ghc-typelits-natnormalise")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "hasktorch")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "hspec")+                                                   (UnionVersionRanges+                                                      (ThisVersion (mkVersion [2, 4, 4]))+                                                      (LaterVersion (mkVersion [2, 4, 4])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "singletons")+                                                   (UnionVersionRanges+                                                      (ThisVersion (mkVersion [2, 2]))+                                                      (LaterVersion (mkVersion [2, 2])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "mtl")+                                                   (UnionVersionRanges+                                                      (ThisVersion (mkVersion [2, 2, 2]))+                                                      (LaterVersion (mkVersion [2, 2, 2])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "microlens-platform")+                                                   (UnionVersionRanges+                                                      (ThisVersion (mkVersion [0, 3, 10]))+                                                      (LaterVersion (mkVersion [0, 3, 10])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "monad-loops")+                                                   (UnionVersionRanges+                                                      (ThisVersion (mkVersion [0, 4, 3]))+                                                      (LaterVersion (mkVersion [0, 4, 3])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "time")+                                                   (UnionVersionRanges+                                                      (ThisVersion (mkVersion [1, 8, 0]))+                                                      (LaterVersion (mkVersion [1, 8, 0])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "transformers")+                                                   (UnionVersionRanges+                                                      (ThisVersion (mkVersion [0, 5, 5]))+                                                      (LaterVersion (mkVersion [0, 5, 5])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "generic-lens")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet],+                          condTreeData = TestSuite+                                           {testBuildInfo = BuildInfo+                                                              {asmOptions = [],+                                                               asmSources = [],+                                                               autogenIncludes = [],+                                                               autogenModules = [],+                                                               buildToolDepends = [],+                                                               buildTools = [],+                                                               buildable = True,+                                                               cSources = [],+                                                               ccOptions = [],+                                                               cmmOptions = [],+                                                               cmmSources = [],+                                                               cppOptions = [],+                                                               customFieldsBI = [],+                                                               cxxOptions = [],+                                                               cxxSources = [],+                                                               defaultExtensions = [EnableExtension+                                                                                      LambdaCase,+                                                                                    EnableExtension+                                                                                      DataKinds,+                                                                                    EnableExtension+                                                                                      TypeFamilies,+                                                                                    EnableExtension+                                                                                      TypeSynonymInstances,+                                                                                    EnableExtension+                                                                                      ScopedTypeVariables,+                                                                                    EnableExtension+                                                                                      FlexibleContexts,+                                                                                    EnableExtension+                                                                                      CPP],+                                                               defaultLanguage = Just Haskell2010,+                                                               extraBundledLibs = [],+                                                               extraDynLibFlavours = [],+                                                               extraFrameworkDirs = [],+                                                               extraGHCiLibs = [],+                                                               extraLibDirs = [],+                                                               extraLibFlavours = [],+                                                               extraLibs = [],+                                                               frameworks = [],+                                                               hsSourceDirs = ["tests"],+                                                               includeDirs = [],+                                                               includes = [],+                                                               installIncludes = [],+                                                               jsSources = [],+                                                               ldOptions = [],+                                                               mixins = [],+                                                               oldExtensions = [],+                                                               options = PerCompilerFlavor [] [],+                                                               otherExtensions = [],+                                                               otherLanguages = [],+                                                               otherModules = [ModuleName "Orphans",+                                                                               ModuleName+                                                                                 "MemorySpec",+                                                                               ModuleName+                                                                                 "RawLapackSVDSpec",+                                                                               ModuleName+                                                                                 "GarbageCollectionSpec",+                                                                               ModuleName+                                                                                 "Torch.Prelude.Extras",+                                                                               ModuleName+                                                                                 "Torch.Core.LogAddSpec",+                                                                               ModuleName+                                                                                 "Torch.Core.RandomSpec",+                                                                               ModuleName+                                                                                 "Torch.Static.NN.AbsSpec",+                                                                               ModuleName+                                                                                 "Torch.Static.NN.LinearSpec"],+                                                               pkgconfigDepends = [],+                                                               profOptions = PerCompilerFlavor+                                                                               [] [],+                                                               sharedOptions = PerCompilerFlavor+                                                                                 [] [],+                                                               staticOptions = PerCompilerFlavor+                                                                                 [] [],+                                                               targetBuildDepends = [Dependency+                                                                                       (PackageName+                                                                                          "QuickCheck")+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [2,+                                                                                                 11]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [2,+                                                                                                 11])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "backprop")+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 2,+                                                                                                 5]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 2,+                                                                                                 5])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "base")+                                                                                       (IntersectVersionRanges+                                                                                          (UnionVersionRanges+                                                                                             (ThisVersion+                                                                                                (mkVersion+                                                                                                   [4,+                                                                                                    7]))+                                                                                             (LaterVersion+                                                                                                (mkVersion+                                                                                                   [4,+                                                                                                    7])))+                                                                                          (EarlierVersion+                                                                                             (mkVersion+                                                                                                [5])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "dimensions")+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [1,+                                                                                                 0]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [1,+                                                                                                 0])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "ghc-typelits-natnormalise")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "hasktorch")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "hspec")+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [2,+                                                                                                 4,+                                                                                                 4]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [2,+                                                                                                 4,+                                                                                                 4])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "singletons")+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [2,+                                                                                                 2]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [2,+                                                                                                 2])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "mtl")+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [2,+                                                                                                 2,+                                                                                                 2]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [2,+                                                                                                 2,+                                                                                                 2])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "microlens-platform")+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 3,+                                                                                                 10]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 3,+                                                                                                 10])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "monad-loops")+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 4,+                                                                                                 3]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 4,+                                                                                                 3])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "time")+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [1,+                                                                                                 8,+                                                                                                 0]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [1,+                                                                                                 8,+                                                                                                 0])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "transformers")+                                                                                       (UnionVersionRanges+                                                                                          (ThisVersion+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 5,+                                                                                                 5]))+                                                                                          (LaterVersion+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 5,+                                                                                                 5])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "generic-lens")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet],+                                                               virtualModules = []},+                                            testInterface = TestSuiteExeV10+                                                              (mkVersion [1, 0]) "Spec.hs",+                                            testName = UnqualComponentName ""}}],+   genPackageFlags = [MkPackageFlag+                        {flagDefault = False,+                         flagDescription = "build with THC support",+                         flagManual = False,+                         flagName = FlagName "cuda"},+                      MkPackageFlag+                        {flagDefault = False,+                         flagDescription = "only build with Double and Long support",+                         flagManual = False,+                         flagName = FlagName "lite"}],+   gpdScannedVersion = Nothing,+   packageDescription = PackageDescription+                          {author = "Hasktorch dev team",+                           benchmarks = [],+                           bugReports = "https://github.com/hasktorch/hasktorch/issues",+                           buildTypeRaw = Just Simple,+                           category = "Tensors, Machine Learning, AI",+                           copyright = "",+                           customFieldsPD = [],+                           dataDir = ".",+                           dataFiles = [],+                           description = "Hasktorch is a library for tensors and neural networks in Haskell. It is an independent open source community project which leverages the core C libraries shared by Torch and PyTorch. This library leverages @cabal v2-build@ and @backpack@. *Note that this project is in early development and should only be used by contributing developers. Expect substantial changes to the library API as it evolves. Contributions and PRs are welcome (see details on github).*",+                           executables = [],+                           extraDocFiles = [],+                           extraSrcFiles = [],+                           extraTmpFiles = [],+                           foreignLibs = [],+                           homepage = "https://github.com/hasktorch/hasktorch#readme",+                           library = Nothing,+                           licenseFiles = [],+                           licenseRaw = Left+                                          (License (ELicense (ELicenseId BSD_3_Clause) Nothing)),+                           maintainer = "Sam Stites <fnz@fgvgrf.vb>, Austin Huang <nhfgvau@nyhz.zvg.rqh> - cipher:ROT13",+                           package = PackageIdentifier+                                       {pkgName = PackageName "hasktorch",+                                        pkgVersion = mkVersion [0, 0, 1, 0]},+                           pkgUrl = "",+                           setupBuildInfo = Nothing,+                           sourceRepos = [SourceRepo+                                            {repoBranch = Nothing,+                                             repoKind = RepoHead,+                                             repoLocation = Just+                                                              "https://github.com/hasktorch/hasktorch",+                                             repoModule = Nothing,+                                             repoSubdir = Nothing,+                                             repoTag = Nothing,+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV2_2,+                           stability = "",+                           subLibraries = [],+                           synopsis = "Torch for tensors and neural networks in Haskell",+                           testSuites = [],+                           testedWith = []}}
+ tests/ParserTests/regressions/hasktorch.format view
@@ -0,0 +1,565 @@+cabal-version: 2.2+name:          hasktorch+version:       0.0.1.0+license:       BSD-3-Clause+maintainer:+    Sam Stites <fnz@fgvgrf.vb>, Austin Huang <nhfgvau@nyhz.zvg.rqh> - cipher:ROT13++author:        Hasktorch dev team+homepage:      https://github.com/hasktorch/hasktorch#readme+bug-reports:   https://github.com/hasktorch/hasktorch/issues+synopsis:      Torch for tensors and neural networks in Haskell+description:+    Hasktorch is a library for tensors and neural networks in Haskell. It is an independent open source community project which leverages the core C libraries shared by Torch and PyTorch. This library leverages @cabal v2-build@ and @backpack@. *Note that this project is in early development and should only be used by contributing developers. Expect substantial changes to the library API as it evolves. Contributions and PRs are welcome (see details on github).*++category:      Tensors, Machine Learning, AI+build-type:    Simple++source-repository head+    type:     git+    location: https://github.com/hasktorch/hasktorch++flag cuda+    description: build with THC support+    default:     False++flag lite+    description: only build with Double and Long support+    default:     False++library+    exposed-modules:+        Torch.Core.Exceptions+        Torch.Core.Random+        Torch.Core.LogAdd++    reexported-modules:+        Torch.Types.Numeric,+        Torch.Long,+        Torch.Long.Dynamic,+        Torch.Long.Storage,+        Torch.Double,+        Torch.Double.Dynamic,+        Torch.Double.Storage,+        Torch.Double.NN,+        Torch.Double.NN.Activation,+        Torch.Double.NN.Backprop,+        Torch.Double.NN.Conv1d,+        Torch.Double.NN.Conv2d,+        Torch.Double.NN.Criterion,+        Torch.Double.NN.Layers,+        Torch.Double.NN.Linear,+        Torch.Double.NN.Math,+        Torch.Double.NN.Padding,+        Torch.Double.NN.Pooling,+        Torch.Double.NN.Sampling,+        Torch.Double.Dynamic.NN,+        Torch.Double.Dynamic.NN.Activation,+        Torch.Double.Dynamic.NN.Pooling,+        Torch.Double.Dynamic.NN.Criterion++    hs-source-dirs:     utils+    default-language:   Haskell2010+    default-extensions:+        LambdaCase DataKinds TypeFamilies TypeSynonymInstances+        ScopedTypeVariables FlexibleContexts CPP++    build-depends:+        base (==4.7 || >4.7) && <5,+        dimensions ==1.0 || >1.0,+        safe-exceptions ==0.1.0 || >0.1.0,+        singletons ==2.2 || >2.2,+        text ==1.2.2 || >1.2.2,+        hasktorch-cpu,+        hasktorch-ffi-th (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-types-th (==0.0.1 || >0.0.1) && <0.0.2++    if !flag(lite)+        reexported-modules:+            Torch.Byte,+            Torch.Byte.Dynamic,+            Torch.Byte.Storage,+            Torch.Char,+            Torch.Char.Dynamic,+            Torch.Char.Storage,+            Torch.Short,+            Torch.Short.Dynamic,+            Torch.Short.Storage,+            Torch.Int,+            Torch.Int.Dynamic,+            Torch.Int.Storage,+            Torch.Float,+            Torch.Float.Dynamic,+            Torch.Float.Storage++    if flag(cuda)+        reexported-modules:+            Torch.Cuda.Long,+            Torch.Cuda.Long.Dynamic,+            Torch.Cuda.Long.Storage,+            Torch.Cuda.Double,+            Torch.Cuda.Double.Dynamic,+            Torch.Cuda.Double.Storage,+            Torch.Cuda.Double.NN,+            Torch.Cuda.Double.NN.Activation,+            Torch.Cuda.Double.NN.Backprop,+            Torch.Cuda.Double.NN.Conv1d,+            Torch.Cuda.Double.NN.Conv2d,+            Torch.Cuda.Double.NN.Criterion,+            Torch.Cuda.Double.NN.Layers,+            Torch.Cuda.Double.NN.Linear,+            Torch.Cuda.Double.NN.Math,+            Torch.Cuda.Double.NN.Padding,+            Torch.Cuda.Double.NN.Pooling,+            Torch.Cuda.Double.NN.Sampling,+            Torch.Cuda.Double.Dynamic.NN,+            Torch.Cuda.Double.Dynamic.NN.Activation,+            Torch.Cuda.Double.Dynamic.NN.Pooling,+            Torch.Cuda.Double.Dynamic.NN.Criterion++        build-depends:      hasktorch-gpu++        if !flag(lite)+            reexported-modules:+                Torch.Cuda.Byte,+                Torch.Cuda.Byte.Dynamic,+                Torch.Cuda.Byte.Storage,+                Torch.Cuda.Char,+                Torch.Cuda.Char.Dynamic,+                Torch.Cuda.Char.Storage,+                Torch.Cuda.Short,+                Torch.Cuda.Short.Dynamic,+                Torch.Cuda.Short.Storage,+                Torch.Cuda.Int,+                Torch.Cuda.Int.Dynamic,+                Torch.Cuda.Int.Storage,+                Torch.Cuda.Float,+                Torch.Cuda.Float.Dynamic,+                Torch.Cuda.Float.Storage++library hasktorch-cpu+    exposed-modules:+        Torch.Long+        Torch.Long.Dynamic+        Torch.Long.Storage+        Torch.Double+        Torch.Double.Dynamic+        Torch.Double.Storage++    reexported-modules:+        Torch.Double.NN,+        Torch.Double.NN.Activation,+        Torch.Double.NN.Backprop,+        Torch.Double.NN.Conv1d,+        Torch.Double.NN.Conv2d,+        Torch.Double.NN.Criterion,+        Torch.Double.NN.Layers,+        Torch.Double.NN.Linear,+        Torch.Double.NN.Math,+        Torch.Double.NN.Padding,+        Torch.Double.NN.Pooling,+        Torch.Double.NN.Sampling,+        Torch.Double.Dynamic.NN,+        Torch.Double.Dynamic.NN.Activation,+        Torch.Double.Dynamic.NN.Pooling,+        Torch.Double.Dynamic.NN.Criterion,+        Torch.Float.NN,+        Torch.Float.NN.Activation,+        Torch.Float.NN.Backprop,+        Torch.Float.NN.Conv1d,+        Torch.Float.NN.Conv2d,+        Torch.Float.NN.Criterion,+        Torch.Float.NN.Layers,+        Torch.Float.NN.Linear,+        Torch.Float.NN.Math,+        Torch.Float.NN.Padding,+        Torch.Float.NN.Pooling,+        Torch.Float.NN.Sampling,+        Torch.Float.Dynamic.NN,+        Torch.Float.Dynamic.NN.Activation,+        Torch.Float.Dynamic.NN.Pooling,+        Torch.Float.Dynamic.NN.Criterion++    hs-source-dirs:     utils src+    other-modules:+        Torch.Core.Exceptions+        Torch.Core.Random+        Torch.Core.LogAdd++    default-language:   Haskell2010+    default-extensions:+        LambdaCase DataKinds TypeFamilies TypeSynonymInstances+        ScopedTypeVariables FlexibleContexts CPP++    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-types-th (==0.0.1 || >0.0.1) && <0.0.2,+        dimensions ==1.0 || >1.0,+        hasktorch-ffi-th (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-types-th (==0.0.1 || >0.0.1) && <0.0.2,+        safe-exceptions ==0.1.0 || >0.1.0,+        singletons ==2.2 || >2.2,+        text ==1.2.2 || >1.2.2,+        hasktorch-indef-floating,+        hasktorch-indef-signed++    mixins:+        hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Long.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Long.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Long.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Long.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Long.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Long.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Long.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Long.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Long.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Long.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Long.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Long.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Long.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Long.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Long.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Long.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Long.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Long.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Long.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Long.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Long.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Long.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Long.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Long.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Long.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Long.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Long.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Long.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Long.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Long.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Long.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Long.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Long.Types, Torch.Indef.Index as Torch.Long.Index, Torch.Indef.Mask as Torch.Long.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Long.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Long.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Long, Torch.Sig.Storage as Torch.FFI.TH.Long.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Long.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Long.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Long.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Long.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.TH.Long.TensorMath),+        hasktorch-indef-floating (Torch.Indef.Storage as Torch.Indef.Double.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Double.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Double.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Double.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Double.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Double.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Double.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Double.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Double.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Double.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Double.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Double.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Double.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Double.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Double.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Double.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Double.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Double.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Double.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Double.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Double.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Double.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Double.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Double.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Double.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Double.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Double.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Double.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Double.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Double.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Double.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Double.Types, Torch.Indef.Index as Torch.Double.Index, Torch.Indef.Mask as Torch.Double.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Double.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Blas as Torch.Indef.Double.Dynamic.Tensor.Math.Blas, Torch.Indef.Dynamic.Tensor.Math.Lapack as Torch.Indef.Double.Dynamic.Tensor.Math.Lapack, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating as Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise.Floating, Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating as Torch.Indef.Double.Dynamic.Tensor.Math.Reduce.Floating, Torch.Indef.Dynamic.Tensor.Math.Floating as Torch.Indef.Double.Dynamic.Tensor.Math.Floating, Torch.Indef.Static.Tensor.Math.Blas as Torch.Indef.Double.Tensor.Math.Blas, Torch.Indef.Static.Tensor.Math.Lapack as Torch.Indef.Double.Tensor.Math.Lapack, Torch.Indef.Static.Tensor.Math.Pointwise.Floating as Torch.Indef.Double.Tensor.Math.Pointwise.Floating, Torch.Indef.Static.Tensor.Math.Reduce.Floating as Torch.Indef.Double.Tensor.Math.Reduce.Floating, Torch.Indef.Static.Tensor.Math.Floating as Torch.Indef.Double.Tensor.Math.Floating, Torch.Indef.Static.Tensor.Random.TH as Torch.Indef.Double.Tensor.Random.TH, Torch.Indef.Static.Tensor.Math.Random.TH as Torch.Indef.Double.Tensor.Math.Random.TH, Torch.Indef.Dynamic.Tensor.Random.TH as Torch.Indef.Double.Dynamic.Tensor.Random.TH, Torch.Indef.Dynamic.Tensor.Math.Random.TH as Torch.Indef.Double.Dynamic.Tensor.Math.Random.TH, Torch.Undefined.Tensor.Random.THC as Torch.Undefined.Double.Tensor.Random.THC, Torch.Indef.Storage as Torch.Indef.Double.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Double.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Double.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Double.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Double.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Double.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Double.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Double.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Double.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Double.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Double.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Double.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Double.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Double.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Double.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Double.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Double.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Double.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Double.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Double.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Double.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Double.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Double.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Double.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Double.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Double.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Double.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Double.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Double.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Double.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Double.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Double.Types, Torch.Indef.Index as Torch.Double.Index, Torch.Indef.Mask as Torch.Double.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Double.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Double.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.NN as Torch.Double.Dynamic.NN, Torch.Indef.Dynamic.NN.Activation as Torch.Double.Dynamic.NN.Activation, Torch.Indef.Dynamic.NN.Pooling as Torch.Double.Dynamic.NN.Pooling, Torch.Indef.Dynamic.NN.Criterion as Torch.Double.Dynamic.NN.Criterion, Torch.Indef.Static.NN as Torch.Double.NN, Torch.Indef.Static.NN as Torch.Double.NN, Torch.Indef.Static.NN.Activation as Torch.Double.NN.Activation, Torch.Indef.Static.NN.Backprop as Torch.Double.NN.Backprop, Torch.Indef.Static.NN.Conv1d as Torch.Double.NN.Conv1d, Torch.Indef.Static.NN.Conv2d as Torch.Double.NN.Conv2d, Torch.Indef.Static.NN.Criterion as Torch.Double.NN.Criterion, Torch.Indef.Static.NN.Layers as Torch.Double.NN.Layers, Torch.Indef.Static.NN.Linear as Torch.Double.NN.Linear, Torch.Indef.Static.NN.Math as Torch.Double.NN.Math, Torch.Indef.Static.NN.Padding as Torch.Double.NN.Padding, Torch.Indef.Static.NN.Pooling as Torch.Double.NN.Pooling, Torch.Indef.Static.NN.Sampling as Torch.Double.NN.Sampling) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Double, Torch.Sig.Storage as Torch.FFI.TH.Double.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Double.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Double.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Double.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Double.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Double.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Floating as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Reduce.Floating as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Floating as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Blas as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Math.Lapack as Torch.FFI.TH.Double.TensorLapack, Torch.Sig.NN as Torch.FFI.TH.NN.Double, Torch.Sig.Types.NN as Torch.Types.TH, Torch.Sig.Tensor.Math.Random.TH as Torch.FFI.TH.Double.TensorMath, Torch.Sig.Tensor.Random.TH as Torch.FFI.TH.Double.TensorRandom, Torch.Sig.Tensor.Random.THC as Torch.Undefined.Double.Tensor.Random.THC)++    if flag(lite)++    else+        exposed-modules:+            Torch.Byte+            Torch.Byte.Dynamic+            Torch.Byte.Storage+            Torch.Char+            Torch.Char.Dynamic+            Torch.Char.Storage+            Torch.Short+            Torch.Short.Dynamic+            Torch.Short.Storage+            Torch.Int+            Torch.Int.Dynamic+            Torch.Int.Storage+            Torch.Float+            Torch.Float.Dynamic+            Torch.Float.Storage++        build-depends:   hasktorch-indef-unsigned+        mixins:+            hasktorch-indef-unsigned (Torch.Indef.Storage as Torch.Indef.Byte.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Byte.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Byte.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Byte.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Byte.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Byte.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Byte.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Byte.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Byte.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Byte.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Byte.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Byte.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Byte.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Byte.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Byte.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Byte.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Byte.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Byte.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Byte.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Byte.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Byte.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Byte.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Byte.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Byte.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Byte.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Byte.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Byte.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Byte.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Byte.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Byte.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Byte.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Byte.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Byte.Types, Torch.Indef.Index as Torch.Byte.Index, Torch.Indef.Mask as Torch.Byte.Mask) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Byte, Torch.Sig.Storage as Torch.FFI.TH.Byte.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Byte.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Byte.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Byte.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Byte.TensorMath),+            hasktorch-indef-unsigned (Torch.Indef.Storage as Torch.Indef.Char.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Char.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Char.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Char.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Char.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Char.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Char.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Char.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Char.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Char.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Char.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Char.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Char.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Char.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Char.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Char.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Char.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Char.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Char.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Char.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Char.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Char.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Char.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Char.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Char.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Char.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Char.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Char.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Char.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Char.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Char.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Char.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Char.Types, Torch.Indef.Index as Torch.Char.Index, Torch.Indef.Mask as Torch.Char.Mask) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Char, Torch.Sig.Storage as Torch.FFI.TH.Char.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Char.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Char.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Char.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Char.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Char.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Char.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Char.TensorMath),+            hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Short.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Short.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Short.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Short.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Short.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Short.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Short.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Short.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Short.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Short.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Short.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Short.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Short.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Short.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Short.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Short.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Short.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Short.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Short.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Short.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Short.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Short.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Short.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Short.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Short.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Short.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Short.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Short.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Short.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Short.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Short.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Short.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Short.Types, Torch.Indef.Index as Torch.Short.Index, Torch.Indef.Mask as Torch.Short.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Short.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Short.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Short, Torch.Sig.Storage as Torch.FFI.TH.Short.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Short.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Short.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Short.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Short.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Short.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Short.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.TH.Short.TensorMath),+            hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Int.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Int.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Int.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Int.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Int.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Int.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Int.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Int.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Int.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Int.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Int.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Int.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Int.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Int.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Int.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Int.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Int.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Int.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Int.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Int.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Int.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Int.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Int.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Int.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Int.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Int.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Int.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Int.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Int.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Int.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Int.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Int.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Int.Types, Torch.Indef.Index as Torch.Int.Index, Torch.Indef.Mask as Torch.Int.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Int.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Int.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Int, Torch.Sig.Storage as Torch.FFI.TH.Int.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Int.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Int.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Int.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Int.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Int.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Int.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.TH.Int.TensorMath),+            hasktorch-indef-floating (Torch.Indef.Storage as Torch.Indef.Float.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Float.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Float.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Float.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Float.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Float.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Float.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Float.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Float.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Float.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Float.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Float.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Float.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Float.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Float.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Float.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Float.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Float.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Float.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Float.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Float.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Float.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Float.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Float.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Float.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Float.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Float.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Float.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Float.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Float.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Float.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Float.Types, Torch.Indef.Index as Torch.Float.Index, Torch.Indef.Mask as Torch.Float.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Float.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Blas as Torch.Indef.Float.Dynamic.Tensor.Math.Blas, Torch.Indef.Dynamic.Tensor.Math.Lapack as Torch.Indef.Float.Dynamic.Tensor.Math.Lapack, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating as Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise.Floating, Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating as Torch.Indef.Float.Dynamic.Tensor.Math.Reduce.Floating, Torch.Indef.Dynamic.Tensor.Math.Floating as Torch.Indef.Float.Dynamic.Tensor.Math.Floating, Torch.Indef.Static.Tensor.Math.Blas as Torch.Indef.Float.Tensor.Math.Blas, Torch.Indef.Static.Tensor.Math.Lapack as Torch.Indef.Float.Tensor.Math.Lapack, Torch.Indef.Static.Tensor.Math.Pointwise.Floating as Torch.Indef.Float.Tensor.Math.Pointwise.Floating, Torch.Indef.Static.Tensor.Math.Reduce.Floating as Torch.Indef.Float.Tensor.Math.Reduce.Floating, Torch.Indef.Static.Tensor.Math.Floating as Torch.Indef.Float.Tensor.Math.Floating, Torch.Indef.Static.Tensor.Random.TH as Torch.Indef.Float.Tensor.Random.TH, Torch.Indef.Static.Tensor.Math.Random.TH as Torch.Indef.Float.Tensor.Math.Random.TH, Torch.Indef.Dynamic.Tensor.Random.TH as Torch.Indef.Float.Dynamic.Tensor.Random.TH, Torch.Indef.Dynamic.Tensor.Math.Random.TH as Torch.Indef.Float.Dynamic.Tensor.Math.Random.TH, Torch.Undefined.Tensor.Random.THC as Torch.Undefined.Float.Tensor.Random.THC, Torch.Indef.Storage as Torch.Indef.Float.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Float.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Float.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Float.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Float.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Float.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Float.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Float.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Float.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Float.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Float.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Float.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Float.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Float.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Float.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Float.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Float.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Float.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Float.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Float.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Float.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Float.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Float.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Float.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Float.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Float.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Float.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Float.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Float.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Float.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Float.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Float.Types, Torch.Indef.Index as Torch.Float.Index, Torch.Indef.Mask as Torch.Float.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Float.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Float.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.NN as Torch.Float.Dynamic.NN, Torch.Indef.Dynamic.NN.Activation as Torch.Float.Dynamic.NN.Activation, Torch.Indef.Dynamic.NN.Pooling as Torch.Float.Dynamic.NN.Pooling, Torch.Indef.Dynamic.NN.Criterion as Torch.Float.Dynamic.NN.Criterion, Torch.Indef.Static.NN as Torch.Float.NN, Torch.Indef.Static.NN as Torch.Float.NN, Torch.Indef.Static.NN.Activation as Torch.Float.NN.Activation, Torch.Indef.Static.NN.Backprop as Torch.Float.NN.Backprop, Torch.Indef.Static.NN.Conv1d as Torch.Float.NN.Conv1d, Torch.Indef.Static.NN.Conv2d as Torch.Float.NN.Conv2d, Torch.Indef.Static.NN.Criterion as Torch.Float.NN.Criterion, Torch.Indef.Static.NN.Layers as Torch.Float.NN.Layers, Torch.Indef.Static.NN.Linear as Torch.Float.NN.Linear, Torch.Indef.Static.NN.Math as Torch.Float.NN.Math, Torch.Indef.Static.NN.Padding as Torch.Float.NN.Padding, Torch.Indef.Static.NN.Pooling as Torch.Float.NN.Pooling, Torch.Indef.Static.NN.Sampling as Torch.Float.NN.Sampling) requires (Torch.Sig.Index.Tensor as Torch.FFI.TH.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.TH.Long.FreeTensor, Torch.Sig.Mask.Tensor as Torch.FFI.TH.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.TH.Byte.FreeTensor, Torch.Sig.Mask.MathReduce as Torch.FFI.TH.Byte.TensorMath, Torch.Sig.State as Torch.Types.TH, Torch.Sig.Types.Global as Torch.Types.TH, Torch.Sig.Types as Torch.Types.TH.Float, Torch.Sig.Storage as Torch.FFI.TH.Float.Storage, Torch.Sig.Storage.Copy as Torch.FFI.TH.Float.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.TH.Float.FreeStorage, Torch.Sig.Tensor as Torch.FFI.TH.Float.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.TH.Float.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.TH.Float.FreeTensor, Torch.Sig.Tensor.Index as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Masked as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Scan as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Mode as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.ScatterGather as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Sort as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.TopK as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Pointwise.Floating as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Reduce.Floating as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Floating as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Blas as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Math.Lapack as Torch.FFI.TH.Float.TensorLapack, Torch.Sig.NN as Torch.FFI.TH.NN.Float, Torch.Sig.Types.NN as Torch.Types.TH, Torch.Sig.Tensor.Math.Random.TH as Torch.FFI.TH.Float.TensorMath, Torch.Sig.Tensor.Random.TH as Torch.FFI.TH.Float.TensorRandom, Torch.Sig.Tensor.Random.THC as Torch.Undefined.Float.Tensor.Random.THC)++library hasktorch-gpu+    exposed-modules:+        Torch.Cuda.Long+        Torch.Cuda.Long.Dynamic+        Torch.Cuda.Long.Storage+        Torch.Cuda.Double+        Torch.Cuda.Double.Dynamic+        Torch.Cuda.Double.Storage++    reexported-modules:+        Torch.Cuda.Double.NN,+        Torch.Cuda.Double.NN.Activation,+        Torch.Cuda.Double.NN.Backprop,+        Torch.Cuda.Double.NN.Conv1d,+        Torch.Cuda.Double.NN.Conv2d,+        Torch.Cuda.Double.NN.Criterion,+        Torch.Cuda.Double.NN.Layers,+        Torch.Cuda.Double.NN.Linear,+        Torch.Cuda.Double.NN.Math,+        Torch.Cuda.Double.NN.Padding,+        Torch.Cuda.Double.NN.Pooling,+        Torch.Cuda.Double.NN.Sampling,+        Torch.Cuda.Double.Dynamic.NN,+        Torch.Cuda.Double.Dynamic.NN.Activation,+        Torch.Cuda.Double.Dynamic.NN.Pooling,+        Torch.Cuda.Double.Dynamic.NN.Criterion++    cpp-options:        -DCUDA -DHASKTORCH_INTERNAL_CUDA+    hs-source-dirs:     utils src+    other-modules:+        Torch.Core.Exceptions+        Torch.Core.Random+        Torch.Core.LogAdd++    default-language:   Haskell2010+    default-extensions:+        LambdaCase DataKinds TypeFamilies TypeSynonymInstances+        ScopedTypeVariables FlexibleContexts CPP++    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-types-th (==0.0.1 || >0.0.1) && <0.0.2,+        dimensions ==1.0 || >1.0,+        hasktorch-ffi-th (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-types-th (==0.0.1 || >0.0.1) && <0.0.2,+        safe-exceptions ==0.1.0 || >0.1.0,+        singletons ==2.2 || >2.2,+        text ==1.2.2 || >1.2.2,+        hasktorch-indef-floating,+        hasktorch-indef-signed,+        hasktorch-ffi-thc (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-types-thc (==0.0.1 || >0.0.1) && <0.0.2++    mixins:+        hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Cuda.Long.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Long.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Long.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Long.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Long.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Long.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Long.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Long.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Long.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Long.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Long.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Long.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Long.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Long.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Long.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Long.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Long.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Long.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Long.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Long.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Long.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Long.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Long.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Long.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Long.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Long.Types, Torch.Indef.Index as Torch.Cuda.Long.Index, Torch.Indef.Mask as Torch.Cuda.Long.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Long.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Long.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Long, Torch.Sig.Storage as Torch.FFI.THC.Long.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Long.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Long.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Long.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Long.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Long.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Long.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Long.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Long.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Long.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Long.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Long.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Long.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Long.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Long.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Long.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Long.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Long.TensorTopK, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.THC.Long.TensorMathPointwise),+        hasktorch-indef-floating (Torch.Indef.Storage as Torch.Indef.Cuda.Double.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Double.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Double.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Double.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Double.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Double.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Double.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Double.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Double.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Double.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Double.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Double.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Double.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Double.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Double.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Double.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Double.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Double.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Double.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Double.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Double.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Double.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Double.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Double.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Double.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Double.Types, Torch.Indef.Index as Torch.Cuda.Double.Index, Torch.Indef.Mask as Torch.Cuda.Double.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Double.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Blas as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Blas, Torch.Indef.Dynamic.Tensor.Math.Lapack as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Lapack, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise.Floating, Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Reduce.Floating, Torch.Indef.Dynamic.Tensor.Math.Floating as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Floating, Torch.Indef.Static.Tensor.Math.Blas as Torch.Indef.Cuda.Double.Tensor.Math.Blas, Torch.Indef.Static.Tensor.Math.Lapack as Torch.Indef.Cuda.Double.Tensor.Math.Lapack, Torch.Indef.Static.Tensor.Math.Pointwise.Floating as Torch.Indef.Cuda.Double.Tensor.Math.Pointwise.Floating, Torch.Indef.Static.Tensor.Math.Reduce.Floating as Torch.Indef.Cuda.Double.Tensor.Math.Reduce.Floating, Torch.Indef.Static.Tensor.Math.Floating as Torch.Indef.Cuda.Double.Tensor.Math.Floating, Torch.Undefined.Tensor.Random.TH as Torch.Undefined.Cuda.Double.Tensor.Random.TH, Torch.Undefined.Tensor.Math.Random.TH as Torch.Undefined.Cuda.Double.Tensor.Math.Random.TH, Torch.Indef.Static.Tensor.Random.THC as Torch.Indef.Cuda.Double.Tensor.Random.THC, Torch.Indef.Dynamic.Tensor.Random.THC as Torch.Indef.Cuda.Double.Dynamic.Tensor.Random.THC, Torch.Indef.Storage as Torch.Indef.Cuda.Double.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Double.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Double.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Double.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Double.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Double.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Double.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Double.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Double.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Double.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Double.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Double.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Double.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Double.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Double.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Double.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Double.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Double.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Double.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Double.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Double.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Double.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Double.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Double.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Double.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Double.Types, Torch.Indef.Index as Torch.Cuda.Double.Index, Torch.Indef.Mask as Torch.Cuda.Double.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Double.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Double.Dynamic.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.NN as Torch.Cuda.Double.Dynamic.NN, Torch.Indef.Dynamic.NN.Activation as Torch.Cuda.Double.Dynamic.NN.Activation, Torch.Indef.Dynamic.NN.Pooling as Torch.Cuda.Double.Dynamic.NN.Pooling, Torch.Indef.Dynamic.NN.Criterion as Torch.Cuda.Double.Dynamic.NN.Criterion, Torch.Indef.Static.NN as Torch.Cuda.Double.NN, Torch.Indef.Static.NN as Torch.Cuda.Double.NN, Torch.Indef.Static.NN.Activation as Torch.Cuda.Double.NN.Activation, Torch.Indef.Static.NN.Backprop as Torch.Cuda.Double.NN.Backprop, Torch.Indef.Static.NN.Conv1d as Torch.Cuda.Double.NN.Conv1d, Torch.Indef.Static.NN.Conv2d as Torch.Cuda.Double.NN.Conv2d, Torch.Indef.Static.NN.Criterion as Torch.Cuda.Double.NN.Criterion, Torch.Indef.Static.NN.Layers as Torch.Cuda.Double.NN.Layers, Torch.Indef.Static.NN.Linear as Torch.Cuda.Double.NN.Linear, Torch.Indef.Static.NN.Math as Torch.Cuda.Double.NN.Math, Torch.Indef.Static.NN.Padding as Torch.Cuda.Double.NN.Padding, Torch.Indef.Static.NN.Pooling as Torch.Cuda.Double.NN.Pooling, Torch.Indef.Static.NN.Sampling as Torch.Cuda.Double.NN.Sampling) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Double, Torch.Sig.Storage as Torch.FFI.THC.Double.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Double.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Double.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Double.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Double.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Double.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Double.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Double.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Double.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Double.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Double.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Double.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Double.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Double.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Double.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Double.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Double.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Double.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Double.TensorTopK, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.THC.Double.TensorMathPointwise, Torch.Sig.Tensor.Math.Pointwise.Floating as Torch.FFI.THC.Double.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce.Floating as Torch.FFI.THC.Double.TensorMathReduce, Torch.Sig.Tensor.Math.Floating as Torch.FFI.THC.Double.TensorMath, Torch.Sig.Tensor.Math.Blas as Torch.FFI.THC.Double.TensorMathBlas, Torch.Sig.Tensor.Math.Lapack as Torch.FFI.THC.Double.TensorMathMagma, Torch.Sig.NN as Torch.FFI.THC.NN.Double, Torch.Sig.Types.NN as Torch.Types.THC, Torch.Sig.Tensor.Math.Random.TH as Torch.Undefined.Cuda.Double.Tensor.Math.Random.TH, Torch.Sig.Tensor.Random.TH as Torch.Undefined.Cuda.Double.Tensor.Random.TH, Torch.Sig.Tensor.Random.THC as Torch.FFI.THC.Double.TensorRandom)++    if flag(lite)++    else+        exposed-modules:+            Torch.Cuda.Byte+            Torch.Cuda.Byte.Dynamic+            Torch.Cuda.Byte.Storage+            Torch.Cuda.Char+            Torch.Cuda.Char.Dynamic+            Torch.Cuda.Char.Storage+            Torch.Cuda.Short+            Torch.Cuda.Short.Dynamic+            Torch.Cuda.Short.Storage+            Torch.Cuda.Int+            Torch.Cuda.Int.Dynamic+            Torch.Cuda.Int.Storage++        build-depends:   hasktorch-indef-unsigned+        mixins:+            hasktorch-indef-unsigned (Torch.Indef.Storage as Torch.Indef.Cuda.Byte.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Byte.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Byte.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Byte.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Byte.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Byte.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Byte.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Byte.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Byte.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Byte.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Byte.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Byte.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Byte.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Byte.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Byte.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Byte.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Byte.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Byte.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Byte.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Byte.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Byte.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Byte.Types, Torch.Indef.Index as Torch.Cuda.Byte.Index, Torch.Indef.Mask as Torch.Cuda.Byte.Mask) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Byte, Torch.Sig.Storage as Torch.FFI.THC.Byte.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Byte.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Byte.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Byte.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Byte.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Byte.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Byte.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Byte.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Byte.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Byte.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Byte.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Byte.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Byte.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Byte.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Byte.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Byte.TensorTopK),+            hasktorch-indef-unsigned (Torch.Indef.Storage as Torch.Indef.Cuda.Char.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Char.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Char.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Char.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Char.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Char.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Char.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Char.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Char.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Char.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Char.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Char.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Char.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Char.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Char.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Char.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Char.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Char.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Char.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Char.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Char.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Char.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Char.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Char.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Char.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Char.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Char.Types, Torch.Indef.Index as Torch.Cuda.Char.Index, Torch.Indef.Mask as Torch.Cuda.Char.Mask) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Char, Torch.Sig.Storage as Torch.FFI.THC.Char.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Char.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Char.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Char.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Char.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Char.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Char.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Char.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Char.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Char.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Char.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Char.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Char.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Char.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Char.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Char.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Char.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Char.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Char.TensorTopK),+            hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Cuda.Short.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Short.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Short.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Short.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Short.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Short.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Short.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Short.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Short.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Short.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Short.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Short.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Short.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Short.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Short.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Short.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Short.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Short.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Short.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Short.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Short.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Short.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Short.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Short.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Short.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Short.Types, Torch.Indef.Index as Torch.Cuda.Short.Index, Torch.Indef.Mask as Torch.Cuda.Short.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Short.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Short.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Short, Torch.Sig.Storage as Torch.FFI.THC.Short.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Short.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Short.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Short.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Short.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Short.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Short.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Short.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Short.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Short.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Short.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Short.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Short.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Short.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Short.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Short.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Short.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Short.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Short.TensorTopK, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.THC.Short.TensorMathPointwise),+            hasktorch-indef-signed (Torch.Indef.Storage as Torch.Indef.Cuda.Int.Storage, Torch.Indef.Storage.Copy as Torch.Indef.Cuda.Int.Storage.Copy, Torch.Indef.Static.Tensor as Torch.Indef.Cuda.Int.Tensor, Torch.Indef.Static.Tensor.Copy as Torch.Indef.Cuda.Int.Tensor.Copy, Torch.Indef.Static.Tensor.Index as Torch.Indef.Cuda.Int.Tensor.Index, Torch.Indef.Static.Tensor.Masked as Torch.Indef.Cuda.Int.Tensor.Masked, Torch.Indef.Static.Tensor.Math as Torch.Indef.Cuda.Int.Tensor.Math, Torch.Indef.Static.Tensor.Math.Compare as Torch.Indef.Cuda.Int.Tensor.Math.Compare, Torch.Indef.Static.Tensor.Math.CompareT as Torch.Indef.Cuda.Int.Tensor.Math.CompareT, Torch.Indef.Static.Tensor.Math.Pairwise as Torch.Indef.Cuda.Int.Tensor.Math.Pairwise, Torch.Indef.Static.Tensor.Math.Pointwise as Torch.Indef.Cuda.Int.Tensor.Math.Pointwise, Torch.Indef.Static.Tensor.Math.Reduce as Torch.Indef.Cuda.Int.Tensor.Math.Reduce, Torch.Indef.Static.Tensor.Math.Scan as Torch.Indef.Cuda.Int.Tensor.Math.Scan, Torch.Indef.Static.Tensor.Mode as Torch.Indef.Cuda.Int.Tensor.Mode, Torch.Indef.Static.Tensor.ScatterGather as Torch.Indef.Cuda.Int.Tensor.ScatterGather, Torch.Indef.Static.Tensor.Sort as Torch.Indef.Cuda.Int.Tensor.Sort, Torch.Indef.Static.Tensor.TopK as Torch.Indef.Cuda.Int.Tensor.TopK, Torch.Indef.Dynamic.Tensor as Torch.Indef.Cuda.Int.Dynamic.Tensor, Torch.Indef.Dynamic.Tensor.Copy as Torch.Indef.Cuda.Int.Dynamic.Tensor.Copy, Torch.Indef.Dynamic.Tensor.Index as Torch.Indef.Cuda.Int.Dynamic.Tensor.Index, Torch.Indef.Dynamic.Tensor.Masked as Torch.Indef.Cuda.Int.Dynamic.Tensor.Masked, Torch.Indef.Dynamic.Tensor.Math as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math, Torch.Indef.Dynamic.Tensor.Math.Compare as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Compare, Torch.Indef.Dynamic.Tensor.Math.CompareT as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.CompareT, Torch.Indef.Dynamic.Tensor.Math.Pairwise as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Pairwise, Torch.Indef.Dynamic.Tensor.Math.Pointwise as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Pointwise, Torch.Indef.Dynamic.Tensor.Math.Reduce as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Reduce, Torch.Indef.Dynamic.Tensor.Math.Scan as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Scan, Torch.Indef.Dynamic.Tensor.Mode as Torch.Indef.Cuda.Int.Dynamic.Tensor.Mode, Torch.Indef.Dynamic.Tensor.ScatterGather as Torch.Indef.Cuda.Int.Dynamic.Tensor.ScatterGather, Torch.Indef.Dynamic.Tensor.Sort as Torch.Indef.Cuda.Int.Dynamic.Tensor.Sort, Torch.Indef.Dynamic.Tensor.TopK as Torch.Indef.Cuda.Int.Dynamic.Tensor.TopK, Torch.Indef.Types as Torch.Cuda.Int.Types, Torch.Indef.Index as Torch.Cuda.Int.Index, Torch.Indef.Mask as Torch.Cuda.Int.Mask, Torch.Indef.Static.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Int.Tensor.Math.Pointwise.Signed, Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed as Torch.Indef.Cuda.Int.Dynamic.Tensor.Math.Pointwise.Signed) requires (Torch.Sig.Index.Tensor as Torch.FFI.THC.Long.Tensor, Torch.Sig.Index.TensorFree as Torch.FFI.THC.Long.Tensor, Torch.Sig.Mask.Tensor as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.TensorFree as Torch.FFI.THC.Byte.Tensor, Torch.Sig.Mask.MathReduce as Torch.FFI.THC.Byte.TensorMathReduce, Torch.Sig.State as Torch.FFI.THC.State, Torch.Sig.Types.Global as Torch.Types.THC, Torch.Sig.Types as Torch.Types.THC.Int, Torch.Sig.Storage as Torch.FFI.THC.Int.Storage, Torch.Sig.Storage.Copy as Torch.FFI.THC.Int.StorageCopy, Torch.Sig.Storage.Memory as Torch.FFI.THC.Int.Storage, Torch.Sig.Tensor as Torch.FFI.THC.Int.Tensor, Torch.Sig.Tensor.Copy as Torch.FFI.THC.Int.TensorCopy, Torch.Sig.Tensor.Memory as Torch.FFI.THC.Int.Tensor, Torch.Sig.Tensor.Index as Torch.FFI.THC.Int.TensorIndex, Torch.Sig.Tensor.Masked as Torch.FFI.THC.Int.TensorMasked, Torch.Sig.Tensor.Math as Torch.FFI.THC.Int.TensorMath, Torch.Sig.Tensor.Math.Compare as Torch.FFI.THC.Int.TensorMathCompare, Torch.Sig.Tensor.Math.CompareT as Torch.FFI.THC.Int.TensorMathCompareT, Torch.Sig.Tensor.Math.Pairwise as Torch.FFI.THC.Int.TensorMathPairwise, Torch.Sig.Tensor.Math.Pointwise as Torch.FFI.THC.Int.TensorMathPointwise, Torch.Sig.Tensor.Math.Reduce as Torch.FFI.THC.Int.TensorMathReduce, Torch.Sig.Tensor.Math.Scan as Torch.FFI.THC.Int.TensorMathScan, Torch.Sig.Tensor.Mode as Torch.FFI.THC.Int.TensorMode, Torch.Sig.Tensor.ScatterGather as Torch.FFI.THC.Int.TensorScatterGather, Torch.Sig.Tensor.Sort as Torch.FFI.THC.Int.TensorSort, Torch.Sig.Tensor.TopK as Torch.FFI.THC.Int.TensorTopK, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.FFI.THC.Int.TensorMathPointwise)++library hasktorch-indef-unsigned+    reexported-modules:+        Torch.Indef.Index,+        Torch.Indef.Mask,+        Torch.Indef.Types,+        Torch.Indef.Storage,+        Torch.Indef.Storage.Copy,+        Torch.Indef.Dynamic.Print,+        Torch.Indef.Dynamic.Tensor,+        Torch.Indef.Dynamic.Tensor.Copy,+        Torch.Indef.Dynamic.Tensor.Index,+        Torch.Indef.Dynamic.Tensor.Masked,+        Torch.Indef.Dynamic.Tensor.Math,+        Torch.Indef.Dynamic.Tensor.Math.Compare,+        Torch.Indef.Dynamic.Tensor.Math.CompareT,+        Torch.Indef.Dynamic.Tensor.Math.Pairwise,+        Torch.Indef.Dynamic.Tensor.Math.Pointwise,+        Torch.Indef.Dynamic.Tensor.Math.Reduce,+        Torch.Indef.Dynamic.Tensor.Math.Scan,+        Torch.Indef.Dynamic.Tensor.Mode,+        Torch.Indef.Dynamic.Tensor.ScatterGather,+        Torch.Indef.Dynamic.Tensor.Sort,+        Torch.Indef.Dynamic.Tensor.TopK,+        Torch.Indef.Static.Tensor,+        Torch.Indef.Static.Tensor.Copy,+        Torch.Indef.Static.Tensor.Index,+        Torch.Indef.Static.Tensor.Masked,+        Torch.Indef.Static.Tensor.Math,+        Torch.Indef.Static.Tensor.Math.Compare,+        Torch.Indef.Static.Tensor.Math.CompareT,+        Torch.Indef.Static.Tensor.Math.Pairwise,+        Torch.Indef.Static.Tensor.Math.Pointwise,+        Torch.Indef.Static.Tensor.Math.Reduce,+        Torch.Indef.Static.Tensor.Math.Scan,+        Torch.Indef.Static.Tensor.Mode,+        Torch.Indef.Static.Tensor.ScatterGather,+        Torch.Indef.Static.Tensor.Sort,+        Torch.Indef.Static.Tensor.TopK++    default-language:   Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-signatures-partial (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-indef++    mixins:+        hasktorch-indef requires (Torch.Sig.NN as Torch.Undefined.NN, Torch.Sig.Types.NN as Torch.Undefined.Types.NN, Torch.Sig.Tensor.Math.Blas as Torch.Undefined.Tensor.Math.Blas, Torch.Sig.Tensor.Math.Floating as Torch.Undefined.Tensor.Math.Floating, Torch.Sig.Tensor.Math.Lapack as Torch.Undefined.Tensor.Math.Lapack, Torch.Sig.Tensor.Math.Pointwise.Signed as Torch.Undefined.Tensor.Math.Pointwise.Signed, Torch.Sig.Tensor.Math.Pointwise.Floating as Torch.Undefined.Tensor.Math.Pointwise.Floating, Torch.Sig.Tensor.Math.Reduce.Floating as Torch.Undefined.Tensor.Math.Reduce.Floating, Torch.Sig.Tensor.Math.Random.TH as Torch.Undefined.Tensor.Math.Random.TH, Torch.Sig.Tensor.Random.TH as Torch.Undefined.Tensor.Random.TH, Torch.Sig.Tensor.Random.THC as Torch.Undefined.Tensor.Random.THC)++library hasktorch-indef-signed+    reexported-modules:+        Torch.Indef.Index,+        Torch.Indef.Mask,+        Torch.Indef.Types,+        Torch.Indef.Storage,+        Torch.Indef.Storage.Copy,+        Torch.Indef.Dynamic.Print,+        Torch.Indef.Dynamic.Tensor,+        Torch.Indef.Dynamic.Tensor.Copy,+        Torch.Indef.Dynamic.Tensor.Index,+        Torch.Indef.Dynamic.Tensor.Masked,+        Torch.Indef.Dynamic.Tensor.Math,+        Torch.Indef.Dynamic.Tensor.Math.Compare,+        Torch.Indef.Dynamic.Tensor.Math.CompareT,+        Torch.Indef.Dynamic.Tensor.Math.Pairwise,+        Torch.Indef.Dynamic.Tensor.Math.Pointwise,+        Torch.Indef.Dynamic.Tensor.Math.Reduce,+        Torch.Indef.Dynamic.Tensor.Math.Scan,+        Torch.Indef.Dynamic.Tensor.Mode,+        Torch.Indef.Dynamic.Tensor.ScatterGather,+        Torch.Indef.Dynamic.Tensor.Sort,+        Torch.Indef.Dynamic.Tensor.TopK,+        Torch.Indef.Static.Tensor,+        Torch.Indef.Static.Tensor.Copy,+        Torch.Indef.Static.Tensor.Index,+        Torch.Indef.Static.Tensor.Masked,+        Torch.Indef.Static.Tensor.Math,+        Torch.Indef.Static.Tensor.Math.Compare,+        Torch.Indef.Static.Tensor.Math.CompareT,+        Torch.Indef.Static.Tensor.Math.Pairwise,+        Torch.Indef.Static.Tensor.Math.Pointwise,+        Torch.Indef.Static.Tensor.Math.Reduce,+        Torch.Indef.Static.Tensor.Math.Scan,+        Torch.Indef.Static.Tensor.Mode,+        Torch.Indef.Static.Tensor.ScatterGather,+        Torch.Indef.Static.Tensor.Sort,+        Torch.Indef.Static.Tensor.TopK,+        Torch.Indef.Static.Tensor.Math.Pointwise.Signed,+        Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed++    default-language:   Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-signatures-partial (==0.0.1 || >0.0.1) && <0.0.2,+        hasktorch-indef++    mixins:+        hasktorch-indef requires (Torch.Sig.NN as Torch.Undefined.NN, Torch.Sig.Types.NN as Torch.Undefined.Types.NN, Torch.Sig.Tensor.Math.Blas as Torch.Undefined.Tensor.Math.Blas, Torch.Sig.Tensor.Math.Floating as Torch.Undefined.Tensor.Math.Floating, Torch.Sig.Tensor.Math.Lapack as Torch.Undefined.Tensor.Math.Lapack, Torch.Sig.Tensor.Math.Pointwise.Floating as Torch.Undefined.Tensor.Math.Pointwise.Floating, Torch.Sig.Tensor.Math.Reduce.Floating as Torch.Undefined.Tensor.Math.Reduce.Floating, Torch.Sig.Tensor.Math.Random.TH as Torch.Undefined.Tensor.Math.Random.TH, Torch.Sig.Tensor.Random.TH as Torch.Undefined.Tensor.Random.TH, Torch.Sig.Tensor.Random.THC as Torch.Undefined.Tensor.Random.THC)++library hasktorch-indef-floating+    reexported-modules:+        Torch.Indef.Index,+        Torch.Indef.Mask,+        Torch.Indef.Types,+        Torch.Indef.Storage,+        Torch.Indef.Storage.Copy,+        Torch.Indef.Dynamic.Print,+        Torch.Indef.Dynamic.Tensor,+        Torch.Indef.Dynamic.Tensor.Copy,+        Torch.Indef.Dynamic.Tensor.Index,+        Torch.Indef.Dynamic.Tensor.Masked,+        Torch.Indef.Dynamic.Tensor.Math,+        Torch.Indef.Dynamic.Tensor.Math.Compare,+        Torch.Indef.Dynamic.Tensor.Math.CompareT,+        Torch.Indef.Dynamic.Tensor.Math.Pairwise,+        Torch.Indef.Dynamic.Tensor.Math.Pointwise,+        Torch.Indef.Dynamic.Tensor.Math.Reduce,+        Torch.Indef.Dynamic.Tensor.Math.Scan,+        Torch.Indef.Dynamic.Tensor.Mode,+        Torch.Indef.Dynamic.Tensor.ScatterGather,+        Torch.Indef.Dynamic.Tensor.Sort,+        Torch.Indef.Dynamic.Tensor.TopK,+        Torch.Indef.Static.Tensor,+        Torch.Indef.Static.Tensor.Copy,+        Torch.Indef.Static.Tensor.Index,+        Torch.Indef.Static.Tensor.Masked,+        Torch.Indef.Static.Tensor.Math,+        Torch.Indef.Static.Tensor.Math.Compare,+        Torch.Indef.Static.Tensor.Math.CompareT,+        Torch.Indef.Static.Tensor.Math.Pairwise,+        Torch.Indef.Static.Tensor.Math.Pointwise,+        Torch.Indef.Static.Tensor.Math.Reduce,+        Torch.Indef.Static.Tensor.Math.Scan,+        Torch.Indef.Static.Tensor.Mode,+        Torch.Indef.Static.Tensor.ScatterGather,+        Torch.Indef.Static.Tensor.Sort,+        Torch.Indef.Static.Tensor.TopK,+        Torch.Indef.Static.Tensor.Math.Pointwise.Signed,+        Torch.Indef.Dynamic.Tensor.Math.Pointwise.Signed,+        Torch.Indef.Dynamic.Tensor.Math.Blas,+        Torch.Indef.Dynamic.Tensor.Math.Floating,+        Torch.Indef.Dynamic.Tensor.Math.Lapack,+        Torch.Indef.Dynamic.Tensor.Math.Pointwise.Floating,+        Torch.Indef.Dynamic.Tensor.Math.Reduce.Floating,+        Torch.Indef.Dynamic.Tensor.Random.TH,+        Torch.Indef.Dynamic.Tensor.Random.THC,+        Torch.Indef.Dynamic.Tensor.Math.Random.TH,+        Torch.Indef.Static.Tensor.Math.Blas,+        Torch.Indef.Static.Tensor.Math.Floating,+        Torch.Indef.Static.Tensor.Math.Lapack,+        Torch.Indef.Static.Tensor.Math.Pointwise.Floating,+        Torch.Indef.Static.Tensor.Math.Reduce.Floating,+        Torch.Indef.Static.Tensor.Random.TH,+        Torch.Indef.Static.Tensor.Random.THC,+        Torch.Indef.Static.Tensor.Math.Random.TH,+        Torch.Indef.Dynamic.NN,+        Torch.Indef.Dynamic.NN.Activation,+        Torch.Indef.Dynamic.NN.Pooling,+        Torch.Indef.Dynamic.NN.Criterion,+        Torch.Indef.Static.NN,+        Torch.Indef.Static.NN.Activation,+        Torch.Indef.Static.NN.Backprop,+        Torch.Indef.Static.NN.Conv1d,+        Torch.Indef.Static.NN.Conv2d,+        Torch.Indef.Static.NN.Criterion,+        Torch.Indef.Static.NN.Layers,+        Torch.Indef.Static.NN.Linear,+        Torch.Indef.Static.NN.Math,+        Torch.Indef.Static.NN.Padding,+        Torch.Indef.Static.NN.Pooling,+        Torch.Indef.Static.NN.Sampling,+        Torch.Undefined.Tensor.Math.Random.TH,+        Torch.Undefined.Tensor.Random.TH,+        Torch.Undefined.Tensor.Random.THC++    default-language:   Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-indef,+        hasktorch-signatures-partial (==0.0.1 || >0.0.1) && <0.0.2++executable isdefinite-cpu+    main-is:          Noop.hs+    hs-source-dirs:   exe+    default-language: Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-cpu++executable isdefinite-gpu+    main-is:          Noop.hs+    hs-source-dirs:   exe+    default-language: Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch-gpu++executable isdefinite+    main-is:          Noop.hs+    hs-source-dirs:   exe+    default-language: Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch++executable memcheck+    main-is:          Memcheck.hs+    hs-source-dirs:   exe+    default-language: Haskell2010+    build-depends:+        base (==4.7 || >4.7) && <5,+        hasktorch++test-suite spec+    type:               exitcode-stdio-1.0+    main-is:            Spec.hs+    hs-source-dirs:     tests+    other-modules:+        Orphans+        MemorySpec+        RawLapackSVDSpec+        GarbageCollectionSpec+        Torch.Prelude.Extras+        Torch.Core.LogAddSpec+        Torch.Core.RandomSpec+        Torch.Static.NN.AbsSpec+        Torch.Static.NN.LinearSpec++    default-language:   Haskell2010+    default-extensions:+        LambdaCase DataKinds TypeFamilies TypeSynonymInstances+        ScopedTypeVariables FlexibleContexts CPP++    build-depends:+        QuickCheck ==2.11 || >2.11,+        backprop ==0.2.5 || >0.2.5,+        base (==4.7 || >4.7) && <5,+        dimensions ==1.0 || >1.0,+        ghc-typelits-natnormalise,+        hasktorch,+        hspec ==2.4.4 || >2.4.4,+        singletons ==2.2 || >2.2,+        mtl ==2.2.2 || >2.2.2,+        microlens-platform ==0.3.10 || >0.3.10,+        monad-loops ==0.4.3 || >0.4.3,+        time ==1.8.0 || >1.8.0,+        transformers ==0.5.5 || >0.5.5,+        generic-lens
tests/ParserTests/regressions/hidden-main-lib.expr view
@@ -6,11 +6,11 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "base")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["ElseIf"]`],+                                       {exposedModules = [ModuleName "ElseIf"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -54,10 +54,12 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -67,6 +69,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -89,12 +92,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "hidden-main-lib"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "hidden-main-lib",+                                        pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "main lib have to be visible",
tests/ParserTests/regressions/hidden-main-lib.format view
@@ -8,4 +8,4 @@ library     exposed-modules:  ElseIf     default-language: Haskell2010-    build-depends:    base -any+    build-depends:    base
tests/ParserTests/regressions/indentation.expr view
@@ -60,6 +60,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -92,12 +93,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "indentation"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "indentation",+                                        pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "",
tests/ParserTests/regressions/indentation2.expr view
@@ -60,6 +60,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -82,12 +83,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "indentation"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "indentation",+                                        pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "",
tests/ParserTests/regressions/indentation3.expr view
@@ -60,6 +60,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -87,12 +88,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "indentation"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "indentation",+                                        pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "",
tests/ParserTests/regressions/issue-5055.cabal view
@@ -5,7 +5,7 @@ license:             BSD3 category:            Test build-type:          Simple-cabal-version:       >=2.0+cabal-version:       2.0  executable flag-test-exe   main-is: FirstMain.hs
tests/ParserTests/regressions/issue-5055.expr view
@@ -1,15 +1,15 @@ GenericPackageDescription   {condBenchmarks = [],    condExecutables = [_×_-                        `UnqualComponentName "flag-test-exe"`+                        (UnqualComponentName "flag-test-exe")                         CondNode                           {condTreeComponents = [],                            condTreeConstraints = [Dependency-                                                    `PackageName "base"`+                                                    (PackageName "base")                                                     (IntersectVersionRanges-                                                       (OrLaterVersion `mkVersion [4,8]`)-                                                       (EarlierVersion `mkVersion [5]`))-                                                    (Set.fromList [LMainLibName])],+                                                       (OrLaterVersion (mkVersion [4, 8]))+                                                       (EarlierVersion (mkVersion [5])))+                                                    mainLibSet],                            condTreeData = Executable                                             {buildInfo = BuildInfo                                                            {asmOptions = [],@@ -54,23 +54,26 @@                                                             sharedOptions = PerCompilerFlavor [] [],                                                             staticOptions = PerCompilerFlavor [] [],                                                             targetBuildDepends = [Dependency-                                                                                    `PackageName "base"`+                                                                                    (PackageName+                                                                                       "base")                                                                                     (IntersectVersionRanges                                                                                        (OrLaterVersion-                                                                                          `mkVersion [4,8]`)+                                                                                          (mkVersion+                                                                                             [4,+                                                                                              8]))                                                                                        (EarlierVersion-                                                                                          `mkVersion [5]`))-                                                                                    (Set.fromList-                                                                                       [LMainLibName])],+                                                                                          (mkVersion+                                                                                             [5])))+                                                                                    mainLibSet],                                                             virtualModules = []},-                                             exeName = `UnqualComponentName "flag-test-exe"`,+                                             exeName = UnqualComponentName "flag-test-exe",                                              exeScope = ExecutablePublic,                                              modulePath = "FirstMain.hs"}}],    condForeignLibs = [],    condLibrary = Nothing,    condSubLibraries = [],    condTestSuites = [_×_-                       `UnqualComponentName "flag-cabal-test"`+                       (UnqualComponentName "flag-cabal-test")                        CondNode                          {condTreeComponents = [CondBranch                                                   {condBranchCondition = `Var (OS Windows)`,@@ -134,14 +137,16 @@                                                                                            testInterface = TestSuiteUnsupported                                                                                                              (TestTypeUnknown                                                                                                                 ""-                                                                                                                `mkVersion []`),-                                                                                           testName = `UnqualComponentName ""`}}}],+                                                                                                                (mkVersion+                                                                                                                   [])),+                                                                                           testName = UnqualComponentName+                                                                                                        ""}}}],                           condTreeConstraints = [Dependency-                                                   `PackageName "base"`+                                                   (PackageName "base")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [4,8]`)-                                                      (EarlierVersion `mkVersion [5]`))-                                                   (Set.fromList [LMainLibName])],+                                                      (OrLaterVersion (mkVersion [4, 8]))+                                                      (EarlierVersion (mkVersion [5])))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],@@ -189,19 +194,23 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "base"`+                                                                                       (PackageName+                                                                                          "base")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [4,8]`)+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 8]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [5]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                             (mkVersion+                                                                                                [5])))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "SecondMain.hs",-                                            testName = `UnqualComponentName ""`}}],+                                                              (mkVersion [1, 0]) "SecondMain.hs",+                                            testName = UnqualComponentName ""}}],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -224,12 +233,12 @@                            licenseRaw = Right BSD3,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "issue"`,-                                        pkgVersion = `mkVersion [5055]`},+                                       {pkgName = PackageName "issue",+                                        pkgVersion = mkVersion [5055]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [2,0]`),+                           specVersion = CabalSpecV2_0,                            stability = "",                            subLibraries = [],                            synopsis = "no type in all branches",
tests/ParserTests/regressions/issue-5055.format view
@@ -1,4 +1,4 @@-cabal-version: >=2.0+cabal-version: 2.0 name:          issue version:       5055 license:       BSD3
tests/ParserTests/regressions/issue-5846.expr view
@@ -6,27 +6,31 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "lib1"`-                                               AnyVersion-                                               (Set.fromList-                                                  [LSubLibName `UnqualComponentName "a"`,-                                                   LSubLibName `UnqualComponentName "b"`]),+                                               (PackageName "lib1")+                                               (OrLaterVersion (mkVersion [0]))+                                               (NonEmptySet.fromNonEmpty+                                                  (NE.fromList+                                                     [LSubLibName (UnqualComponentName "a"),+                                                      LSubLibName (UnqualComponentName "b")])),                                              Dependency-                                               `PackageName "lib2"`-                                               AnyVersion-                                               (Set.fromList-                                                  [LSubLibName `UnqualComponentName "c"`]),+                                               (PackageName "lib2")+                                               (OrLaterVersion (mkVersion [0]))+                                               (NonEmptySet.fromNonEmpty+                                                  (NE.fromList+                                                     [LSubLibName (UnqualComponentName "c")])),                                              Dependency-                                               `PackageName "lib3"`-                                               (OrLaterVersion `mkVersion [1]`)-                                               (Set.fromList-                                                  [LSubLibName `UnqualComponentName "d"`]),+                                               (PackageName "lib3")+                                               (OrLaterVersion (mkVersion [1]))+                                               (NonEmptySet.fromNonEmpty+                                                  (NE.fromList+                                                     [LSubLibName (UnqualComponentName "d")])),                                              Dependency-                                               `PackageName "lib4"`-                                               (OrLaterVersion `mkVersion [1]`)-                                               (Set.fromList-                                                  [LSubLibName `UnqualComponentName "a"`,-                                                   LSubLibName `UnqualComponentName "b"`])],+                                               (PackageName "lib4")+                                               (OrLaterVersion (mkVersion [1]))+                                               (NonEmptySet.fromNonEmpty+                                                  (NE.fromList+                                                     [LSubLibName (UnqualComponentName "a"),+                                                      LSubLibName (UnqualComponentName "b")]))],                       condTreeData = Library                                        {exposedModules = [],                                         libBuildInfo = BuildInfo@@ -72,35 +76,55 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "lib1"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LSubLibName-                                                                                        `UnqualComponentName "a"`,-                                                                                      LSubLibName-                                                                                        `UnqualComponentName "b"`]),+                                                                                  (PackageName+                                                                                     "lib1")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  (NonEmptySet.fromNonEmpty+                                                                                     (NE.fromList+                                                                                        [LSubLibName+                                                                                           (UnqualComponentName+                                                                                              "a"),+                                                                                         LSubLibName+                                                                                           (UnqualComponentName+                                                                                              "b")])),                                                                                 Dependency-                                                                                  `PackageName "lib2"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LSubLibName-                                                                                        `UnqualComponentName "c"`]),+                                                                                  (PackageName+                                                                                     "lib2")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  (NonEmptySet.fromNonEmpty+                                                                                     (NE.fromList+                                                                                        [LSubLibName+                                                                                           (UnqualComponentName+                                                                                              "c")])),                                                                                 Dependency-                                                                                  `PackageName "lib3"`+                                                                                  (PackageName+                                                                                     "lib3")                                                                                   (OrLaterVersion-                                                                                     `mkVersion [1]`)-                                                                                  (Set.fromList-                                                                                     [LSubLibName-                                                                                        `UnqualComponentName "d"`]),+                                                                                     (mkVersion+                                                                                        [1]))+                                                                                  (NonEmptySet.fromNonEmpty+                                                                                     (NE.fromList+                                                                                        [LSubLibName+                                                                                           (UnqualComponentName+                                                                                              "d")])),                                                                                 Dependency-                                                                                  `PackageName "lib4"`+                                                                                  (PackageName+                                                                                     "lib4")                                                                                   (OrLaterVersion-                                                                                     `mkVersion [1]`)-                                                                                  (Set.fromList-                                                                                     [LSubLibName-                                                                                        `UnqualComponentName "a"`,-                                                                                      LSubLibName-                                                                                        `UnqualComponentName "b"`])],+                                                                                     (mkVersion+                                                                                        [1]))+                                                                                  (NonEmptySet.fromNonEmpty+                                                                                     (NE.fromList+                                                                                        [LSubLibName+                                                                                           (UnqualComponentName+                                                                                              "a"),+                                                                                         LSubLibName+                                                                                           (UnqualComponentName+                                                                                              "b")]))],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -110,6 +134,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -132,12 +157,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "issue"`,-                                        pkgVersion = `mkVersion [5846]`},+                                       {pkgName = PackageName "issue",+                                        pkgVersion = mkVersion [5846]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "",
tests/ParserTests/regressions/issue-5846.format view
@@ -1,3 +1,7 @@+issue-5846.cabal:11:23: colon specifier is experimental feature (issue #5660)+issue-5846.cabal:10:23: colon specifier is experimental feature (issue #5660)+issue-5846.cabal:7:23: colon specifier is experimental feature (issue #5660)+issue-5846.cabal:8:23: colon specifier is experimental feature (issue #5660) cabal-version: 3.0 name:          issue version:       5846@@ -5,7 +9,7 @@ library     default-language: Haskell2010     build-depends:-        lib1:{a, b} -any,-        lib2:{c} -any,-        lib3:{d} >=1,+        lib1:{a, b},+        lib2:c,+        lib3:d >=1,         lib4:{a, b} >=1
+ tests/ParserTests/regressions/issue-6083-a.cabal view
@@ -0,0 +1,19 @@+cabal-version: 3.4+name: issue+version: 6083++library+  default-language: Haskell2010+  -- This should be parsed as the main lib+  build-depends: base, issue:sublib++library sublib+  default-language: Haskell2010++executable demo-a+  main-is: Main.hs+  build-depends: issue, sublib++executable demo-b+  main-is: Main.hs+  build-depends: issue, issue:sublib
+ tests/ParserTests/regressions/issue-6083-a.expr view
@@ -0,0 +1,333 @@+GenericPackageDescription+  {condBenchmarks = [],+   condExecutables = [_×_+                        (UnqualComponentName "demo-a")+                        CondNode+                          {condTreeComponents = [],+                           condTreeConstraints = [Dependency+                                                    (PackageName "issue")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "sublib")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet],+                           condTreeData = Executable+                                            {buildInfo = BuildInfo+                                                           {asmOptions = [],+                                                            asmSources = [],+                                                            autogenIncludes = [],+                                                            autogenModules = [],+                                                            buildToolDepends = [],+                                                            buildTools = [],+                                                            buildable = True,+                                                            cSources = [],+                                                            ccOptions = [],+                                                            cmmOptions = [],+                                                            cmmSources = [],+                                                            cppOptions = [],+                                                            customFieldsBI = [],+                                                            cxxOptions = [],+                                                            cxxSources = [],+                                                            defaultExtensions = [],+                                                            defaultLanguage = Nothing,+                                                            extraBundledLibs = [],+                                                            extraDynLibFlavours = [],+                                                            extraFrameworkDirs = [],+                                                            extraGHCiLibs = [],+                                                            extraLibDirs = [],+                                                            extraLibFlavours = [],+                                                            extraLibs = [],+                                                            frameworks = [],+                                                            hsSourceDirs = [],+                                                            includeDirs = [],+                                                            includes = [],+                                                            installIncludes = [],+                                                            jsSources = [],+                                                            ldOptions = [],+                                                            mixins = [],+                                                            oldExtensions = [],+                                                            options = PerCompilerFlavor [] [],+                                                            otherExtensions = [],+                                                            otherLanguages = [],+                                                            otherModules = [],+                                                            pkgconfigDepends = [],+                                                            profOptions = PerCompilerFlavor [] [],+                                                            sharedOptions = PerCompilerFlavor [] [],+                                                            staticOptions = PerCompilerFlavor [] [],+                                                            targetBuildDepends = [Dependency+                                                                                    (PackageName+                                                                                       "issue")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "sublib")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet],+                                                            virtualModules = []},+                                             exeName = UnqualComponentName "demo-a",+                                             exeScope = ExecutablePublic,+                                             modulePath = "Main.hs"}},+                      _×_+                        (UnqualComponentName "demo-b")+                        CondNode+                          {condTreeComponents = [],+                           condTreeConstraints = [Dependency+                                                    (PackageName "issue")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "issue")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    (NonEmptySet.fromNonEmpty+                                                       (NE.fromList+                                                          [LSubLibName+                                                             (UnqualComponentName "sublib")]))],+                           condTreeData = Executable+                                            {buildInfo = BuildInfo+                                                           {asmOptions = [],+                                                            asmSources = [],+                                                            autogenIncludes = [],+                                                            autogenModules = [],+                                                            buildToolDepends = [],+                                                            buildTools = [],+                                                            buildable = True,+                                                            cSources = [],+                                                            ccOptions = [],+                                                            cmmOptions = [],+                                                            cmmSources = [],+                                                            cppOptions = [],+                                                            customFieldsBI = [],+                                                            cxxOptions = [],+                                                            cxxSources = [],+                                                            defaultExtensions = [],+                                                            defaultLanguage = Nothing,+                                                            extraBundledLibs = [],+                                                            extraDynLibFlavours = [],+                                                            extraFrameworkDirs = [],+                                                            extraGHCiLibs = [],+                                                            extraLibDirs = [],+                                                            extraLibFlavours = [],+                                                            extraLibs = [],+                                                            frameworks = [],+                                                            hsSourceDirs = [],+                                                            includeDirs = [],+                                                            includes = [],+                                                            installIncludes = [],+                                                            jsSources = [],+                                                            ldOptions = [],+                                                            mixins = [],+                                                            oldExtensions = [],+                                                            options = PerCompilerFlavor [] [],+                                                            otherExtensions = [],+                                                            otherLanguages = [],+                                                            otherModules = [],+                                                            pkgconfigDepends = [],+                                                            profOptions = PerCompilerFlavor [] [],+                                                            sharedOptions = PerCompilerFlavor [] [],+                                                            staticOptions = PerCompilerFlavor [] [],+                                                            targetBuildDepends = [Dependency+                                                                                    (PackageName+                                                                                       "issue")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "issue")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    (NonEmptySet.fromNonEmpty+                                                                                       (NE.fromList+                                                                                          [LSubLibName+                                                                                             (UnqualComponentName+                                                                                                "sublib")]))],+                                                            virtualModules = []},+                                             exeName = UnqualComponentName "demo-b",+                                             exeScope = ExecutablePublic,+                                             modulePath = "Main.hs"}}],+   condForeignLibs = [],+   condLibrary = Just+                   CondNode+                     {condTreeComponents = [],+                      condTreeConstraints = [Dependency+                                               (PackageName "base")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "issue")+                                               (OrLaterVersion (mkVersion [0]))+                                               (NonEmptySet.fromNonEmpty+                                                  (NE.fromList+                                                     [LSubLibName+                                                        (UnqualComponentName "sublib")]))],+                      condTreeData = Library+                                       {exposedModules = [],+                                        libBuildInfo = BuildInfo+                                                         {asmOptions = [],+                                                          asmSources = [],+                                                          autogenIncludes = [],+                                                          autogenModules = [],+                                                          buildToolDepends = [],+                                                          buildTools = [],+                                                          buildable = True,+                                                          cSources = [],+                                                          ccOptions = [],+                                                          cmmOptions = [],+                                                          cmmSources = [],+                                                          cppOptions = [],+                                                          customFieldsBI = [],+                                                          cxxOptions = [],+                                                          cxxSources = [],+                                                          defaultExtensions = [],+                                                          defaultLanguage = Just Haskell2010,+                                                          extraBundledLibs = [],+                                                          extraDynLibFlavours = [],+                                                          extraFrameworkDirs = [],+                                                          extraGHCiLibs = [],+                                                          extraLibDirs = [],+                                                          extraLibFlavours = [],+                                                          extraLibs = [],+                                                          frameworks = [],+                                                          hsSourceDirs = [],+                                                          includeDirs = [],+                                                          includes = [],+                                                          installIncludes = [],+                                                          jsSources = [],+                                                          ldOptions = [],+                                                          mixins = [],+                                                          oldExtensions = [],+                                                          options = PerCompilerFlavor [] [],+                                                          otherExtensions = [],+                                                          otherLanguages = [],+                                                          otherModules = [],+                                                          pkgconfigDepends = [],+                                                          profOptions = PerCompilerFlavor [] [],+                                                          sharedOptions = PerCompilerFlavor [] [],+                                                          staticOptions = PerCompilerFlavor [] [],+                                                          targetBuildDepends = [Dependency+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "issue")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  (NonEmptySet.fromNonEmpty+                                                                                     (NE.fromList+                                                                                        [LSubLibName+                                                                                           (UnqualComponentName+                                                                                              "sublib")]))],+                                                          virtualModules = []},+                                        libExposed = True,+                                        libName = LMainLibName,+                                        libVisibility = LibraryVisibilityPublic,+                                        reexportedModules = [],+                                        signatures = []}},+   condSubLibraries = [_×_+                         (UnqualComponentName "sublib")+                         CondNode+                           {condTreeComponents = [],+                            condTreeConstraints = [],+                            condTreeData = Library+                                             {exposedModules = [],+                                              libBuildInfo = BuildInfo+                                                               {asmOptions = [],+                                                                asmSources = [],+                                                                autogenIncludes = [],+                                                                autogenModules = [],+                                                                buildToolDepends = [],+                                                                buildTools = [],+                                                                buildable = True,+                                                                cSources = [],+                                                                ccOptions = [],+                                                                cmmOptions = [],+                                                                cmmSources = [],+                                                                cppOptions = [],+                                                                customFieldsBI = [],+                                                                cxxOptions = [],+                                                                cxxSources = [],+                                                                defaultExtensions = [],+                                                                defaultLanguage = Just Haskell2010,+                                                                extraBundledLibs = [],+                                                                extraDynLibFlavours = [],+                                                                extraFrameworkDirs = [],+                                                                extraGHCiLibs = [],+                                                                extraLibDirs = [],+                                                                extraLibFlavours = [],+                                                                extraLibs = [],+                                                                frameworks = [],+                                                                hsSourceDirs = [],+                                                                includeDirs = [],+                                                                includes = [],+                                                                installIncludes = [],+                                                                jsSources = [],+                                                                ldOptions = [],+                                                                mixins = [],+                                                                oldExtensions = [],+                                                                options = PerCompilerFlavor [] [],+                                                                otherExtensions = [],+                                                                otherLanguages = [],+                                                                otherModules = [],+                                                                pkgconfigDepends = [],+                                                                profOptions = PerCompilerFlavor+                                                                                [] [],+                                                                sharedOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                staticOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                targetBuildDepends = [],+                                                                virtualModules = []},+                                              libExposed = True,+                                              libName = LSubLibName (UnqualComponentName "sublib"),+                                              libVisibility = LibraryVisibilityPrivate,+                                              reexportedModules = [],+                                              signatures = []}}],+   condTestSuites = [],+   genPackageFlags = [],+   gpdScannedVersion = Nothing,+   packageDescription = PackageDescription+                          {author = "",+                           benchmarks = [],+                           bugReports = "",+                           buildTypeRaw = Nothing,+                           category = "",+                           copyright = "",+                           customFieldsPD = [],+                           dataDir = ".",+                           dataFiles = [],+                           description = "",+                           executables = [],+                           extraDocFiles = [],+                           extraSrcFiles = [],+                           extraTmpFiles = [],+                           foreignLibs = [],+                           homepage = "",+                           library = Nothing,+                           licenseFiles = [],+                           licenseRaw = Left NONE,+                           maintainer = "",+                           package = PackageIdentifier+                                       {pkgName = PackageName "issue",+                                        pkgVersion = mkVersion [6083]},+                           pkgUrl = "",+                           setupBuildInfo = Nothing,+                           sourceRepos = [],+                           specVersion = CabalSpecV3_4,+                           stability = "",+                           subLibraries = [],+                           synopsis = "",+                           testSuites = [],+                           testedWith = []}}
+ tests/ParserTests/regressions/issue-6083-a.format view
@@ -0,0 +1,26 @@+issue-6083-a.cabal:19:31: colon specifier is experimental feature (issue #5660)+issue-6083-a.cabal:8:30: colon specifier is experimental feature (issue #5660)+cabal-version: 3.4+name:          issue+version:       6083++library+    default-language: Haskell2010+    build-depends:+        base,+        issue:sublib++library sublib+    default-language: Haskell2010++executable demo-a+    main-is:       Main.hs+    build-depends:+        issue,+        sublib++executable demo-b+    main-is:       Main.hs+    build-depends:+        issue,+        issue:sublib
+ tests/ParserTests/regressions/issue-6083-b.cabal view
@@ -0,0 +1,19 @@+cabal-version: 3.0+name: issue+version: 6083++library+  default-language: Haskell2010+  -- This should be parsed as the main lib+  build-depends: base, sublib++library sublib+  default-language: Haskell2010++executable demo-a+  main-is: Main.hs+  build-depends: issue, sublib++executable demo-b+  main-is: Main.hs+  build-depends: issue, issue:sublib
+ tests/ParserTests/regressions/issue-6083-b.expr view
@@ -0,0 +1,340 @@+GenericPackageDescription+  {condBenchmarks = [],+   condExecutables = [_×_+                        (UnqualComponentName "demo-a")+                        CondNode+                          {condTreeComponents = [],+                           condTreeConstraints = [Dependency+                                                    (PackageName "issue")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "issue")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    (NonEmptySet.fromNonEmpty+                                                       (NE.fromList+                                                          [LSubLibName+                                                             (UnqualComponentName "sublib")]))],+                           condTreeData = Executable+                                            {buildInfo = BuildInfo+                                                           {asmOptions = [],+                                                            asmSources = [],+                                                            autogenIncludes = [],+                                                            autogenModules = [],+                                                            buildToolDepends = [],+                                                            buildTools = [],+                                                            buildable = True,+                                                            cSources = [],+                                                            ccOptions = [],+                                                            cmmOptions = [],+                                                            cmmSources = [],+                                                            cppOptions = [],+                                                            customFieldsBI = [],+                                                            cxxOptions = [],+                                                            cxxSources = [],+                                                            defaultExtensions = [],+                                                            defaultLanguage = Nothing,+                                                            extraBundledLibs = [],+                                                            extraDynLibFlavours = [],+                                                            extraFrameworkDirs = [],+                                                            extraGHCiLibs = [],+                                                            extraLibDirs = [],+                                                            extraLibFlavours = [],+                                                            extraLibs = [],+                                                            frameworks = [],+                                                            hsSourceDirs = [],+                                                            includeDirs = [],+                                                            includes = [],+                                                            installIncludes = [],+                                                            jsSources = [],+                                                            ldOptions = [],+                                                            mixins = [],+                                                            oldExtensions = [],+                                                            options = PerCompilerFlavor [] [],+                                                            otherExtensions = [],+                                                            otherLanguages = [],+                                                            otherModules = [],+                                                            pkgconfigDepends = [],+                                                            profOptions = PerCompilerFlavor [] [],+                                                            sharedOptions = PerCompilerFlavor [] [],+                                                            staticOptions = PerCompilerFlavor [] [],+                                                            targetBuildDepends = [Dependency+                                                                                    (PackageName+                                                                                       "issue")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "issue")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    (NonEmptySet.fromNonEmpty+                                                                                       (NE.fromList+                                                                                          [LSubLibName+                                                                                             (UnqualComponentName+                                                                                                "sublib")]))],+                                                            virtualModules = []},+                                             exeName = UnqualComponentName "demo-a",+                                             exeScope = ExecutablePublic,+                                             modulePath = "Main.hs"}},+                      _×_+                        (UnqualComponentName "demo-b")+                        CondNode+                          {condTreeComponents = [],+                           condTreeConstraints = [Dependency+                                                    (PackageName "issue")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "issue")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    (NonEmptySet.fromNonEmpty+                                                       (NE.fromList+                                                          [LSubLibName+                                                             (UnqualComponentName "sublib")]))],+                           condTreeData = Executable+                                            {buildInfo = BuildInfo+                                                           {asmOptions = [],+                                                            asmSources = [],+                                                            autogenIncludes = [],+                                                            autogenModules = [],+                                                            buildToolDepends = [],+                                                            buildTools = [],+                                                            buildable = True,+                                                            cSources = [],+                                                            ccOptions = [],+                                                            cmmOptions = [],+                                                            cmmSources = [],+                                                            cppOptions = [],+                                                            customFieldsBI = [],+                                                            cxxOptions = [],+                                                            cxxSources = [],+                                                            defaultExtensions = [],+                                                            defaultLanguage = Nothing,+                                                            extraBundledLibs = [],+                                                            extraDynLibFlavours = [],+                                                            extraFrameworkDirs = [],+                                                            extraGHCiLibs = [],+                                                            extraLibDirs = [],+                                                            extraLibFlavours = [],+                                                            extraLibs = [],+                                                            frameworks = [],+                                                            hsSourceDirs = [],+                                                            includeDirs = [],+                                                            includes = [],+                                                            installIncludes = [],+                                                            jsSources = [],+                                                            ldOptions = [],+                                                            mixins = [],+                                                            oldExtensions = [],+                                                            options = PerCompilerFlavor [] [],+                                                            otherExtensions = [],+                                                            otherLanguages = [],+                                                            otherModules = [],+                                                            pkgconfigDepends = [],+                                                            profOptions = PerCompilerFlavor [] [],+                                                            sharedOptions = PerCompilerFlavor [] [],+                                                            staticOptions = PerCompilerFlavor [] [],+                                                            targetBuildDepends = [Dependency+                                                                                    (PackageName+                                                                                       "issue")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "issue")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    (NonEmptySet.fromNonEmpty+                                                                                       (NE.fromList+                                                                                          [LSubLibName+                                                                                             (UnqualComponentName+                                                                                                "sublib")]))],+                                                            virtualModules = []},+                                             exeName = UnqualComponentName "demo-b",+                                             exeScope = ExecutablePublic,+                                             modulePath = "Main.hs"}}],+   condForeignLibs = [],+   condLibrary = Just+                   CondNode+                     {condTreeComponents = [],+                      condTreeConstraints = [Dependency+                                               (PackageName "base")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "issue")+                                               (OrLaterVersion (mkVersion [0]))+                                               (NonEmptySet.fromNonEmpty+                                                  (NE.fromList+                                                     [LSubLibName+                                                        (UnqualComponentName "sublib")]))],+                      condTreeData = Library+                                       {exposedModules = [],+                                        libBuildInfo = BuildInfo+                                                         {asmOptions = [],+                                                          asmSources = [],+                                                          autogenIncludes = [],+                                                          autogenModules = [],+                                                          buildToolDepends = [],+                                                          buildTools = [],+                                                          buildable = True,+                                                          cSources = [],+                                                          ccOptions = [],+                                                          cmmOptions = [],+                                                          cmmSources = [],+                                                          cppOptions = [],+                                                          customFieldsBI = [],+                                                          cxxOptions = [],+                                                          cxxSources = [],+                                                          defaultExtensions = [],+                                                          defaultLanguage = Just Haskell2010,+                                                          extraBundledLibs = [],+                                                          extraDynLibFlavours = [],+                                                          extraFrameworkDirs = [],+                                                          extraGHCiLibs = [],+                                                          extraLibDirs = [],+                                                          extraLibFlavours = [],+                                                          extraLibs = [],+                                                          frameworks = [],+                                                          hsSourceDirs = [],+                                                          includeDirs = [],+                                                          includes = [],+                                                          installIncludes = [],+                                                          jsSources = [],+                                                          ldOptions = [],+                                                          mixins = [],+                                                          oldExtensions = [],+                                                          options = PerCompilerFlavor [] [],+                                                          otherExtensions = [],+                                                          otherLanguages = [],+                                                          otherModules = [],+                                                          pkgconfigDepends = [],+                                                          profOptions = PerCompilerFlavor [] [],+                                                          sharedOptions = PerCompilerFlavor [] [],+                                                          staticOptions = PerCompilerFlavor [] [],+                                                          targetBuildDepends = [Dependency+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "issue")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  (NonEmptySet.fromNonEmpty+                                                                                     (NE.fromList+                                                                                        [LSubLibName+                                                                                           (UnqualComponentName+                                                                                              "sublib")]))],+                                                          virtualModules = []},+                                        libExposed = True,+                                        libName = LMainLibName,+                                        libVisibility = LibraryVisibilityPublic,+                                        reexportedModules = [],+                                        signatures = []}},+   condSubLibraries = [_×_+                         (UnqualComponentName "sublib")+                         CondNode+                           {condTreeComponents = [],+                            condTreeConstraints = [],+                            condTreeData = Library+                                             {exposedModules = [],+                                              libBuildInfo = BuildInfo+                                                               {asmOptions = [],+                                                                asmSources = [],+                                                                autogenIncludes = [],+                                                                autogenModules = [],+                                                                buildToolDepends = [],+                                                                buildTools = [],+                                                                buildable = True,+                                                                cSources = [],+                                                                ccOptions = [],+                                                                cmmOptions = [],+                                                                cmmSources = [],+                                                                cppOptions = [],+                                                                customFieldsBI = [],+                                                                cxxOptions = [],+                                                                cxxSources = [],+                                                                defaultExtensions = [],+                                                                defaultLanguage = Just Haskell2010,+                                                                extraBundledLibs = [],+                                                                extraDynLibFlavours = [],+                                                                extraFrameworkDirs = [],+                                                                extraGHCiLibs = [],+                                                                extraLibDirs = [],+                                                                extraLibFlavours = [],+                                                                extraLibs = [],+                                                                frameworks = [],+                                                                hsSourceDirs = [],+                                                                includeDirs = [],+                                                                includes = [],+                                                                installIncludes = [],+                                                                jsSources = [],+                                                                ldOptions = [],+                                                                mixins = [],+                                                                oldExtensions = [],+                                                                options = PerCompilerFlavor [] [],+                                                                otherExtensions = [],+                                                                otherLanguages = [],+                                                                otherModules = [],+                                                                pkgconfigDepends = [],+                                                                profOptions = PerCompilerFlavor+                                                                                [] [],+                                                                sharedOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                staticOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                targetBuildDepends = [],+                                                                virtualModules = []},+                                              libExposed = True,+                                              libName = LSubLibName (UnqualComponentName "sublib"),+                                              libVisibility = LibraryVisibilityPrivate,+                                              reexportedModules = [],+                                              signatures = []}}],+   condTestSuites = [],+   genPackageFlags = [],+   gpdScannedVersion = Nothing,+   packageDescription = PackageDescription+                          {author = "",+                           benchmarks = [],+                           bugReports = "",+                           buildTypeRaw = Nothing,+                           category = "",+                           copyright = "",+                           customFieldsPD = [],+                           dataDir = ".",+                           dataFiles = [],+                           description = "",+                           executables = [],+                           extraDocFiles = [],+                           extraSrcFiles = [],+                           extraTmpFiles = [],+                           foreignLibs = [],+                           homepage = "",+                           library = Nothing,+                           licenseFiles = [],+                           licenseRaw = Left NONE,+                           maintainer = "",+                           package = PackageIdentifier+                                       {pkgName = PackageName "issue",+                                        pkgVersion = mkVersion [6083]},+                           pkgUrl = "",+                           setupBuildInfo = Nothing,+                           sourceRepos = [],+                           specVersion = CabalSpecV3_0,+                           stability = "",+                           subLibraries = [],+                           synopsis = "",+                           testSuites = [],+                           testedWith = []}}
+ tests/ParserTests/regressions/issue-6083-b.format view
@@ -0,0 +1,25 @@+issue-6083-b.cabal:19:31: colon specifier is experimental feature (issue #5660)+cabal-version: 3.0+name:          issue+version:       6083++library+    default-language: Haskell2010+    build-depends:+        base,+        sublib++library sublib+    default-language: Haskell2010++executable demo-a+    main-is:       Main.hs+    build-depends:+        issue,+        sublib++executable demo-b+    main-is:       Main.hs+    build-depends:+        issue,+        sublib
+ tests/ParserTests/regressions/issue-6083-c.cabal view
@@ -0,0 +1,11 @@+cabal-version: 2.4+name: issue+version: 6083++library+  default-language: Haskell2010+  -- This should be parsed as the main lib+  build-depends: base, sublib++library sublib+  default-language: Haskell2010
+ tests/ParserTests/regressions/issue-6083-c.expr view
@@ -0,0 +1,181 @@+GenericPackageDescription+  {condBenchmarks = [],+   condExecutables = [],+   condForeignLibs = [],+   condLibrary = Just+                   CondNode+                     {condTreeComponents = [],+                      condTreeConstraints = [Dependency+                                               (PackageName "base")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "issue")+                                               (OrLaterVersion (mkVersion [0]))+                                               (NonEmptySet.fromNonEmpty+                                                  (NE.fromList+                                                     [LSubLibName+                                                        (UnqualComponentName "sublib")]))],+                      condTreeData = Library+                                       {exposedModules = [],+                                        libBuildInfo = BuildInfo+                                                         {asmOptions = [],+                                                          asmSources = [],+                                                          autogenIncludes = [],+                                                          autogenModules = [],+                                                          buildToolDepends = [],+                                                          buildTools = [],+                                                          buildable = True,+                                                          cSources = [],+                                                          ccOptions = [],+                                                          cmmOptions = [],+                                                          cmmSources = [],+                                                          cppOptions = [],+                                                          customFieldsBI = [],+                                                          cxxOptions = [],+                                                          cxxSources = [],+                                                          defaultExtensions = [],+                                                          defaultLanguage = Just Haskell2010,+                                                          extraBundledLibs = [],+                                                          extraDynLibFlavours = [],+                                                          extraFrameworkDirs = [],+                                                          extraGHCiLibs = [],+                                                          extraLibDirs = [],+                                                          extraLibFlavours = [],+                                                          extraLibs = [],+                                                          frameworks = [],+                                                          hsSourceDirs = [],+                                                          includeDirs = [],+                                                          includes = [],+                                                          installIncludes = [],+                                                          jsSources = [],+                                                          ldOptions = [],+                                                          mixins = [],+                                                          oldExtensions = [],+                                                          options = PerCompilerFlavor [] [],+                                                          otherExtensions = [],+                                                          otherLanguages = [],+                                                          otherModules = [],+                                                          pkgconfigDepends = [],+                                                          profOptions = PerCompilerFlavor [] [],+                                                          sharedOptions = PerCompilerFlavor [] [],+                                                          staticOptions = PerCompilerFlavor [] [],+                                                          targetBuildDepends = [Dependency+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "issue")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  (NonEmptySet.fromNonEmpty+                                                                                     (NE.fromList+                                                                                        [LSubLibName+                                                                                           (UnqualComponentName+                                                                                              "sublib")]))],+                                                          virtualModules = []},+                                        libExposed = True,+                                        libName = LMainLibName,+                                        libVisibility = LibraryVisibilityPublic,+                                        reexportedModules = [],+                                        signatures = []}},+   condSubLibraries = [_×_+                         (UnqualComponentName "sublib")+                         CondNode+                           {condTreeComponents = [],+                            condTreeConstraints = [],+                            condTreeData = Library+                                             {exposedModules = [],+                                              libBuildInfo = BuildInfo+                                                               {asmOptions = [],+                                                                asmSources = [],+                                                                autogenIncludes = [],+                                                                autogenModules = [],+                                                                buildToolDepends = [],+                                                                buildTools = [],+                                                                buildable = True,+                                                                cSources = [],+                                                                ccOptions = [],+                                                                cmmOptions = [],+                                                                cmmSources = [],+                                                                cppOptions = [],+                                                                customFieldsBI = [],+                                                                cxxOptions = [],+                                                                cxxSources = [],+                                                                defaultExtensions = [],+                                                                defaultLanguage = Just Haskell2010,+                                                                extraBundledLibs = [],+                                                                extraDynLibFlavours = [],+                                                                extraFrameworkDirs = [],+                                                                extraGHCiLibs = [],+                                                                extraLibDirs = [],+                                                                extraLibFlavours = [],+                                                                extraLibs = [],+                                                                frameworks = [],+                                                                hsSourceDirs = [],+                                                                includeDirs = [],+                                                                includes = [],+                                                                installIncludes = [],+                                                                jsSources = [],+                                                                ldOptions = [],+                                                                mixins = [],+                                                                oldExtensions = [],+                                                                options = PerCompilerFlavor [] [],+                                                                otherExtensions = [],+                                                                otherLanguages = [],+                                                                otherModules = [],+                                                                pkgconfigDepends = [],+                                                                profOptions = PerCompilerFlavor+                                                                                [] [],+                                                                sharedOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                staticOptions = PerCompilerFlavor+                                                                                  [] [],+                                                                targetBuildDepends = [],+                                                                virtualModules = []},+                                              libExposed = True,+                                              libName = LSubLibName (UnqualComponentName "sublib"),+                                              libVisibility = LibraryVisibilityPrivate,+                                              reexportedModules = [],+                                              signatures = []}}],+   condTestSuites = [],+   genPackageFlags = [],+   gpdScannedVersion = Nothing,+   packageDescription = PackageDescription+                          {author = "",+                           benchmarks = [],+                           bugReports = "",+                           buildTypeRaw = Nothing,+                           category = "",+                           copyright = "",+                           customFieldsPD = [],+                           dataDir = ".",+                           dataFiles = [],+                           description = "",+                           executables = [],+                           extraDocFiles = [],+                           extraSrcFiles = [],+                           extraTmpFiles = [],+                           foreignLibs = [],+                           homepage = "",+                           library = Nothing,+                           licenseFiles = [],+                           licenseRaw = Left NONE,+                           maintainer = "",+                           package = PackageIdentifier+                                       {pkgName = PackageName "issue",+                                        pkgVersion = mkVersion [6083]},+                           pkgUrl = "",+                           setupBuildInfo = Nothing,+                           sourceRepos = [],+                           specVersion = CabalSpecV2_4,+                           stability = "",+                           subLibraries = [],+                           synopsis = "",+                           testSuites = [],+                           testedWith = []}}
+ tests/ParserTests/regressions/issue-6083-c.format view
@@ -0,0 +1,12 @@+cabal-version: 2.4+name:          issue+version:       6083++library+    default-language: Haskell2010+    build-depends:+        base,+        sublib++library sublib+    default-language: Haskell2010
tests/ParserTests/regressions/issue-6083-pkg-pkg.expr view
@@ -6,13 +6,13 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "freetype"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "freetype")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "freetype"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "freetype")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet],                       condTreeData = Library                                        {exposedModules = [],                                         libBuildInfo = BuildInfo@@ -58,15 +58,19 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "freetype"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "freetype")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "freetype"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                  (PackageName+                                                                                     "freetype")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -76,6 +80,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -98,12 +103,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "issue"`,-                                        pkgVersion = `mkVersion [6083]`},+                                       {pkgName = PackageName "issue",+                                        pkgVersion = mkVersion [6083]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "",
tests/ParserTests/regressions/issue-6083-pkg-pkg.format view
@@ -1,3 +1,4 @@+issue-6083-pkg-pkg.cabal:9:27: colon specifier is experimental feature (issue #5660) cabal-version: 3.0 name:          issue version:       6083@@ -5,5 +6,5 @@ library     default-language: Haskell2010     build-depends:-        freetype -any,-        freetype -any+        freetype,+        freetype
+ tests/ParserTests/regressions/issue-6288-a.cabal view
@@ -0,0 +1,14 @@+cabal-version: >=1.8+name:          issue+version:       6288+build-type:    Simple+synopsis:      default-language optionality+category:      Test+description:   Field is introduced in 1.10, defaulted in 3.4+license:       BSD3+license-file:  LICENSE+maintainer:    Cabal Contributors++library+  default-language: Haskell2010+  exposed-modules:  Foo
+ tests/ParserTests/regressions/issue-6288-a.check view
@@ -0,0 +1,1 @@+issue-6288-a.cabal:13:3: The field "default-language" is available only since the Cabal specification version 1.10. This field will be ignored.
+ tests/ParserTests/regressions/issue-6288-b.cabal view
@@ -0,0 +1,13 @@+cabal-version: >= 1.8+name:          issue+version:       6288+build-type:    Simple+synopsis:      default-language optionality+category:      Test+description:   Field is introduced in 1.10, defaulted in 3.4+license:       BSD3+license-file:  LICENSE+maintainer:    Cabal Contributors++library+  exposed-modules:  Foo
+ tests/ParserTests/regressions/issue-6288-b.check view
+ tests/ParserTests/regressions/issue-6288-c.cabal view
@@ -0,0 +1,14 @@+cabal-version: >= 1.10+name:          issue+version:       6288+build-type:    Simple+synopsis:      default-language optionality+category:      Test+description:   Field is introduced in 1.10, defaulted in 3.4+license:       BSD3+license-file:  LICENSE+maintainer:    Cabal Contributors++library+  default-language: Haskell2010+  exposed-modules:  Foo
+ tests/ParserTests/regressions/issue-6288-c.check view
+ tests/ParserTests/regressions/issue-6288-d.cabal view
@@ -0,0 +1,13 @@+cabal-version: >=1.10+name:          issue+version:       6288+build-type:    Simple+synopsis:      default-language optionality+category:      Test+description:   Field is introduced in 1.10, defaulted in 3.4+license:       BSD3+license-file:  LICENSE+maintainer:    Cabal Contributors++library+  exposed-modules:  Foo
+ tests/ParserTests/regressions/issue-6288-d.check view
@@ -0,0 +1,1 @@+Packages using 'cabal-version: >= 1.10' and before 'cabal-version: 3.4' must specify the 'default-language' field for each component (e.g. Haskell98 or Haskell2010). If a component uses different languages in different modules then list the other ones in the 'other-languages' field.
+ tests/ParserTests/regressions/issue-6288-e.cabal view
@@ -0,0 +1,13 @@+cabal-version: 3.4+name:          issue+version:       6288+synopsis:      default-language optionality+category:      Test+description:   Field is introduced in 1.10, defaulted in 3.4+license:       BSD-3-Clause+license-file:  LICENSE+maintainer:    Cabal Contributors++library+  default-language: Haskell2010+  exposed-modules:  Foo
+ tests/ParserTests/regressions/issue-6288-e.check view
+ tests/ParserTests/regressions/issue-6288-f.cabal view
@@ -0,0 +1,13 @@+cabal-version: 3.4+name:          issue+version:       6288+build-type:    Simple+synopsis:      default-language optionality+category:      Test+description:   Field is introduced in 1.10, defaulted in 3.4+license:       BSD-3-Clause+license-file:  LICENSE+maintainer:    Cabal Contributors++library+  exposed-modules:  Foo
+ tests/ParserTests/regressions/issue-6288-f.check view
tests/ParserTests/regressions/issue-774.check view
@@ -1,7 +1,7 @@+issue-774.cabal:13:22: Packages with 'cabal-version: 1.12' or later should specify a specific version of the Cabal spec of the form 'cabal-version: x.y'. Use 'cabal-version: 1.12'. No 'category' field. No 'maintainer' field. The 'license' field is missing or is NONE. 'ghc-options: -threaded' has no effect for libraries. It should only be used for executables. 'ghc-options: -rtsopts' has no effect for libraries. It should only be used for executables. 'ghc-options: -with-rtsopts' has no effect for libraries. It should only be used for executables.-Packages relying on Cabal 1.12 or later should specify a specific version of the Cabal spec of the form 'cabal-version: x.y'. Use 'cabal-version: 1.12'.
tests/ParserTests/regressions/issue-774.expr view
@@ -7,7 +7,7 @@                      {condTreeComponents = [],                       condTreeConstraints = [],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["Issue"]`],+                                       {exposedModules = [ModuleName "Issue"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -65,6 +65,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -94,12 +95,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "issue"`,-                                        pkgVersion = `mkVersion [744]`},+                                       {pkgName = PackageName "issue",+                                        pkgVersion = mkVersion [744]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [1,12]`),+                           specVersion = CabalSpecV1_12,                            stability = "",                            subLibraries = [],                            synopsis = "Package description parser interprets curly braces in the description field",
tests/ParserTests/regressions/issue-774.format view
@@ -1,4 +1,5 @@-cabal-version: >=1.12+issue-774.cabal:13:22: Packages with 'cabal-version: 1.12' or later should specify a specific version of the Cabal spec of the form 'cabal-version: x.y'. Use 'cabal-version: 1.12'.+cabal-version: 1.12 name:          issue version:       744 synopsis:
tests/ParserTests/regressions/jaeger-flamegraph.expr view
@@ -1,43 +1,44 @@ GenericPackageDescription   {condBenchmarks = [],    condExecutables = [_×_-                        `UnqualComponentName "jaeger-flamegraph"`+                        (UnqualComponentName "jaeger-flamegraph")                         CondNode                           {condTreeComponents = [],                            condTreeConstraints = [Dependency-                                                    `PackageName "base"`+                                                    (PackageName "base")                                                     (UnionVersionRanges-                                                       (MajorBoundVersion `mkVersion [4,11,1,0]`)-                                                       (MajorBoundVersion `mkVersion [4,12,0,0]`))-                                                    (Set.fromList [LMainLibName]),+                                                       (MajorBoundVersion (mkVersion [4, 11, 1, 0]))+                                                       (MajorBoundVersion+                                                          (mkVersion [4, 12, 0, 0])))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "jaeger-flamegraph"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "jaeger-flamegraph")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "bytestring"`-                                                    (MajorBoundVersion `mkVersion [0,10,8,2]`)-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "bytestring")+                                                    (MajorBoundVersion (mkVersion [0, 10, 8, 2]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "containers"`-                                                    (MajorBoundVersion `mkVersion [0,6,0,1]`)-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "containers")+                                                    (MajorBoundVersion (mkVersion [0, 6, 0, 1]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "extra"`-                                                    (MajorBoundVersion `mkVersion [1,6,13]`)-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "extra")+                                                    (MajorBoundVersion (mkVersion [1, 6, 13]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "aeson"`-                                                    (MajorBoundVersion `mkVersion [1,4,1,0]`)-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "aeson")+                                                    (MajorBoundVersion (mkVersion [1, 4, 1, 0]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "optparse-applicative"`-                                                    (MajorBoundVersion `mkVersion [0,14,3,0]`)-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "optparse-applicative")+                                                    (MajorBoundVersion (mkVersion [0, 14, 3, 0]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "text"`-                                                    (MajorBoundVersion `mkVersion [1,2,3,1]`)-                                                    (Set.fromList [LMainLibName])],+                                                    (PackageName "text")+                                                    (MajorBoundVersion (mkVersion [1, 2, 3, 1]))+                                                    mainLibSet],                            condTreeData = Executable                                             {buildInfo = BuildInfo                                                            {asmOptions = [],@@ -86,57 +87,90 @@                                                             sharedOptions = PerCompilerFlavor [] [],                                                             staticOptions = PerCompilerFlavor [] [],                                                             targetBuildDepends = [Dependency-                                                                                    `PackageName "base"`+                                                                                    (PackageName+                                                                                       "base")                                                                                     (UnionVersionRanges                                                                                        (MajorBoundVersion-                                                                                          `mkVersion [4,11,1,0]`)+                                                                                          (mkVersion+                                                                                             [4,+                                                                                              11,+                                                                                              1,+                                                                                              0]))                                                                                        (MajorBoundVersion-                                                                                          `mkVersion [4,12,0,0]`))-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                          (mkVersion+                                                                                             [4,+                                                                                              12,+                                                                                              0,+                                                                                              0])))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "jaeger-flamegraph"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                    (PackageName+                                                                                       "jaeger-flamegraph")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "bytestring"`+                                                                                    (PackageName+                                                                                       "bytestring")                                                                                     (MajorBoundVersion-                                                                                       `mkVersion [0,10,8,2]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                       (mkVersion+                                                                                          [0,+                                                                                           10,+                                                                                           8,+                                                                                           2]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "containers"`+                                                                                    (PackageName+                                                                                       "containers")                                                                                     (MajorBoundVersion-                                                                                       `mkVersion [0,6,0,1]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                       (mkVersion+                                                                                          [0,+                                                                                           6,+                                                                                           0,+                                                                                           1]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "extra"`+                                                                                    (PackageName+                                                                                       "extra")                                                                                     (MajorBoundVersion-                                                                                       `mkVersion [1,6,13]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                       (mkVersion+                                                                                          [1,+                                                                                           6,+                                                                                           13]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "aeson"`+                                                                                    (PackageName+                                                                                       "aeson")                                                                                     (MajorBoundVersion-                                                                                       `mkVersion [1,4,1,0]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                       (mkVersion+                                                                                          [1,+                                                                                           4,+                                                                                           1,+                                                                                           0]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "optparse-applicative"`+                                                                                    (PackageName+                                                                                       "optparse-applicative")                                                                                     (MajorBoundVersion-                                                                                       `mkVersion [0,14,3,0]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                       (mkVersion+                                                                                          [0,+                                                                                           14,+                                                                                           3,+                                                                                           0]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "text"`+                                                                                    (PackageName+                                                                                       "text")                                                                                     (MajorBoundVersion-                                                                                       `mkVersion [1,2,3,1]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName])],+                                                                                       (mkVersion+                                                                                          [1,+                                                                                           2,+                                                                                           3,+                                                                                           1]))+                                                                                    mainLibSet],                                                             virtualModules = []},-                                             exeName = `UnqualComponentName "jaeger-flamegraph"`,+                                             exeName = UnqualComponentName "jaeger-flamegraph",                                              exeScope = ExecutablePublic,                                              modulePath = "Main.hs"}}],    condForeignLibs = [],@@ -144,17 +178,17 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`+                                               (PackageName "base")                                                (UnionVersionRanges-                                                  (MajorBoundVersion `mkVersion [4,11,1,0]`)-                                                  (MajorBoundVersion `mkVersion [4,12,0,0]`))-                                               (Set.fromList [LMainLibName]),+                                                  (MajorBoundVersion (mkVersion [4, 11, 1, 0]))+                                                  (MajorBoundVersion (mkVersion [4, 12, 0, 0])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "QuickCheck"`-                                               (MajorBoundVersion `mkVersion [2,12,6,1]`)-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "QuickCheck")+                                               (MajorBoundVersion (mkVersion [2, 12, 6, 1]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["Interval"]`],+                                       {exposedModules = [ModuleName "Interval"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -201,20 +235,32 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (UnionVersionRanges                                                                                      (MajorBoundVersion-                                                                                        `mkVersion [4,11,1,0]`)+                                                                                        (mkVersion+                                                                                           [4,+                                                                                            11,+                                                                                            1,+                                                                                            0]))                                                                                      (MajorBoundVersion-                                                                                        `mkVersion [4,12,0,0]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [4,+                                                                                            12,+                                                                                            0,+                                                                                            0])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "QuickCheck"`+                                                                                  (PackageName+                                                                                     "QuickCheck")                                                                                   (MajorBoundVersion-                                                                                     `mkVersion [2,12,6,1]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                     (mkVersion+                                                                                        [2,+                                                                                         12,+                                                                                         6,+                                                                                         1]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -223,38 +269,47 @@                                         signatures = []}},    condSubLibraries = [],    condTestSuites = [_×_-                       `UnqualComponentName "tests"`+                       (UnqualComponentName "tests")                        CondNode                          {condTreeComponents = [],                           condTreeConstraints = [Dependency-                                                   `PackageName "base"`+                                                   (PackageName "base")                                                    (UnionVersionRanges-                                                      (MajorBoundVersion `mkVersion [4,11,1,0]`)-                                                      (MajorBoundVersion `mkVersion [4,12,0,0]`))-                                                   (Set.fromList [LMainLibName]),+                                                      (MajorBoundVersion (mkVersion [4, 11, 1, 0]))+                                                      (MajorBoundVersion (mkVersion [4, 12, 0, 0])))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "jaeger-flamegraph"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "jaeger-flamegraph")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "tasty"`-                                                   (MajorBoundVersion `mkVersion [1,1,0,4]`)-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "tasty")+                                                   (MajorBoundVersion (mkVersion [1, 1, 0, 4]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "tasty-hspec"`-                                                   (MajorBoundVersion `mkVersion [1,1,5]`)-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "tasty-hspec")+                                                   (MajorBoundVersion (mkVersion [1, 1, 5]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "tasty-quickcheck"`-                                                   (MajorBoundVersion `mkVersion [0,10]`)-                                                   (Set.fromList [LMainLibName])],+                                                   (PackageName "tasty-quickcheck")+                                                   (MajorBoundVersion (mkVersion [0, 10]))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],                                                                asmSources = [],                                                                autogenIncludes = [],                                                                autogenModules = [],-                                                               buildToolDepends = [`ExeDependency (PackageName "tasty-discover") (UnqualComponentName "tasty-discover") (MajorBoundVersion (mkVersion [4,2,1]))`],+                                                               buildToolDepends = [ExeDependency+                                                                                     (PackageName+                                                                                        "tasty-discover")+                                                                                     (UnqualComponentName+                                                                                        "tasty-discover")+                                                                                     (MajorBoundVersion+                                                                                        (mkVersion+                                                                                           [4,+                                                                                            2,+                                                                                            1]))],                                                                buildTools = [],                                                                buildable = True,                                                                cSources = [],@@ -290,7 +345,8 @@                                                                            [],                                                                otherExtensions = [],                                                                otherLanguages = [],-                                                               otherModules = [`ModuleName ["IntervalTest"]`],+                                                               otherModules = [ModuleName+                                                                                 "IntervalTest"],                                                                pkgconfigDepends = [],                                                                profOptions = PerCompilerFlavor                                                                                [] [],@@ -299,42 +355,62 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "base"`+                                                                                       (PackageName+                                                                                          "base")                                                                                        (UnionVersionRanges                                                                                           (MajorBoundVersion-                                                                                             `mkVersion [4,11,1,0]`)+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 11,+                                                                                                 1,+                                                                                                 0]))                                                                                           (MajorBoundVersion-                                                                                             `mkVersion [4,12,0,0]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                             (mkVersion+                                                                                                [4,+                                                                                                 12,+                                                                                                 0,+                                                                                                 0])))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "jaeger-flamegraph"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                       (PackageName+                                                                                          "jaeger-flamegraph")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "tasty"`+                                                                                       (PackageName+                                                                                          "tasty")                                                                                        (MajorBoundVersion-                                                                                          `mkVersion [1,1,0,4]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                          (mkVersion+                                                                                             [1,+                                                                                              1,+                                                                                              0,+                                                                                              4]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "tasty-hspec"`+                                                                                       (PackageName+                                                                                          "tasty-hspec")                                                                                        (MajorBoundVersion-                                                                                          `mkVersion [1,1,5]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                          (mkVersion+                                                                                             [1,+                                                                                              1,+                                                                                              5]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "tasty-quickcheck"`+                                                                                       (PackageName+                                                                                          "tasty-quickcheck")                                                                                        (MajorBoundVersion-                                                                                          `mkVersion [0,10]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                          (mkVersion+                                                                                             [0,+                                                                                              10]))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "Driver.hs",-                                            testName = `UnqualComponentName ""`}}],+                                                              (mkVersion [1, 0]) "Driver.hs",+                                            testName = UnqualComponentName ""}}],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "Sam Halliday",                            benchmarks = [],@@ -370,8 +446,8 @@                                           (License (ELicense (ELicenseId BSD_3_Clause) Nothing)),                            maintainer = "Sam Halliday",                            package = PackageIdentifier-                                       {pkgName = `PackageName "jaeger-flamegraph"`,-                                        pkgVersion = `mkVersion [1,0,0]`},+                                       {pkgName = PackageName "jaeger-flamegraph",+                                        pkgVersion = mkVersion [1, 0, 0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [SourceRepo@@ -382,8 +458,8 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Left `mkVersion [2,2]`,+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV2_2,                            stability = "",                            subLibraries = [],                            synopsis = "Generate flamegraphs from Jaeger .json dumps.",@@ -391,5 +467,5 @@                            testedWith = [_×_                                            GHC                                            (UnionVersionRanges-                                              (MajorBoundVersion `mkVersion [8,4,4]`)-                                              (MajorBoundVersion `mkVersion [8,6,2]`))]}}+                                              (MajorBoundVersion (mkVersion [8, 4, 4]))+                                              (MajorBoundVersion (mkVersion [8, 6, 2])))]}}
tests/ParserTests/regressions/jaeger-flamegraph.format view
@@ -46,7 +46,7 @@     ghc-options:      -Wall -Werror=missing-home-modules -threaded     build-depends:         base ^>=4.11.1.0 || ^>=4.12.0.0,-        jaeger-flamegraph -any,+        jaeger-flamegraph,         bytestring ^>=0.10.8.2,         containers ^>=0.6.0.1,         extra ^>=1.6.13,@@ -64,7 +64,7 @@     ghc-options:        -Wall -Werror=missing-home-modules -threaded     build-depends:         base ^>=4.11.1.0 || ^>=4.12.0.0,-        jaeger-flamegraph -any,+        jaeger-flamegraph,         tasty ^>=1.1.0.4,         tasty-hspec ^>=1.1.5,         tasty-quickcheck ^>=0.10
tests/ParserTests/regressions/leading-comma-2.expr view
@@ -6,38 +6,38 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "base")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "containers"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "containers")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "deepseq"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "deepseq")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "transformers"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "transformers")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "filepath"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "filepath")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "directory"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "directory")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["LeadingComma"]`,-                                                          `ModuleName ["LeadingComma2"]`,-                                                          `ModuleName ["TrailingComma"]`,-                                                          `ModuleName ["TrailingComma"]`,-                                                          `ModuleName ["Comma"]`,-                                                          `ModuleName ["InBetween"]`,-                                                          `ModuleName ["NoCommas"]`,-                                                          `ModuleName ["NoCommas"]`],+                                       {exposedModules = [ModuleName "LeadingComma",+                                                          ModuleName "LeadingComma2",+                                                          ModuleName "TrailingComma",+                                                          ModuleName "TrailingComma",+                                                          ModuleName "Comma",+                                                          ModuleName "InBetween",+                                                          ModuleName "NoCommas",+                                                          ModuleName "NoCommas"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -81,35 +81,47 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "containers"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "containers")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "deepseq"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "deepseq")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "transformers"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "transformers")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "filepath"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "filepath")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "directory"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                  (PackageName+                                                                                     "directory")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -119,6 +131,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -141,12 +154,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "leading-comma"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "leading-comma",+                                        pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "leading comma, trailing comma, or ordinary",
tests/ParserTests/regressions/leading-comma-2.format view
@@ -17,9 +17,9 @@      default-language: Haskell2010     build-depends:-        base -any,-        containers -any,-        deepseq -any,-        transformers -any,-        filepath -any,-        directory -any+        base,+        containers,+        deepseq,+        transformers,+        filepath,+        directory
tests/ParserTests/regressions/leading-comma.expr view
@@ -6,31 +6,31 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "base")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "containers"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "containers")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "deepseq"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "deepseq")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "transformers"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "transformers")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "filepath"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "filepath")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "directory"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "directory")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["LeadingComma"]`],+                                       {exposedModules = [ModuleName "LeadingComma"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -74,35 +74,47 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "containers"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "containers")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "deepseq"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "deepseq")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "transformers"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "transformers")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "filepath"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "filepath")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "directory"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                  (PackageName+                                                                                     "directory")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -112,6 +124,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -134,12 +147,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "leading-comma"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "leading-comma",+                                        pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [2,2]`,+                           specVersion = CabalSpecV2_2,                            stability = "",                            subLibraries = [],                            synopsis = "leading comma, trailing comma, or ordinary",
tests/ParserTests/regressions/leading-comma.format view
@@ -8,9 +8,9 @@     exposed-modules:  LeadingComma     default-language: Haskell2010     build-depends:-        base -any,-        containers -any,-        deepseq -any,-        transformers -any,-        filepath -any,-        directory -any+        base,+        containers,+        deepseq,+        transformers,+        filepath,+        directory
tests/ParserTests/regressions/libpq1.expr view
@@ -10,14 +10,20 @@                                                condBranchIfTrue = CondNode                                                                     {condTreeComponents = [],                                                                      condTreeConstraints = [Dependency-                                                                                              `PackageName "unix"`+                                                                                              (PackageName+                                                                                                 "unix")                                                                                               (IntersectVersionRanges                                                                                                  (OrLaterVersion-                                                                                                    `mkVersion [2,4,2,0]`)+                                                                                                    (mkVersion+                                                                                                       [2,+                                                                                                        4,+                                                                                                        2,+                                                                                                        0]))                                                                                                  (EarlierVersion-                                                                                                    `mkVersion [2,8]`))-                                                                                              (Set.fromList-                                                                                                 [LMainLibName])],+                                                                                                    (mkVersion+                                                                                                       [2,+                                                                                                        8])))+                                                                                              mainLibSet],                                                                      condTreeData = Library                                                                                       {exposedModules = [],                                                                                        libBuildInfo = BuildInfo@@ -71,14 +77,20 @@                                                                                                                            []                                                                                                                            [],                                                                                                          targetBuildDepends = [Dependency-                                                                                                                                 `PackageName "unix"`+                                                                                                                                 (PackageName+                                                                                                                                    "unix")                                                                                                                                  (IntersectVersionRanges                                                                                                                                     (OrLaterVersion-                                                                                                                                       `mkVersion [2,4,2,0]`)+                                                                                                                                       (mkVersion+                                                                                                                                          [2,+                                                                                                                                           4,+                                                                                                                                           2,+                                                                                                                                           0]))                                                                                                                                     (EarlierVersion-                                                                                                                                       `mkVersion [2,8]`))-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName])],+                                                                                                                                       (mkVersion+                                                                                                                                          [2,+                                                                                                                                           8])))+                                                                                                                                 mainLibSet],                                                                                                          virtualModules = []},                                                                                        libExposed = True,                                                                                        libName = LMainLibName,@@ -91,14 +103,20 @@                                                condBranchIfTrue = CondNode                                                                     {condTreeComponents = [],                                                                      condTreeConstraints = [Dependency-                                                                                              `PackageName "Win32"`+                                                                                              (PackageName+                                                                                                 "Win32")                                                                                               (IntersectVersionRanges                                                                                                  (OrLaterVersion-                                                                                                    `mkVersion [2,2,0,2]`)+                                                                                                    (mkVersion+                                                                                                       [2,+                                                                                                        2,+                                                                                                        0,+                                                                                                        2]))                                                                                                  (EarlierVersion-                                                                                                    `mkVersion [2,7]`))-                                                                                              (Set.fromList-                                                                                                 [LMainLibName])],+                                                                                                    (mkVersion+                                                                                                       [2,+                                                                                                        7])))+                                                                                              mainLibSet],                                                                      condTreeData = Library                                                                                       {exposedModules = [],                                                                                        libBuildInfo = BuildInfo@@ -152,14 +170,20 @@                                                                                                                            []                                                                                                                            [],                                                                                                          targetBuildDepends = [Dependency-                                                                                                                                 `PackageName "Win32"`+                                                                                                                                 (PackageName+                                                                                                                                    "Win32")                                                                                                                                  (IntersectVersionRanges                                                                                                                                     (OrLaterVersion-                                                                                                                                       `mkVersion [2,2,0,2]`)+                                                                                                                                       (mkVersion+                                                                                                                                          [2,+                                                                                                                                           2,+                                                                                                                                           0,+                                                                                                                                           2]))                                                                                                                                     (EarlierVersion-                                                                                                                                       `mkVersion [2,7]`))-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName])],+                                                                                                                                       (mkVersion+                                                                                                                                          [2,+                                                                                                                                           7])))+                                                                                                                                 mainLibSet],                                                                                                          virtualModules = []},                                                                                        libExposed = True,                                                                                        libName = LMainLibName,@@ -167,7 +191,7 @@                                                                                        reexportedModules = [],                                                                                        signatures = []}}},                                             CondBranch-                                              {condBranchCondition = `Var (Flag (FlagName "use-pkg-config"))`,+                                              {condBranchCondition = `Var (PackageFlag (FlagName "use-pkg-config"))`,                                                condBranchIfFalse = Just                                                                      CondNode                                                                        {condTreeComponents = [CondBranch@@ -467,7 +491,16 @@                                                                                                          otherExtensions = [],                                                                                                          otherLanguages = [],                                                                                                          otherModules = [],-                                                                                                         pkgconfigDepends = [`PkgconfigDependency (PkgconfigName "libpq") (PcIntersectVersionRanges (PcUnionVersionRanges (PcThisVersion (PkgconfigVersion "9")) (PcLaterVersion (PkgconfigVersion "9"))) (PcEarlierVersion (PkgconfigVersion "10")))`],+                                                                                                         pkgconfigDepends = [PkgconfigDependency+                                                                                                                               (PkgconfigName+                                                                                                                                  "libpq")+                                                                                                                               (PcIntersectVersionRanges+                                                                                                                                  (PcOrLaterVersion+                                                                                                                                     (PkgconfigVersion+                                                                                                                                        "9"))+                                                                                                                                  (PcEarlierVersion+                                                                                                                                     (PkgconfigVersion+                                                                                                                                        "10")))],                                                                                                          profOptions = PerCompilerFlavor                                                                                                                          []                                                                                                                          [],@@ -485,27 +518,31 @@                                                                                        reexportedModules = [],                                                                                        signatures = []}}}],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`+                                               (PackageName "base")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [4,3]`)-                                                  (EarlierVersion `mkVersion [4,13]`))-                                               (Set.fromList [LMainLibName]),+                                                  (OrLaterVersion (mkVersion [4, 3]))+                                                  (EarlierVersion (mkVersion [4, 13])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "bytestring"`+                                               (PackageName "bytestring")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [0,9,1,0]`)-                                                  (EarlierVersion `mkVersion [0,11]`))-                                               (Set.fromList [LMainLibName])],+                                                  (OrLaterVersion (mkVersion [0, 9, 1, 0]))+                                                  (EarlierVersion (mkVersion [0, 11])))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["Database","PostgreSQL","LibPQ"]`,-                                                          `ModuleName ["Database","PostgreSQL","LibPQ","Internal"]`],+                                       {exposedModules = [ModuleName "Database.PostgreSQL.LibPQ",+                                                          ModuleName+                                                            "Database.PostgreSQL.LibPQ.Internal"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],                                                           autogenIncludes = [],                                                           autogenModules = [],                                                           buildToolDepends = [],-                                                          buildTools = [`LegacyExeDependency "hsc2hs" AnyVersion`],+                                                          buildTools = [LegacyExeDependency+                                                                          "hsc2hs"+                                                                          (OrLaterVersion+                                                                             (mkVersion [0]))],                                                           buildable = True,                                                           cSources = ["cbits/noticehandlers.c"],                                                           ccOptions = [],@@ -542,23 +579,32 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [4,3]`)+                                                                                        (mkVersion+                                                                                           [4, 3]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [4,13]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [4,+                                                                                            13])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "bytestring"`+                                                                                  (PackageName+                                                                                     "bytestring")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [0,9,1,0]`)+                                                                                        (mkVersion+                                                                                           [0,+                                                                                            9,+                                                                                            1,+                                                                                            0]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [0,11]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                        (mkVersion+                                                                                           [0,+                                                                                            11])))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -567,11 +613,12 @@                                         signatures = []}},    condSubLibraries = [],    condTestSuites = [],-   genPackageFlags = [MkFlag+   genPackageFlags = [MkPackageFlag                         {flagDefault = False,                          flagDescription = "",                          flagManual = True,-                         flagName = `FlagName "use-pkg-config"`}],+                         flagName = FlagName "use-pkg-config"}],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "Grant Monroe, Leon P Smith, Joey Adams",                            benchmarks = [],@@ -601,41 +648,41 @@                            licenseRaw = Right BSD3,                            maintainer = "Oleg Grenrus <oleg.grenrus@iki.fi>",                            package = PackageIdentifier-                                       {pkgName = `PackageName "postgresql-libpq"`,-                                        pkgVersion = `mkVersion [0,9,4,2]`},+                                       {pkgName = PackageName "postgresql-libpq",+                                        pkgVersion = mkVersion [0, 9, 4, 2]},                            pkgUrl = "",                            setupBuildInfo = Just                                               SetupBuildInfo                                                 {defaultSetupDepends = False,                                                  setupDepends = [Dependency-                                                                   `PackageName "base"`+                                                                   (PackageName "base")                                                                    (IntersectVersionRanges                                                                       (OrLaterVersion-                                                                         `mkVersion [4,3]`)+                                                                         (mkVersion [4, 3]))                                                                       (EarlierVersion-                                                                         `mkVersion [5]`))-                                                                   (Set.fromList [LMainLibName]),+                                                                         (mkVersion [5])))+                                                                   mainLibSet,                                                                  Dependency-                                                                   `PackageName "Cabal"`+                                                                   (PackageName "Cabal")                                                                    (IntersectVersionRanges                                                                       (OrLaterVersion-                                                                         `mkVersion [1,10]`)+                                                                         (mkVersion [1, 10]))                                                                       (EarlierVersion-                                                                         `mkVersion [2,5]`))-                                                                   (Set.fromList [LMainLibName])]},+                                                                         (mkVersion [2, 5])))+                                                                   mainLibSet]},                            sourceRepos = [],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [1,8]`),+                           specVersion = CabalSpecV1_8,                            stability = "",                            subLibraries = [],                            synopsis = "low-level binding to libpq",                            testSuites = [],-                           testedWith = [_×_ GHC (ThisVersion `mkVersion [7,0,4]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,2,2]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,4,2]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,6,3]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,8,4]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,10,3]`),-                                         _×_ GHC (ThisVersion `mkVersion [8,0,2]`),-                                         _×_ GHC (ThisVersion `mkVersion [8,2,2]`),-                                         _×_ GHC (ThisVersion `mkVersion [8,4,3]`),-                                         _×_ GHC (ThisVersion `mkVersion [8,6,1]`)]}}+                           testedWith = [_×_ GHC (ThisVersion (mkVersion [7, 0, 4])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 2, 2])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 4, 2])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 6, 3])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 8, 4])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 10, 3])),+                                         _×_ GHC (ThisVersion (mkVersion [8, 0, 2])),+                                         _×_ GHC (ThisVersion (mkVersion [8, 2, 2])),+                                         _×_ GHC (ThisVersion (mkVersion [8, 4, 3])),+                                         _×_ GHC (ThisVersion (mkVersion [8, 6, 1]))]}}
tests/ParserTests/regressions/libpq1.format view
@@ -43,7 +43,7 @@         Database.PostgreSQL.LibPQ         Database.PostgreSQL.LibPQ.Internal -    build-tools:     hsc2hs -any+    build-tools:     hsc2hs >=0     c-sources:       cbits/noticehandlers.c     hs-source-dirs:  src     include-dirs:    cbits@@ -59,7 +59,7 @@         build-depends: Win32 >=2.2.0.2 && <2.7      if flag(use-pkg-config)-        pkgconfig-depends: libpq (==9 || >9) && <10+        pkgconfig-depends: libpq >=9 && <10      else         if os(windows)
tests/ParserTests/regressions/libpq2.expr view
@@ -10,14 +10,20 @@                                                condBranchIfTrue = CondNode                                                                     {condTreeComponents = [],                                                                      condTreeConstraints = [Dependency-                                                                                              `PackageName "unix"`+                                                                                              (PackageName+                                                                                                 "unix")                                                                                               (IntersectVersionRanges                                                                                                  (OrLaterVersion-                                                                                                    `mkVersion [2,4,2,0]`)+                                                                                                    (mkVersion+                                                                                                       [2,+                                                                                                        4,+                                                                                                        2,+                                                                                                        0]))                                                                                                  (EarlierVersion-                                                                                                    `mkVersion [2,8]`))-                                                                                              (Set.fromList-                                                                                                 [LMainLibName])],+                                                                                                    (mkVersion+                                                                                                       [2,+                                                                                                        8])))+                                                                                              mainLibSet],                                                                      condTreeData = Library                                                                                       {exposedModules = [],                                                                                        libBuildInfo = BuildInfo@@ -71,14 +77,20 @@                                                                                                                            []                                                                                                                            [],                                                                                                          targetBuildDepends = [Dependency-                                                                                                                                 `PackageName "unix"`+                                                                                                                                 (PackageName+                                                                                                                                    "unix")                                                                                                                                  (IntersectVersionRanges                                                                                                                                     (OrLaterVersion-                                                                                                                                       `mkVersion [2,4,2,0]`)+                                                                                                                                       (mkVersion+                                                                                                                                          [2,+                                                                                                                                           4,+                                                                                                                                           2,+                                                                                                                                           0]))                                                                                                                                     (EarlierVersion-                                                                                                                                       `mkVersion [2,8]`))-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName])],+                                                                                                                                       (mkVersion+                                                                                                                                          [2,+                                                                                                                                           8])))+                                                                                                                                 mainLibSet],                                                                                                          virtualModules = []},                                                                                        libExposed = True,                                                                                        libName = LMainLibName,@@ -91,14 +103,20 @@                                                condBranchIfTrue = CondNode                                                                     {condTreeComponents = [],                                                                      condTreeConstraints = [Dependency-                                                                                              `PackageName "Win32"`+                                                                                              (PackageName+                                                                                                 "Win32")                                                                                               (IntersectVersionRanges                                                                                                  (OrLaterVersion-                                                                                                    `mkVersion [2,2,0,2]`)+                                                                                                    (mkVersion+                                                                                                       [2,+                                                                                                        2,+                                                                                                        0,+                                                                                                        2]))                                                                                                  (EarlierVersion-                                                                                                    `mkVersion [2,7]`))-                                                                                              (Set.fromList-                                                                                                 [LMainLibName])],+                                                                                                    (mkVersion+                                                                                                       [2,+                                                                                                        7])))+                                                                                              mainLibSet],                                                                      condTreeData = Library                                                                                       {exposedModules = [],                                                                                        libBuildInfo = BuildInfo@@ -152,14 +170,20 @@                                                                                                                            []                                                                                                                            [],                                                                                                          targetBuildDepends = [Dependency-                                                                                                                                 `PackageName "Win32"`+                                                                                                                                 (PackageName+                                                                                                                                    "Win32")                                                                                                                                  (IntersectVersionRanges                                                                                                                                     (OrLaterVersion-                                                                                                                                       `mkVersion [2,2,0,2]`)+                                                                                                                                       (mkVersion+                                                                                                                                          [2,+                                                                                                                                           2,+                                                                                                                                           0,+                                                                                                                                           2]))                                                                                                                                     (EarlierVersion-                                                                                                                                       `mkVersion [2,7]`))-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName])],+                                                                                                                                       (mkVersion+                                                                                                                                          [2,+                                                                                                                                           7])))+                                                                                                                                 mainLibSet],                                                                                                          virtualModules = []},                                                                                        libExposed = True,                                                                                        libName = LMainLibName,@@ -167,7 +191,7 @@                                                                                        reexportedModules = [],                                                                                        signatures = []}}},                                             CondBranch-                                              {condBranchCondition = `Var (Flag (FlagName "use-pkg-config"))`,+                                              {condBranchCondition = `Var (PackageFlag (FlagName "use-pkg-config"))`,                                                condBranchIfFalse = Just                                                                      CondNode                                                                        {condTreeComponents = [CondBranch@@ -467,7 +491,12 @@                                                                                                          otherExtensions = [],                                                                                                          otherLanguages = [],                                                                                                          otherModules = [],-                                                                                                         pkgconfigDepends = [`PkgconfigDependency (PkgconfigName "libpq") (PcOrLaterVersion (PkgconfigVersion "9.3h"))`],+                                                                                                         pkgconfigDepends = [PkgconfigDependency+                                                                                                                               (PkgconfigName+                                                                                                                                  "libpq")+                                                                                                                               (PcOrLaterVersion+                                                                                                                                  (PkgconfigVersion+                                                                                                                                     "9.3h"))],                                                                                                          profOptions = PerCompilerFlavor                                                                                                                          []                                                                                                                          [],@@ -485,26 +514,34 @@                                                                                        reexportedModules = [],                                                                                        signatures = []}}}],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`+                                               (PackageName "base")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [4,3]`)-                                                  (EarlierVersion `mkVersion [4,13]`))-                                               (Set.fromList [LMainLibName]),+                                                  (OrLaterVersion (mkVersion [4, 3]))+                                                  (EarlierVersion (mkVersion [4, 13])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "bytestring"`+                                               (PackageName "bytestring")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [0,9,1,0]`)-                                                  (EarlierVersion `mkVersion [0,11]`))-                                               (Set.fromList [LMainLibName])],+                                                  (OrLaterVersion (mkVersion [0, 9, 1, 0]))+                                                  (EarlierVersion (mkVersion [0, 11])))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["Database","PostgreSQL","LibPQ"]`,-                                                          `ModuleName ["Database","PostgreSQL","LibPQ","Internal"]`],+                                       {exposedModules = [ModuleName "Database.PostgreSQL.LibPQ",+                                                          ModuleName+                                                            "Database.PostgreSQL.LibPQ.Internal"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],                                                           autogenIncludes = [],                                                           autogenModules = [],-                                                          buildToolDepends = [`ExeDependency (PackageName "hsc2hs") (UnqualComponentName "hsc2hs") AnyVersion`],+                                                          buildToolDepends = [ExeDependency+                                                                                (PackageName+                                                                                   "hsc2hs")+                                                                                (UnqualComponentName+                                                                                   "hsc2hs")+                                                                                (OrLaterVersion+                                                                                   (mkVersion+                                                                                      [0]))],                                                           buildTools = [],                                                           buildable = True,                                                           cSources = ["cbits/noticehandlers.c"],@@ -542,23 +579,32 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [4,3]`)+                                                                                        (mkVersion+                                                                                           [4, 3]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [4,13]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [4,+                                                                                            13])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "bytestring"`+                                                                                  (PackageName+                                                                                     "bytestring")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [0,9,1,0]`)+                                                                                        (mkVersion+                                                                                           [0,+                                                                                            9,+                                                                                            1,+                                                                                            0]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [0,11]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                        (mkVersion+                                                                                           [0,+                                                                                            11])))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -567,11 +613,12 @@                                         signatures = []}},    condSubLibraries = [],    condTestSuites = [],-   genPackageFlags = [MkFlag+   genPackageFlags = [MkPackageFlag                         {flagDefault = False,                          flagDescription = "",                          flagManual = True,-                         flagName = `FlagName "use-pkg-config"`}],+                         flagName = FlagName "use-pkg-config"}],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "Grant Monroe, Leon P Smith, Joey Adams",                            benchmarks = [],@@ -602,41 +649,41 @@                                           (License (ELicense (ELicenseId BSD_3_Clause) Nothing)),                            maintainer = "Oleg Grenrus <oleg.grenrus@iki.fi>",                            package = PackageIdentifier-                                       {pkgName = `PackageName "postgresql-libpq"`,-                                        pkgVersion = `mkVersion [0,9,4,2]`},+                                       {pkgName = PackageName "postgresql-libpq",+                                        pkgVersion = mkVersion [0, 9, 4, 2]},                            pkgUrl = "",                            setupBuildInfo = Just                                               SetupBuildInfo                                                 {defaultSetupDepends = False,                                                  setupDepends = [Dependency-                                                                   `PackageName "base"`+                                                                   (PackageName "base")                                                                    (IntersectVersionRanges                                                                       (OrLaterVersion-                                                                         `mkVersion [4,3]`)+                                                                         (mkVersion [4, 3]))                                                                       (EarlierVersion-                                                                         `mkVersion [5]`))-                                                                   (Set.fromList [LMainLibName]),+                                                                         (mkVersion [5])))+                                                                   mainLibSet,                                                                  Dependency-                                                                   `PackageName "Cabal"`+                                                                   (PackageName "Cabal")                                                                    (IntersectVersionRanges                                                                       (OrLaterVersion-                                                                         `mkVersion [1,10]`)+                                                                         (mkVersion [1, 10]))                                                                       (EarlierVersion-                                                                         `mkVersion [2,5]`))-                                                                   (Set.fromList [LMainLibName])]},+                                                                         (mkVersion [2, 5])))+                                                                   mainLibSet]},                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "low-level binding to libpq",                            testSuites = [],-                           testedWith = [_×_ GHC (ThisVersion `mkVersion [7,0,4]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,2,2]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,4,2]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,6,3]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,8,4]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,10,3]`),-                                         _×_ GHC (ThisVersion `mkVersion [8,0,2]`),-                                         _×_ GHC (ThisVersion `mkVersion [8,2,2]`),-                                         _×_ GHC (ThisVersion `mkVersion [8,4,3]`),-                                         _×_ GHC (ThisVersion `mkVersion [8,6,1]`)]}}+                           testedWith = [_×_ GHC (ThisVersion (mkVersion [7, 0, 4])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 2, 2])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 4, 2])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 6, 3])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 8, 4])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 10, 3])),+                                         _×_ GHC (ThisVersion (mkVersion [8, 0, 2])),+                                         _×_ GHC (ThisVersion (mkVersion [8, 2, 2])),+                                         _×_ GHC (ThisVersion (mkVersion [8, 4, 3])),+                                         _×_ GHC (ThisVersion (mkVersion [8, 6, 1]))]}}
tests/ParserTests/regressions/libpq2.format view
@@ -43,7 +43,7 @@         Database.PostgreSQL.LibPQ         Database.PostgreSQL.LibPQ.Internal -    build-tool-depends: hsc2hs:hsc2hs -any+    build-tool-depends: hsc2hs:hsc2hs     c-sources:          cbits/noticehandlers.c     hs-source-dirs:     src     include-dirs:       cbits
tests/ParserTests/regressions/mixin-1.expr view
@@ -1,21 +1,21 @@ GenericPackageDescription   {condBenchmarks = [],    condExecutables = [_×_-                        `UnqualComponentName "str-example"`+                        (UnqualComponentName "str-example")                         CondNode                           {condTreeComponents = [],                            condTreeConstraints = [Dependency-                                                    `PackageName "base"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "base")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "str-string"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "str-string")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "str-bytestring"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName])],+                                                    (PackageName "str-bytestring")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet],                            condTreeData = Executable                                             {buildInfo = BuildInfo                                                            {asmOptions = [],@@ -49,8 +49,30 @@                                                             installIncludes = [],                                                             jsSources = [],                                                             ldOptions = [],-                                                            mixins = [`Mixin {mixinPackageName = PackageName "str-string", mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = ModuleRenaming [(ModuleName ["Str"],ModuleName ["Str","String"])], includeRequiresRn = DefaultRenaming}}`,-                                                                      `Mixin {mixinPackageName = PackageName "str-bytestring", mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = ModuleRenaming [(ModuleName ["Str"],ModuleName ["Str","ByteString"])], includeRequiresRn = DefaultRenaming}}`],+                                                            mixins = [Mixin+                                                                        {mixinIncludeRenaming = IncludeRenaming+                                                                                                  {includeProvidesRn = ModuleRenaming+                                                                                                                         [_×_+                                                                                                                            (ModuleName+                                                                                                                               "Str")+                                                                                                                            (ModuleName+                                                                                                                               "Str.String")],+                                                                                                   includeRequiresRn = DefaultRenaming},+                                                                         mixinLibraryName = LMainLibName,+                                                                         mixinPackageName = PackageName+                                                                                              "str-string"},+                                                                      Mixin+                                                                        {mixinIncludeRenaming = IncludeRenaming+                                                                                                  {includeProvidesRn = ModuleRenaming+                                                                                                                         [_×_+                                                                                                                            (ModuleName+                                                                                                                               "Str")+                                                                                                                            (ModuleName+                                                                                                                               "Str.ByteString")],+                                                                                                   includeRequiresRn = DefaultRenaming},+                                                                         mixinLibraryName = LMainLibName,+                                                                         mixinPackageName = PackageName+                                                                                              "str-bytestring"}],                                                             oldExtensions = [],                                                             options = PerCompilerFlavor [] [],                                                             otherExtensions = [],@@ -61,22 +83,28 @@                                                             sharedOptions = PerCompilerFlavor [] [],                                                             staticOptions = PerCompilerFlavor [] [],                                                             targetBuildDepends = [Dependency-                                                                                    `PackageName "base"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                    (PackageName+                                                                                       "base")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "str-string"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                    (PackageName+                                                                                       "str-string")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "str-bytestring"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName])],+                                                                                    (PackageName+                                                                                       "str-bytestring")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet],                                                             virtualModules = []},-                                             exeName = `UnqualComponentName "str-example"`,+                                             exeName = UnqualComponentName "str-example",                                              exeScope = ExecutablePublic,                                              modulePath = "Main.hs"}}],    condForeignLibs = [],@@ -84,6 +112,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -106,12 +135,11 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "mixin"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "mixin", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [2,0]`,+                           specVersion = CabalSpecV2_0,                            stability = "",                            subLibraries = [],                            synopsis = "",
tests/ParserTests/regressions/mixin-1.format view
@@ -7,9 +7,9 @@     main-is:        Main.hs     hs-source-dirs: str-example     build-depends:-        base -any,-        str-string -any,-        str-bytestring -any+        base,+        str-string,+        str-bytestring      mixins:         str-string (Str as Str.String),
tests/ParserTests/regressions/mixin-2.expr view
@@ -1,21 +1,21 @@ GenericPackageDescription   {condBenchmarks = [],    condExecutables = [_×_-                        `UnqualComponentName "str-example"`+                        (UnqualComponentName "str-example")                         CondNode                           {condTreeComponents = [],                            condTreeConstraints = [Dependency-                                                    `PackageName "base"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "base")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "str-string"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "str-string")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "str-bytestring"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName])],+                                                    (PackageName "str-bytestring")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet],                            condTreeData = Executable                                             {buildInfo = BuildInfo                                                            {asmOptions = [],@@ -49,8 +49,30 @@                                                             installIncludes = [],                                                             jsSources = [],                                                             ldOptions = [],-                                                            mixins = [`Mixin {mixinPackageName = PackageName "str-string", mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = ModuleRenaming [(ModuleName ["Str"],ModuleName ["Str","String"])], includeRequiresRn = DefaultRenaming}}`,-                                                                      `Mixin {mixinPackageName = PackageName "str-bytestring", mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = ModuleRenaming [(ModuleName ["Str"],ModuleName ["Str","ByteString"])], includeRequiresRn = DefaultRenaming}}`],+                                                            mixins = [Mixin+                                                                        {mixinIncludeRenaming = IncludeRenaming+                                                                                                  {includeProvidesRn = ModuleRenaming+                                                                                                                         [_×_+                                                                                                                            (ModuleName+                                                                                                                               "Str")+                                                                                                                            (ModuleName+                                                                                                                               "Str.String")],+                                                                                                   includeRequiresRn = DefaultRenaming},+                                                                         mixinLibraryName = LMainLibName,+                                                                         mixinPackageName = PackageName+                                                                                              "str-string"},+                                                                      Mixin+                                                                        {mixinIncludeRenaming = IncludeRenaming+                                                                                                  {includeProvidesRn = ModuleRenaming+                                                                                                                         [_×_+                                                                                                                            (ModuleName+                                                                                                                               "Str")+                                                                                                                            (ModuleName+                                                                                                                               "Str.ByteString")],+                                                                                                   includeRequiresRn = DefaultRenaming},+                                                                         mixinLibraryName = LMainLibName,+                                                                         mixinPackageName = PackageName+                                                                                              "str-bytestring"}],                                                             oldExtensions = [],                                                             options = PerCompilerFlavor [] [],                                                             otherExtensions = [],@@ -61,22 +83,28 @@                                                             sharedOptions = PerCompilerFlavor [] [],                                                             staticOptions = PerCompilerFlavor [] [],                                                             targetBuildDepends = [Dependency-                                                                                    `PackageName "base"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                    (PackageName+                                                                                       "base")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "str-string"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                    (PackageName+                                                                                       "str-string")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "str-bytestring"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName])],+                                                                                    (PackageName+                                                                                       "str-bytestring")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet],                                                             virtualModules = []},-                                             exeName = `UnqualComponentName "str-example"`,+                                             exeName = UnqualComponentName "str-example",                                              exeScope = ExecutablePublic,                                              modulePath = "Main.hs"}}],    condForeignLibs = [],@@ -84,6 +112,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -106,12 +135,11 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "mixin"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "mixin", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "",
tests/ParserTests/regressions/mixin-2.format view
@@ -6,9 +6,9 @@     main-is:        Main.hs     hs-source-dirs: str-example     build-depends:-        base -any,-        str-string -any,-        str-bytestring -any+        base,+        str-string,+        str-bytestring      mixins:         str-string (Str as Str.String),
tests/ParserTests/regressions/mixin-3.expr view
@@ -1,21 +1,21 @@ GenericPackageDescription   {condBenchmarks = [],    condExecutables = [_×_-                        `UnqualComponentName "str-example"`+                        (UnqualComponentName "str-example")                         CondNode                           {condTreeComponents = [],                            condTreeConstraints = [Dependency-                                                    `PackageName "base"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "base")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "str-string"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "str-string")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "str-bytestring"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName])],+                                                    (PackageName "str-bytestring")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet],                            condTreeData = Executable                                             {buildInfo = BuildInfo                                                            {asmOptions = [],@@ -49,7 +49,15 @@                                                             installIncludes = [],                                                             jsSources = [],                                                             ldOptions = [],-                                                            mixins = [`Mixin {mixinPackageName = PackageName "str", mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = HidingRenaming [ModuleName ["Foo"]], includeRequiresRn = DefaultRenaming}}`],+                                                            mixins = [Mixin+                                                                        {mixinIncludeRenaming = IncludeRenaming+                                                                                                  {includeProvidesRn = HidingRenaming+                                                                                                                         [ModuleName+                                                                                                                            "Foo"],+                                                                                                   includeRequiresRn = DefaultRenaming},+                                                                         mixinLibraryName = LMainLibName,+                                                                         mixinPackageName = PackageName+                                                                                              "str"}],                                                             oldExtensions = [],                                                             options = PerCompilerFlavor [] [],                                                             otherExtensions = [],@@ -60,22 +68,28 @@                                                             sharedOptions = PerCompilerFlavor [] [],                                                             staticOptions = PerCompilerFlavor [] [],                                                             targetBuildDepends = [Dependency-                                                                                    `PackageName "base"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                    (PackageName+                                                                                       "base")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "str-string"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                    (PackageName+                                                                                       "str-string")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "str-bytestring"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName])],+                                                                                    (PackageName+                                                                                       "str-bytestring")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet],                                                             virtualModules = []},-                                             exeName = `UnqualComponentName "str-example"`,+                                             exeName = UnqualComponentName "str-example",                                              exeScope = ExecutablePublic,                                              modulePath = "Main.hs"}}],    condForeignLibs = [],@@ -83,6 +97,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -105,12 +120,11 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "mixin"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "mixin", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "",
tests/ParserTests/regressions/mixin-3.format view
@@ -6,8 +6,8 @@     main-is:        Main.hs     hs-source-dirs: str-example     build-depends:-        base -any,-        str-string -any,-        str-bytestring -any+        base,+        str-string,+        str-bytestring      mixins:         str hiding (Foo)
+ tests/ParserTests/regressions/monad-param.cabal view
@@ -0,0 +1,25 @@+name:           monad-param+category:	Control+version:        0.0.1+synopsis:       Parameterized monads+description:	Implements parameterized monads by overloading the monad sugar with more liberal types.+stability:      alpha+author:         Edward Kmett <ekmett@gmail.com>+maintainer:     Edward Kmett <ekmett@gmail.com>+copyright:      Copyright (C) 2006-2007, Edward Kmett+homepage:       http://comonad.com/haskell/monad-param/dist/doc/html/Control-Monad-Parameterized.html+package-url:    http://comonad.com/haskell/monad-param+build-depends:  base -any, mtl -any, stm -any+cabal-version:  -any+license:        BSD3+license-file:	LICENSE+buildable:      True+extensions:     MultiParamTypeClasses+                FunctionalDependencies+		OverlappingInstances+		UndecidableInstances+                EmptyDataDecls+                NoImplicitPrelude+exposed-modules: Control.Monad.Parameterized+ghc-options:    -funbox-strict-fields -threaded -fasm+hs-source-dirs: src
+ tests/ParserTests/regressions/monad-param.expr view
@@ -0,0 +1,142 @@+GenericPackageDescription+  {condBenchmarks = [],+   condExecutables = [],+   condForeignLibs = [],+   condLibrary = Just+                   CondNode+                     {condTreeComponents = [],+                      condTreeConstraints = [Dependency+                                               (PackageName "base")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "mtl")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "stm")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet],+                      condTreeData = Library+                                       {exposedModules = [ModuleName "Control.Monad.Parameterized"],+                                        libBuildInfo = BuildInfo+                                                         {asmOptions = [],+                                                          asmSources = [],+                                                          autogenIncludes = [],+                                                          autogenModules = [],+                                                          buildToolDepends = [],+                                                          buildTools = [],+                                                          buildable = True,+                                                          cSources = [],+                                                          ccOptions = [],+                                                          cmmOptions = [],+                                                          cmmSources = [],+                                                          cppOptions = [],+                                                          customFieldsBI = [],+                                                          cxxOptions = [],+                                                          cxxSources = [],+                                                          defaultExtensions = [],+                                                          defaultLanguage = Nothing,+                                                          extraBundledLibs = [],+                                                          extraDynLibFlavours = [],+                                                          extraFrameworkDirs = [],+                                                          extraGHCiLibs = [],+                                                          extraLibDirs = [],+                                                          extraLibFlavours = [],+                                                          extraLibs = [],+                                                          frameworks = [],+                                                          hsSourceDirs = ["src"],+                                                          includeDirs = [],+                                                          includes = [],+                                                          installIncludes = [],+                                                          jsSources = [],+                                                          ldOptions = [],+                                                          mixins = [],+                                                          oldExtensions = [EnableExtension+                                                                             MultiParamTypeClasses,+                                                                           EnableExtension+                                                                             FunctionalDependencies,+                                                                           EnableExtension+                                                                             OverlappingInstances,+                                                                           EnableExtension+                                                                             UndecidableInstances,+                                                                           EnableExtension+                                                                             EmptyDataDecls,+                                                                           DisableExtension+                                                                             ImplicitPrelude],+                                                          options = PerCompilerFlavor+                                                                      ["-funbox-strict-fields",+                                                                       "-threaded",+                                                                       "-fasm"]+                                                                      [],+                                                          otherExtensions = [],+                                                          otherLanguages = [],+                                                          otherModules = [],+                                                          pkgconfigDepends = [],+                                                          profOptions = PerCompilerFlavor [] [],+                                                          sharedOptions = PerCompilerFlavor [] [],+                                                          staticOptions = PerCompilerFlavor [] [],+                                                          targetBuildDepends = [Dependency+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "mtl")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "stm")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],+                                                          virtualModules = []},+                                        libExposed = True,+                                        libName = LMainLibName,+                                        libVisibility = LibraryVisibilityPublic,+                                        reexportedModules = [],+                                        signatures = []}},+   condSubLibraries = [],+   condTestSuites = [],+   genPackageFlags = [],+   gpdScannedVersion = Nothing,+   packageDescription = PackageDescription+                          {author = "Edward Kmett <ekmett@gmail.com>",+                           benchmarks = [],+                           bugReports = "",+                           buildTypeRaw = Nothing,+                           category = "Control",+                           copyright = "Copyright (C) 2006-2007, Edward Kmett",+                           customFieldsPD = [],+                           dataDir = ".",+                           dataFiles = [],+                           description = "Implements parameterized monads by overloading the monad sugar with more liberal types.",+                           executables = [],+                           extraDocFiles = [],+                           extraSrcFiles = [],+                           extraTmpFiles = [],+                           foreignLibs = [],+                           homepage = "http://comonad.com/haskell/monad-param/dist/doc/html/Control-Monad-Parameterized.html",+                           library = Nothing,+                           licenseFiles = ["LICENSE"],+                           licenseRaw = Right BSD3,+                           maintainer = "Edward Kmett <ekmett@gmail.com>",+                           package = PackageIdentifier+                                       {pkgName = PackageName "monad-param",+                                        pkgVersion = mkVersion [0, 0, 1]},+                           pkgUrl = "http://comonad.com/haskell/monad-param",+                           setupBuildInfo = Nothing,+                           sourceRepos = [],+                           specVersion = CabalSpecV1_0,+                           stability = "alpha",+                           subLibraries = [],+                           synopsis = "Parameterized monads",+                           testSuites = [],+                           testedWith = []}}
+ tests/ParserTests/regressions/monad-param.format view
@@ -0,0 +1,31 @@+monad-param.cabal:19:3: Tabs used as indentation at 19:3, 20:3+name:         monad-param+version:      0.0.1+license:      BSD3+license-file: LICENSE+copyright:    Copyright (C) 2006-2007, Edward Kmett+maintainer:   Edward Kmett <ekmett@gmail.com>+author:       Edward Kmett <ekmett@gmail.com>+stability:    alpha+homepage:+    http://comonad.com/haskell/monad-param/dist/doc/html/Control-Monad-Parameterized.html++package-url:  http://comonad.com/haskell/monad-param+synopsis:     Parameterized monads+description:+    Implements parameterized monads by overloading the monad sugar with more liberal types.++category:     Control++library+    exposed-modules: Control.Monad.Parameterized+    hs-source-dirs:  src+    extensions:+        MultiParamTypeClasses FunctionalDependencies OverlappingInstances+        UndecidableInstances EmptyDataDecls NoImplicitPrelude++    ghc-options:     -funbox-strict-fields -threaded -fasm+    build-depends:+        base,+        mtl,+        stm
tests/ParserTests/regressions/multiple-libs-2.check view
@@ -3,4 +3,4 @@ No 'maintainer' field. No 'description' field. The 'license' field is missing or is NONE.-The dependency 'build-depends: base' does not specify an upper bound on the version number. Each major release of the 'base' package changes the API in various ways and most packages will need some changes to compile with it. The recommended practise is to specify an upper bound on the version of the 'base' package. This ensures your package will continue to build when a new major version of the 'base' package is released. If you are not sure what upper bound to use then use the next  major version. For example if you have tested your package with 'base' version 4.5 and 4.6 then use 'build-depends: base >= 4.5 && < 4.7'.+The dependency 'build-depends: base' does not specify an upper bound on the version number. Each major release of the 'base' package changes the API in various ways and most packages will need some changes to compile with it. The recommended practice is to specify an upper bound on the version of the 'base' package. This ensures your package will continue to build when a new major version of the 'base' package is released. If you are not sure what upper bound to use then use the next  major version. For example if you have tested your package with 'base' version 4.5 and 4.6 then use 'build-depends: base >= 4.5 && < 4.7'.
tests/ParserTests/regressions/multiple-libs-2.expr view
@@ -6,11 +6,11 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "base")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["ElseIf"]`],+                                       {exposedModules = [ModuleName "ElseIf"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -54,10 +54,12 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -65,15 +67,15 @@                                         reexportedModules = [],                                         signatures = []}},    condSubLibraries = [_×_-                         `UnqualComponentName "public"`+                         (UnqualComponentName "public")                          CondNode                            {condTreeComponents = [],                             condTreeConstraints = [Dependency-                                                     `PackageName "base"`-                                                     AnyVersion-                                                     (Set.fromList [LMainLibName])],+                                                     (PackageName "base")+                                                     (OrLaterVersion (mkVersion [0]))+                                                     mainLibSet],                             condTreeData = Library-                                             {exposedModules = [`ModuleName ["ElseIf2"]`],+                                             {exposedModules = [ModuleName "ElseIf2"],                                               libBuildInfo = BuildInfo                                                                {asmOptions = [],                                                                 asmSources = [],@@ -120,18 +122,21 @@                                                                 staticOptions = PerCompilerFlavor                                                                                   [] [],                                                                 targetBuildDepends = [Dependency-                                                                                        `PackageName "base"`-                                                                                        AnyVersion-                                                                                        (Set.fromList-                                                                                           [LMainLibName])],+                                                                                        (PackageName+                                                                                           "base")+                                                                                        (OrLaterVersion+                                                                                           (mkVersion+                                                                                              [0]))+                                                                                        mainLibSet],                                                                 virtualModules = []},                                               libExposed = True,-                                              libName = LSubLibName `UnqualComponentName "public"`,+                                              libName = LSubLibName (UnqualComponentName "public"),                                               libVisibility = LibraryVisibilityPrivate,                                               reexportedModules = [],                                               signatures = []}}],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -154,12 +159,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "multiple-libs"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "multiple-libs",+                                        pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [2,0]`,+                           specVersion = CabalSpecV2_0,                            stability = "",                            subLibraries = [],                            synopsis = "visible flag only since 3.0",
tests/ParserTests/regressions/multiple-libs-2.format view
@@ -8,9 +8,9 @@ library     exposed-modules:  ElseIf     default-language: Haskell2010-    build-depends:    base -any+    build-depends:    base  library public     exposed-modules:  ElseIf2     default-language: Haskell2010-    build-depends:    base -any+    build-depends:    base
tests/ParserTests/regressions/noVersion.expr view
@@ -6,13 +6,11 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "bad-package"`-                                               (IntersectVersionRanges-                                                  (LaterVersion `mkVersion [1]`)-                                                  (EarlierVersion `mkVersion [1]`))-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "bad-package")+                                               (EarlierVersion (mkVersion [0]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["ElseIf"]`],+                                       {exposedModules = [ModuleName "ElseIf"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -56,14 +54,12 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "bad-package"`-                                                                                  (IntersectVersionRanges-                                                                                     (LaterVersion-                                                                                        `mkVersion [1]`)-                                                                                     (EarlierVersion-                                                                                        `mkVersion [1]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                  (PackageName+                                                                                     "bad-package")+                                                                                  (EarlierVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -73,6 +69,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -95,12 +92,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "noVersion"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "noVersion",+                                        pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [1,22]`,+                           specVersion = CabalSpecV1_22,                            stability = "",                            subLibraries = [],                            synopsis = "-none in build-depends",
tests/ParserTests/regressions/noVersion.format view
@@ -7,4 +7,4 @@ library     exposed-modules:  ElseIf     default-language: Haskell2010-    build-depends:    bad-package >1 && <1+    build-depends:    bad-package <0
tests/ParserTests/regressions/nothing-unicode.expr view
@@ -5,7 +5,7 @@    condLibrary = Just                    CondNode                      {condTreeComponents = [CondBranch-                                              {condBranchCondition = `CNot (Var (Flag (FlagName "\\28961")))`,+                                              {condBranchCondition = `CNot (Var (PackageFlag (FlagName "\\28961")))`,                                                condBranchIfFalse = Nothing,                                                condBranchIfTrue = CondNode                                                                     {condTreeComponents = [],@@ -71,7 +71,7 @@                                                                                        signatures = []}}}],                       condTreeConstraints = [],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["\\937"]`],+                                       {exposedModules = [ModuleName "\937"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -123,11 +123,12 @@                                         signatures = []}},    condSubLibraries = [],    condTestSuites = [],-   genPackageFlags = [MkFlag+   genPackageFlags = [MkPackageFlag                         {flagDefault = True,                          flagDescription = "\28961",                          flagManual = False,-                         flagName = `FlagName "\\28961"`}],+                         flagName = FlagName "\28961"}],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -150,8 +151,7 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "\\28961"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "\28961", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [SourceRepo@@ -161,8 +161,8 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [1,10]`),+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV1_10,                            stability = "",                            subLibraries = [],                            synopsis = "The canonical non-package \28961",
+ tests/ParserTests/regressions/public-multilib-1.cabal view
@@ -0,0 +1,17 @@+cabal-version: 3.0+name:          public-multilib1+version:       0+synopsis:      public-multilibs are not polished enough for Hackage+category:      Tests+license:       MIT++library+  default-language: Haskell2010+  build-depends:    base ^>=4.14, internal+  exposed-modules:  Foo++library internal+  default-language: Haskell2010+  build-depends:    base ^>=4.14+  visibility:       public+  exposed-modules:  Bar
+ tests/ParserTests/regressions/public-multilib-1.check view
@@ -0,0 +1,3 @@+public-multilib-1.cabal:16:27: visibility is experimental feature (issue #5660)+No 'maintainer' field.+No 'description' field.
+ tests/ParserTests/regressions/public-multilib-2.cabal view
@@ -0,0 +1,14 @@+cabal-version: 3.0+name:          public-multilib1+version:       0+synopsis:      public-multilibs are not polished enough for Hackage+category:      Tests+license:       MIT++library+  default-language: Haskell2010+  build-depends:+    , base     ^>=4.14+    , somelib:internal++  exposed-modules:  Foo
+ tests/ParserTests/regressions/public-multilib-2.check view
@@ -0,0 +1,3 @@+public-multilib-2.cabal:12:15: colon specifier is experimental feature (issue #5660)+No 'maintainer' field.+No 'description' field.
tests/ParserTests/regressions/shake.cabal view
@@ -1,4 +1,4 @@-cabal-version:      >= 1.18+cabal-version:      1.18 build-type:         Simple name:               shake version:            0.15.11@@ -80,7 +80,10 @@  library     default-language: Haskell2010-    hs-source-dirs:   src+    -- dot directory on own row+    hs-source-dirs:+        .+        src     build-depends:         base >= 4.5,         directory,
tests/ParserTests/regressions/shake.expr view
@@ -1,2145 +1,2506 @@ GenericPackageDescription   {condBenchmarks = [],    condExecutables = [_×_-                        `UnqualComponentName "shake"`-                        CondNode-                          {condTreeComponents = [CondBranch-                                                   {condBranchCondition = `Var (Impl GHC (OrLaterVersion (mkVersion [7,8])))`,-                                                    condBranchIfFalse = Nothing,-                                                    condBranchIfTrue = CondNode-                                                                         {condTreeComponents = [],-                                                                          condTreeConstraints = [],-                                                                          condTreeData = Executable-                                                                                           {buildInfo = BuildInfo-                                                                                                          {asmOptions = [],-                                                                                                           asmSources = [],-                                                                                                           autogenIncludes = [],-                                                                                                           autogenModules = [],-                                                                                                           buildToolDepends = [],-                                                                                                           buildTools = [],-                                                                                                           buildable = True,-                                                                                                           cSources = [],-                                                                                                           ccOptions = [],-                                                                                                           cmmOptions = [],-                                                                                                           cmmSources = [],-                                                                                                           cppOptions = [],-                                                                                                           customFieldsBI = [],-                                                                                                           cxxOptions = [],-                                                                                                           cxxSources = [],-                                                                                                           defaultExtensions = [],-                                                                                                           defaultLanguage = Nothing,-                                                                                                           extraBundledLibs = [],-                                                                                                           extraDynLibFlavours = [],-                                                                                                           extraFrameworkDirs = [],-                                                                                                           extraGHCiLibs = [],-                                                                                                           extraLibDirs = [],-                                                                                                           extraLibFlavours = [],-                                                                                                           extraLibs = [],-                                                                                                           frameworks = [],-                                                                                                           hsSourceDirs = [],-                                                                                                           includeDirs = [],-                                                                                                           includes = [],-                                                                                                           installIncludes = [],-                                                                                                           jsSources = [],-                                                                                                           ldOptions = [],-                                                                                                           mixins = [],-                                                                                                           oldExtensions = [],-                                                                                                           options = PerCompilerFlavor-                                                                                                                       ["-threaded",-                                                                                                                        "-with-rtsopts=-I0 -qg -qb"]-                                                                                                                       [],-                                                                                                           otherExtensions = [],-                                                                                                           otherLanguages = [],-                                                                                                           otherModules = [],-                                                                                                           pkgconfigDepends = [],-                                                                                                           profOptions = PerCompilerFlavor-                                                                                                                           []-                                                                                                                           [],-                                                                                                           sharedOptions = PerCompilerFlavor-                                                                                                                             []-                                                                                                                             [],-                                                                                                           staticOptions = PerCompilerFlavor-                                                                                                                             []-                                                                                                                             [],-                                                                                                           targetBuildDepends = [],-                                                                                                           virtualModules = []},-                                                                                            exeName = `UnqualComponentName "shake"`,-                                                                                            exeScope = ExecutablePublic,-                                                                                            modulePath = ""}}},-                                                 CondBranch-                                                   {condBranchCondition = `Var (Flag (FlagName "portable"))`,-                                                    condBranchIfFalse = Just-                                                                          CondNode-                                                                            {condTreeComponents = [CondBranch-                                                                                                     {condBranchCondition = `CNot (Var (OS Windows))`,-                                                                                                      condBranchIfFalse = Nothing,-                                                                                                      condBranchIfTrue = CondNode-                                                                                                                           {condTreeComponents = [],-                                                                                                                            condTreeConstraints = [Dependency-                                                                                                                                                     `PackageName "unix"`-                                                                                                                                                     (OrLaterVersion-                                                                                                                                                        `mkVersion [2,5,1]`)-                                                                                                                                                     (Set.fromList-                                                                                                                                                        [LMainLibName])],-                                                                                                                            condTreeData = Executable-                                                                                                                                             {buildInfo = BuildInfo-                                                                                                                                                            {asmOptions = [],-                                                                                                                                                             asmSources = [],-                                                                                                                                                             autogenIncludes = [],-                                                                                                                                                             autogenModules = [],-                                                                                                                                                             buildToolDepends = [],-                                                                                                                                                             buildTools = [],-                                                                                                                                                             buildable = True,-                                                                                                                                                             cSources = [],-                                                                                                                                                             ccOptions = [],-                                                                                                                                                             cmmOptions = [],-                                                                                                                                                             cmmSources = [],-                                                                                                                                                             cppOptions = [],-                                                                                                                                                             customFieldsBI = [],-                                                                                                                                                             cxxOptions = [],-                                                                                                                                                             cxxSources = [],-                                                                                                                                                             defaultExtensions = [],-                                                                                                                                                             defaultLanguage = Nothing,-                                                                                                                                                             extraBundledLibs = [],-                                                                                                                                                             extraDynLibFlavours = [],-                                                                                                                                                             extraFrameworkDirs = [],-                                                                                                                                                             extraGHCiLibs = [],-                                                                                                                                                             extraLibDirs = [],-                                                                                                                                                             extraLibFlavours = [],-                                                                                                                                                             extraLibs = [],-                                                                                                                                                             frameworks = [],-                                                                                                                                                             hsSourceDirs = [],-                                                                                                                                                             includeDirs = [],-                                                                                                                                                             includes = [],-                                                                                                                                                             installIncludes = [],-                                                                                                                                                             jsSources = [],-                                                                                                                                                             ldOptions = [],-                                                                                                                                                             mixins = [],-                                                                                                                                                             oldExtensions = [],-                                                                                                                                                             options = PerCompilerFlavor-                                                                                                                                                                         []-                                                                                                                                                                         [],-                                                                                                                                                             otherExtensions = [],-                                                                                                                                                             otherLanguages = [],-                                                                                                                                                             otherModules = [],-                                                                                                                                                             pkgconfigDepends = [],-                                                                                                                                                             profOptions = PerCompilerFlavor-                                                                                                                                                                             []-                                                                                                                                                                             [],-                                                                                                                                                             sharedOptions = PerCompilerFlavor-                                                                                                                                                                               []-                                                                                                                                                                               [],-                                                                                                                                                             staticOptions = PerCompilerFlavor-                                                                                                                                                                               []-                                                                                                                                                                               [],-                                                                                                                                                             targetBuildDepends = [Dependency-                                                                                                                                                                                     `PackageName "unix"`-                                                                                                                                                                                     (OrLaterVersion-                                                                                                                                                                                        `mkVersion [2,5,1]`)-                                                                                                                                                                                     (Set.fromList-                                                                                                                                                                                        [LMainLibName])],-                                                                                                                                                             virtualModules = []},-                                                                                                                                              exeName = `UnqualComponentName "shake"`,-                                                                                                                                              exeScope = ExecutablePublic,-                                                                                                                                              modulePath = ""}}}],-                                                                             condTreeConstraints = [],-                                                                             condTreeData = Executable-                                                                                              {buildInfo = BuildInfo-                                                                                                             {asmOptions = [],-                                                                                                              asmSources = [],-                                                                                                              autogenIncludes = [],-                                                                                                              autogenModules = [],-                                                                                                              buildToolDepends = [],-                                                                                                              buildTools = [],-                                                                                                              buildable = True,-                                                                                                              cSources = [],-                                                                                                              ccOptions = [],-                                                                                                              cmmOptions = [],-                                                                                                              cmmSources = [],-                                                                                                              cppOptions = [],-                                                                                                              customFieldsBI = [],-                                                                                                              cxxOptions = [],-                                                                                                              cxxSources = [],-                                                                                                              defaultExtensions = [],-                                                                                                              defaultLanguage = Nothing,-                                                                                                              extraBundledLibs = [],-                                                                                                              extraDynLibFlavours = [],-                                                                                                              extraFrameworkDirs = [],-                                                                                                              extraGHCiLibs = [],-                                                                                                              extraLibDirs = [],-                                                                                                              extraLibFlavours = [],-                                                                                                              extraLibs = [],-                                                                                                              frameworks = [],-                                                                                                              hsSourceDirs = [],-                                                                                                              includeDirs = [],-                                                                                                              includes = [],-                                                                                                              installIncludes = [],-                                                                                                              jsSources = [],-                                                                                                              ldOptions = [],-                                                                                                              mixins = [],-                                                                                                              oldExtensions = [],-                                                                                                              options = PerCompilerFlavor-                                                                                                                          []-                                                                                                                          [],-                                                                                                              otherExtensions = [],-                                                                                                              otherLanguages = [],-                                                                                                              otherModules = [],-                                                                                                              pkgconfigDepends = [],-                                                                                                              profOptions = PerCompilerFlavor-                                                                                                                              []-                                                                                                                              [],-                                                                                                              sharedOptions = PerCompilerFlavor-                                                                                                                                []-                                                                                                                                [],-                                                                                                              staticOptions = PerCompilerFlavor-                                                                                                                                []-                                                                                                                                [],-                                                                                                              targetBuildDepends = [],-                                                                                                              virtualModules = []},-                                                                                               exeName = `UnqualComponentName "shake"`,-                                                                                               exeScope = ExecutablePublic,-                                                                                               modulePath = ""}},-                                                    condBranchIfTrue = CondNode-                                                                         {condTreeComponents = [CondBranch-                                                                                                  {condBranchCondition = `Var (Impl GHC (EarlierVersion (mkVersion [7,6])))`,-                                                                                                   condBranchIfFalse = Nothing,-                                                                                                   condBranchIfTrue = CondNode-                                                                                                                        {condTreeComponents = [],-                                                                                                                         condTreeConstraints = [Dependency-                                                                                                                                                  `PackageName "old-time"`-                                                                                                                                                  AnyVersion-                                                                                                                                                  (Set.fromList-                                                                                                                                                     [LMainLibName])],-                                                                                                                         condTreeData = Executable-                                                                                                                                          {buildInfo = BuildInfo-                                                                                                                                                         {asmOptions = [],-                                                                                                                                                          asmSources = [],-                                                                                                                                                          autogenIncludes = [],-                                                                                                                                                          autogenModules = [],-                                                                                                                                                          buildToolDepends = [],-                                                                                                                                                          buildTools = [],-                                                                                                                                                          buildable = True,-                                                                                                                                                          cSources = [],-                                                                                                                                                          ccOptions = [],-                                                                                                                                                          cmmOptions = [],-                                                                                                                                                          cmmSources = [],-                                                                                                                                                          cppOptions = [],-                                                                                                                                                          customFieldsBI = [],-                                                                                                                                                          cxxOptions = [],-                                                                                                                                                          cxxSources = [],-                                                                                                                                                          defaultExtensions = [],-                                                                                                                                                          defaultLanguage = Nothing,-                                                                                                                                                          extraBundledLibs = [],-                                                                                                                                                          extraDynLibFlavours = [],-                                                                                                                                                          extraFrameworkDirs = [],-                                                                                                                                                          extraGHCiLibs = [],-                                                                                                                                                          extraLibDirs = [],-                                                                                                                                                          extraLibFlavours = [],-                                                                                                                                                          extraLibs = [],-                                                                                                                                                          frameworks = [],-                                                                                                                                                          hsSourceDirs = [],-                                                                                                                                                          includeDirs = [],-                                                                                                                                                          includes = [],-                                                                                                                                                          installIncludes = [],-                                                                                                                                                          jsSources = [],-                                                                                                                                                          ldOptions = [],-                                                                                                                                                          mixins = [],-                                                                                                                                                          oldExtensions = [],-                                                                                                                                                          options = PerCompilerFlavor-                                                                                                                                                                      []-                                                                                                                                                                      [],-                                                                                                                                                          otherExtensions = [],-                                                                                                                                                          otherLanguages = [],-                                                                                                                                                          otherModules = [],-                                                                                                                                                          pkgconfigDepends = [],-                                                                                                                                                          profOptions = PerCompilerFlavor-                                                                                                                                                                          []-                                                                                                                                                                          [],-                                                                                                                                                          sharedOptions = PerCompilerFlavor-                                                                                                                                                                            []-                                                                                                                                                                            [],-                                                                                                                                                          staticOptions = PerCompilerFlavor-                                                                                                                                                                            []-                                                                                                                                                                            [],-                                                                                                                                                          targetBuildDepends = [Dependency-                                                                                                                                                                                  `PackageName "old-time"`-                                                                                                                                                                                  AnyVersion-                                                                                                                                                                                  (Set.fromList-                                                                                                                                                                                     [LMainLibName])],-                                                                                                                                                          virtualModules = []},-                                                                                                                                           exeName = `UnqualComponentName "shake"`,-                                                                                                                                           exeScope = ExecutablePublic,-                                                                                                                                           modulePath = ""}}}],-                                                                          condTreeConstraints = [],-                                                                          condTreeData = Executable-                                                                                           {buildInfo = BuildInfo-                                                                                                          {asmOptions = [],-                                                                                                           asmSources = [],-                                                                                                           autogenIncludes = [],-                                                                                                           autogenModules = [],-                                                                                                           buildToolDepends = [],-                                                                                                           buildTools = [],-                                                                                                           buildable = True,-                                                                                                           cSources = [],-                                                                                                           ccOptions = [],-                                                                                                           cmmOptions = [],-                                                                                                           cmmSources = [],-                                                                                                           cppOptions = ["-DPORTABLE"],-                                                                                                           customFieldsBI = [],-                                                                                                           cxxOptions = [],-                                                                                                           cxxSources = [],-                                                                                                           defaultExtensions = [],-                                                                                                           defaultLanguage = Nothing,-                                                                                                           extraBundledLibs = [],-                                                                                                           extraDynLibFlavours = [],-                                                                                                           extraFrameworkDirs = [],-                                                                                                           extraGHCiLibs = [],-                                                                                                           extraLibDirs = [],-                                                                                                           extraLibFlavours = [],-                                                                                                           extraLibs = [],-                                                                                                           frameworks = [],-                                                                                                           hsSourceDirs = [],-                                                                                                           includeDirs = [],-                                                                                                           includes = [],-                                                                                                           installIncludes = [],-                                                                                                           jsSources = [],-                                                                                                           ldOptions = [],-                                                                                                           mixins = [],-                                                                                                           oldExtensions = [],-                                                                                                           options = PerCompilerFlavor-                                                                                                                       []-                                                                                                                       [],-                                                                                                           otherExtensions = [],-                                                                                                           otherLanguages = [],-                                                                                                           otherModules = [],-                                                                                                           pkgconfigDepends = [],-                                                                                                           profOptions = PerCompilerFlavor-                                                                                                                           []-                                                                                                                           [],-                                                                                                           sharedOptions = PerCompilerFlavor-                                                                                                                             []-                                                                                                                             [],-                                                                                                           staticOptions = PerCompilerFlavor-                                                                                                                             []-                                                                                                                             [],-                                                                                                           targetBuildDepends = [],-                                                                                                           virtualModules = []},-                                                                                            exeName = `UnqualComponentName "shake"`,-                                                                                            exeScope = ExecutablePublic,-                                                                                            modulePath = ""}}},-                                                 CondBranch-                                                   {condBranchCondition = `CNot (Var (OS Windows))`,-                                                    condBranchIfFalse = Nothing,-                                                    condBranchIfTrue = CondNode-                                                                         {condTreeComponents = [],-                                                                          condTreeConstraints = [Dependency-                                                                                                   `PackageName "unix"`-                                                                                                   AnyVersion-                                                                                                   (Set.fromList-                                                                                                      [LMainLibName])],-                                                                          condTreeData = Executable-                                                                                           {buildInfo = BuildInfo-                                                                                                          {asmOptions = [],-                                                                                                           asmSources = [],-                                                                                                           autogenIncludes = [],-                                                                                                           autogenModules = [],-                                                                                                           buildToolDepends = [],-                                                                                                           buildTools = [],-                                                                                                           buildable = True,-                                                                                                           cSources = [],-                                                                                                           ccOptions = [],-                                                                                                           cmmOptions = [],-                                                                                                           cmmSources = [],-                                                                                                           cppOptions = [],-                                                                                                           customFieldsBI = [],-                                                                                                           cxxOptions = [],-                                                                                                           cxxSources = [],-                                                                                                           defaultExtensions = [],-                                                                                                           defaultLanguage = Nothing,-                                                                                                           extraBundledLibs = [],-                                                                                                           extraDynLibFlavours = [],-                                                                                                           extraFrameworkDirs = [],-                                                                                                           extraGHCiLibs = [],-                                                                                                           extraLibDirs = [],-                                                                                                           extraLibFlavours = [],-                                                                                                           extraLibs = [],-                                                                                                           frameworks = [],-                                                                                                           hsSourceDirs = [],-                                                                                                           includeDirs = [],-                                                                                                           includes = [],-                                                                                                           installIncludes = [],-                                                                                                           jsSources = [],-                                                                                                           ldOptions = [],-                                                                                                           mixins = [],-                                                                                                           oldExtensions = [],-                                                                                                           options = PerCompilerFlavor-                                                                                                                       []-                                                                                                                       [],-                                                                                                           otherExtensions = [],-                                                                                                           otherLanguages = [],-                                                                                                           otherModules = [],-                                                                                                           pkgconfigDepends = [],-                                                                                                           profOptions = PerCompilerFlavor-                                                                                                                           []-                                                                                                                           [],-                                                                                                           sharedOptions = PerCompilerFlavor-                                                                                                                             []-                                                                                                                             [],-                                                                                                           staticOptions = PerCompilerFlavor-                                                                                                                             []-                                                                                                                             [],-                                                                                                           targetBuildDepends = [Dependency-                                                                                                                                   `PackageName "unix"`-                                                                                                                                   AnyVersion-                                                                                                                                   (Set.fromList-                                                                                                                                      [LMainLibName])],-                                                                                                           virtualModules = []},-                                                                                            exeName = `UnqualComponentName "shake"`,-                                                                                            exeScope = ExecutablePublic,-                                                                                            modulePath = ""}}}],-                           condTreeConstraints = [Dependency-                                                    `PackageName "base"`-                                                    (WildcardVersion `mkVersion [4]`)-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "directory"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "hashable"`-                                                    (OrLaterVersion `mkVersion [1,1,2,3]`)-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "binary"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "filepath"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "process"`-                                                    (OrLaterVersion `mkVersion [1,1]`)-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "unordered-containers"`-                                                    (OrLaterVersion `mkVersion [0,2,1]`)-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "bytestring"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "utf8-string"`-                                                    (OrLaterVersion `mkVersion [0,3]`)-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "time"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "random"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "js-jquery"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "js-flot"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "transformers"`-                                                    (OrLaterVersion `mkVersion [0,2]`)-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "extra"`-                                                    (OrLaterVersion `mkVersion [1,4,8]`)-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "deepseq"`-                                                    (OrLaterVersion `mkVersion [1,1]`)-                                                    (Set.fromList [LMainLibName]),-                                                  Dependency-                                                    `PackageName "primitive"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName])],-                           condTreeData = Executable-                                            {buildInfo = BuildInfo-                                                           {asmOptions = [],-                                                            asmSources = [],-                                                            autogenIncludes = [],-                                                            autogenModules = [],-                                                            buildToolDepends = [],-                                                            buildTools = [],-                                                            buildable = True,-                                                            cSources = [],-                                                            ccOptions = [],-                                                            cmmOptions = [],-                                                            cmmSources = [],-                                                            cppOptions = [],-                                                            customFieldsBI = [],-                                                            cxxOptions = [],-                                                            cxxSources = [],-                                                            defaultExtensions = [],-                                                            defaultLanguage = Just Haskell2010,-                                                            extraBundledLibs = [],-                                                            extraDynLibFlavours = [],-                                                            extraFrameworkDirs = [],-                                                            extraGHCiLibs = [],-                                                            extraLibDirs = [],-                                                            extraLibFlavours = [],-                                                            extraLibs = [],-                                                            frameworks = [],-                                                            hsSourceDirs = ["src"],-                                                            includeDirs = [],-                                                            includes = [],-                                                            installIncludes = [],-                                                            jsSources = [],-                                                            ldOptions = [],-                                                            mixins = [],-                                                            oldExtensions = [],-                                                            options = PerCompilerFlavor-                                                                        ["-main-is",-                                                                         "Run.main",-                                                                         "-rtsopts"]-                                                                        [],-                                                            otherExtensions = [],-                                                            otherLanguages = [],-                                                            otherModules = [`ModuleName ["Development","Make","All"]`,-                                                                            `ModuleName ["Development","Make","Env"]`,-                                                                            `ModuleName ["Development","Make","Parse"]`,-                                                                            `ModuleName ["Development","Make","Rules"]`,-                                                                            `ModuleName ["Development","Make","Type"]`,-                                                                            `ModuleName ["Development","Ninja","All"]`,-                                                                            `ModuleName ["Development","Ninja","Env"]`,-                                                                            `ModuleName ["Development","Ninja","Lexer"]`,-                                                                            `ModuleName ["Development","Ninja","Parse"]`,-                                                                            `ModuleName ["Development","Ninja","Type"]`,-                                                                            `ModuleName ["Development","Shake"]`,-                                                                            `ModuleName ["Development","Shake","Args"]`,-                                                                            `ModuleName ["Development","Shake","ByteString"]`,-                                                                            `ModuleName ["Development","Shake","Classes"]`,-                                                                            `ModuleName ["Development","Shake","CmdOption"]`,-                                                                            `ModuleName ["Development","Shake","Command"]`,-                                                                            `ModuleName ["Development","Shake","Core"]`,-                                                                            `ModuleName ["Development","Shake","Database"]`,-                                                                            `ModuleName ["Development","Shake","Demo"]`,-                                                                            `ModuleName ["Development","Shake","Derived"]`,-                                                                            `ModuleName ["Development","Shake","Errors"]`,-                                                                            `ModuleName ["Development","Shake","FileInfo"]`,-                                                                            `ModuleName ["Development","Shake","FilePath"]`,-                                                                            `ModuleName ["Development","Shake","FilePattern"]`,-                                                                            `ModuleName ["Development","Shake","Forward"]`,-                                                                            `ModuleName ["Development","Shake","Monad"]`,-                                                                            `ModuleName ["Development","Shake","Pool"]`,-                                                                            `ModuleName ["Development","Shake","Profile"]`,-                                                                            `ModuleName ["Development","Shake","Progress"]`,-                                                                            `ModuleName ["Development","Shake","Resource"]`,-                                                                            `ModuleName ["Development","Shake","Rule"]`,-                                                                            `ModuleName ["Development","Shake","Rules","Directory"]`,-                                                                            `ModuleName ["Development","Shake","Rules","File"]`,-                                                                            `ModuleName ["Development","Shake","Rules","Files"]`,-                                                                            `ModuleName ["Development","Shake","Rules","Oracle"]`,-                                                                            `ModuleName ["Development","Shake","Rules","OrderOnly"]`,-                                                                            `ModuleName ["Development","Shake","Rules","Rerun"]`,-                                                                            `ModuleName ["Development","Shake","Shake"]`,-                                                                            `ModuleName ["Development","Shake","Special"]`,-                                                                            `ModuleName ["Development","Shake","Storage"]`,-                                                                            `ModuleName ["Development","Shake","Types"]`,-                                                                            `ModuleName ["Development","Shake","Value"]`,-                                                                            `ModuleName ["General","Bilist"]`,-                                                                            `ModuleName ["General","Binary"]`,-                                                                            `ModuleName ["General","Cleanup"]`,-                                                                            `ModuleName ["General","Concurrent"]`,-                                                                            `ModuleName ["General","Extra"]`,-                                                                            `ModuleName ["General","FileLock"]`,-                                                                            `ModuleName ["General","Intern"]`,-                                                                            `ModuleName ["General","Process"]`,-                                                                            `ModuleName ["General","String"]`,-                                                                            `ModuleName ["General","Template"]`,-                                                                            `ModuleName ["General","Timing"]`,-                                                                            `ModuleName ["Paths_shake"]`,-                                                                            `ModuleName ["Run"]`],-                                                            pkgconfigDepends = [],-                                                            profOptions = PerCompilerFlavor [] [],-                                                            sharedOptions = PerCompilerFlavor [] [],-                                                            staticOptions = PerCompilerFlavor [] [],-                                                            targetBuildDepends = [Dependency-                                                                                    `PackageName "base"`-                                                                                    (WildcardVersion-                                                                                       `mkVersion [4]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "directory"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "hashable"`-                                                                                    (OrLaterVersion-                                                                                       `mkVersion [1,1,2,3]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "binary"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "filepath"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "process"`-                                                                                    (OrLaterVersion-                                                                                       `mkVersion [1,1]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "unordered-containers"`-                                                                                    (OrLaterVersion-                                                                                       `mkVersion [0,2,1]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "bytestring"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "utf8-string"`-                                                                                    (OrLaterVersion-                                                                                       `mkVersion [0,3]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "time"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "random"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "js-jquery"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "js-flot"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "transformers"`-                                                                                    (OrLaterVersion-                                                                                       `mkVersion [0,2]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "extra"`-                                                                                    (OrLaterVersion-                                                                                       `mkVersion [1,4,8]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "deepseq"`-                                                                                    (OrLaterVersion-                                                                                       `mkVersion [1,1]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),-                                                                                  Dependency-                                                                                    `PackageName "primitive"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName])],-                                                            virtualModules = []},-                                             exeName = `UnqualComponentName "shake"`,-                                             exeScope = ExecutablePublic,-                                             modulePath = "Run.hs"}}],-   condForeignLibs = [],-   condLibrary = Just-                   CondNode-                     {condTreeComponents = [CondBranch-                                              {condBranchCondition = `Var (Flag (FlagName "portable"))`,-                                               condBranchIfFalse = Just-                                                                     CondNode-                                                                       {condTreeComponents = [CondBranch-                                                                                                {condBranchCondition = `CNot (Var (OS Windows))`,-                                                                                                 condBranchIfFalse = Nothing,-                                                                                                 condBranchIfTrue = CondNode-                                                                                                                      {condTreeComponents = [],-                                                                                                                       condTreeConstraints = [Dependency-                                                                                                                                                `PackageName "unix"`-                                                                                                                                                (OrLaterVersion-                                                                                                                                                   `mkVersion [2,5,1]`)-                                                                                                                                                (Set.fromList-                                                                                                                                                   [LMainLibName])],-                                                                                                                       condTreeData = Library-                                                                                                                                        {exposedModules = [],-                                                                                                                                         libBuildInfo = BuildInfo-                                                                                                                                                          {asmOptions = [],-                                                                                                                                                           asmSources = [],-                                                                                                                                                           autogenIncludes = [],-                                                                                                                                                           autogenModules = [],-                                                                                                                                                           buildToolDepends = [],-                                                                                                                                                           buildTools = [],-                                                                                                                                                           buildable = True,-                                                                                                                                                           cSources = [],-                                                                                                                                                           ccOptions = [],-                                                                                                                                                           cmmOptions = [],-                                                                                                                                                           cmmSources = [],-                                                                                                                                                           cppOptions = [],-                                                                                                                                                           customFieldsBI = [],-                                                                                                                                                           cxxOptions = [],-                                                                                                                                                           cxxSources = [],-                                                                                                                                                           defaultExtensions = [],-                                                                                                                                                           defaultLanguage = Nothing,-                                                                                                                                                           extraBundledLibs = [],-                                                                                                                                                           extraDynLibFlavours = [],-                                                                                                                                                           extraFrameworkDirs = [],-                                                                                                                                                           extraGHCiLibs = [],-                                                                                                                                                           extraLibDirs = [],-                                                                                                                                                           extraLibFlavours = [],-                                                                                                                                                           extraLibs = [],-                                                                                                                                                           frameworks = [],-                                                                                                                                                           hsSourceDirs = [],-                                                                                                                                                           includeDirs = [],-                                                                                                                                                           includes = [],-                                                                                                                                                           installIncludes = [],-                                                                                                                                                           jsSources = [],-                                                                                                                                                           ldOptions = [],-                                                                                                                                                           mixins = [],-                                                                                                                                                           oldExtensions = [],-                                                                                                                                                           options = PerCompilerFlavor-                                                                                                                                                                       []-                                                                                                                                                                       [],-                                                                                                                                                           otherExtensions = [],-                                                                                                                                                           otherLanguages = [],-                                                                                                                                                           otherModules = [],-                                                                                                                                                           pkgconfigDepends = [],-                                                                                                                                                           profOptions = PerCompilerFlavor-                                                                                                                                                                           []-                                                                                                                                                                           [],-                                                                                                                                                           sharedOptions = PerCompilerFlavor-                                                                                                                                                                             []-                                                                                                                                                                             [],-                                                                                                                                                           staticOptions = PerCompilerFlavor-                                                                                                                                                                             []-                                                                                                                                                                             [],-                                                                                                                                                           targetBuildDepends = [Dependency-                                                                                                                                                                                   `PackageName "unix"`-                                                                                                                                                                                   (OrLaterVersion-                                                                                                                                                                                      `mkVersion [2,5,1]`)-                                                                                                                                                                                   (Set.fromList-                                                                                                                                                                                      [LMainLibName])],-                                                                                                                                                           virtualModules = []},-                                                                                                                                         libExposed = True,-                                                                                                                                         libName = LMainLibName,-                                                                                                                                         libVisibility = LibraryVisibilityPublic,-                                                                                                                                         reexportedModules = [],-                                                                                                                                         signatures = []}}}],-                                                                        condTreeConstraints = [],-                                                                        condTreeData = Library-                                                                                         {exposedModules = [],-                                                                                          libBuildInfo = BuildInfo-                                                                                                           {asmOptions = [],-                                                                                                            asmSources = [],-                                                                                                            autogenIncludes = [],-                                                                                                            autogenModules = [],-                                                                                                            buildToolDepends = [],-                                                                                                            buildTools = [],-                                                                                                            buildable = True,-                                                                                                            cSources = [],-                                                                                                            ccOptions = [],-                                                                                                            cmmOptions = [],-                                                                                                            cmmSources = [],-                                                                                                            cppOptions = [],-                                                                                                            customFieldsBI = [],-                                                                                                            cxxOptions = [],-                                                                                                            cxxSources = [],-                                                                                                            defaultExtensions = [],-                                                                                                            defaultLanguage = Nothing,-                                                                                                            extraBundledLibs = [],-                                                                                                            extraDynLibFlavours = [],-                                                                                                            extraFrameworkDirs = [],-                                                                                                            extraGHCiLibs = [],-                                                                                                            extraLibDirs = [],-                                                                                                            extraLibFlavours = [],-                                                                                                            extraLibs = [],-                                                                                                            frameworks = [],-                                                                                                            hsSourceDirs = [],-                                                                                                            includeDirs = [],-                                                                                                            includes = [],-                                                                                                            installIncludes = [],-                                                                                                            jsSources = [],-                                                                                                            ldOptions = [],-                                                                                                            mixins = [],-                                                                                                            oldExtensions = [],-                                                                                                            options = PerCompilerFlavor-                                                                                                                        []-                                                                                                                        [],-                                                                                                            otherExtensions = [],-                                                                                                            otherLanguages = [],-                                                                                                            otherModules = [],-                                                                                                            pkgconfigDepends = [],-                                                                                                            profOptions = PerCompilerFlavor-                                                                                                                            []-                                                                                                                            [],-                                                                                                            sharedOptions = PerCompilerFlavor-                                                                                                                              []-                                                                                                                              [],-                                                                                                            staticOptions = PerCompilerFlavor-                                                                                                                              []-                                                                                                                              [],-                                                                                                            targetBuildDepends = [],-                                                                                                            virtualModules = []},-                                                                                          libExposed = True,-                                                                                          libName = LMainLibName,-                                                                                          libVisibility = LibraryVisibilityPublic,-                                                                                          reexportedModules = [],-                                                                                          signatures = []}},-                                               condBranchIfTrue = CondNode-                                                                    {condTreeComponents = [CondBranch-                                                                                             {condBranchCondition = `Var (Impl GHC (EarlierVersion (mkVersion [7,6])))`,-                                                                                              condBranchIfFalse = Nothing,-                                                                                              condBranchIfTrue = CondNode-                                                                                                                   {condTreeComponents = [],-                                                                                                                    condTreeConstraints = [Dependency-                                                                                                                                             `PackageName "old-time"`-                                                                                                                                             AnyVersion-                                                                                                                                             (Set.fromList-                                                                                                                                                [LMainLibName])],-                                                                                                                    condTreeData = Library-                                                                                                                                     {exposedModules = [],-                                                                                                                                      libBuildInfo = BuildInfo-                                                                                                                                                       {asmOptions = [],-                                                                                                                                                        asmSources = [],-                                                                                                                                                        autogenIncludes = [],-                                                                                                                                                        autogenModules = [],-                                                                                                                                                        buildToolDepends = [],-                                                                                                                                                        buildTools = [],-                                                                                                                                                        buildable = True,-                                                                                                                                                        cSources = [],-                                                                                                                                                        ccOptions = [],-                                                                                                                                                        cmmOptions = [],-                                                                                                                                                        cmmSources = [],-                                                                                                                                                        cppOptions = [],-                                                                                                                                                        customFieldsBI = [],-                                                                                                                                                        cxxOptions = [],-                                                                                                                                                        cxxSources = [],-                                                                                                                                                        defaultExtensions = [],-                                                                                                                                                        defaultLanguage = Nothing,-                                                                                                                                                        extraBundledLibs = [],-                                                                                                                                                        extraDynLibFlavours = [],-                                                                                                                                                        extraFrameworkDirs = [],-                                                                                                                                                        extraGHCiLibs = [],-                                                                                                                                                        extraLibDirs = [],-                                                                                                                                                        extraLibFlavours = [],-                                                                                                                                                        extraLibs = [],-                                                                                                                                                        frameworks = [],-                                                                                                                                                        hsSourceDirs = [],-                                                                                                                                                        includeDirs = [],-                                                                                                                                                        includes = [],-                                                                                                                                                        installIncludes = [],-                                                                                                                                                        jsSources = [],-                                                                                                                                                        ldOptions = [],-                                                                                                                                                        mixins = [],-                                                                                                                                                        oldExtensions = [],-                                                                                                                                                        options = PerCompilerFlavor-                                                                                                                                                                    []-                                                                                                                                                                    [],-                                                                                                                                                        otherExtensions = [],-                                                                                                                                                        otherLanguages = [],-                                                                                                                                                        otherModules = [],-                                                                                                                                                        pkgconfigDepends = [],-                                                                                                                                                        profOptions = PerCompilerFlavor-                                                                                                                                                                        []-                                                                                                                                                                        [],-                                                                                                                                                        sharedOptions = PerCompilerFlavor-                                                                                                                                                                          []-                                                                                                                                                                          [],-                                                                                                                                                        staticOptions = PerCompilerFlavor-                                                                                                                                                                          []-                                                                                                                                                                          [],-                                                                                                                                                        targetBuildDepends = [Dependency-                                                                                                                                                                                `PackageName "old-time"`-                                                                                                                                                                                AnyVersion-                                                                                                                                                                                (Set.fromList-                                                                                                                                                                                   [LMainLibName])],-                                                                                                                                                        virtualModules = []},-                                                                                                                                      libExposed = True,-                                                                                                                                      libName = LMainLibName,-                                                                                                                                      libVisibility = LibraryVisibilityPublic,-                                                                                                                                      reexportedModules = [],-                                                                                                                                      signatures = []}}}],-                                                                     condTreeConstraints = [],-                                                                     condTreeData = Library-                                                                                      {exposedModules = [],-                                                                                       libBuildInfo = BuildInfo-                                                                                                        {asmOptions = [],-                                                                                                         asmSources = [],-                                                                                                         autogenIncludes = [],-                                                                                                         autogenModules = [],-                                                                                                         buildToolDepends = [],-                                                                                                         buildTools = [],-                                                                                                         buildable = True,-                                                                                                         cSources = [],-                                                                                                         ccOptions = [],-                                                                                                         cmmOptions = [],-                                                                                                         cmmSources = [],-                                                                                                         cppOptions = ["-DPORTABLE"],-                                                                                                         customFieldsBI = [],-                                                                                                         cxxOptions = [],-                                                                                                         cxxSources = [],-                                                                                                         defaultExtensions = [],-                                                                                                         defaultLanguage = Nothing,-                                                                                                         extraBundledLibs = [],-                                                                                                         extraDynLibFlavours = [],-                                                                                                         extraFrameworkDirs = [],-                                                                                                         extraGHCiLibs = [],-                                                                                                         extraLibDirs = [],-                                                                                                         extraLibFlavours = [],-                                                                                                         extraLibs = [],-                                                                                                         frameworks = [],-                                                                                                         hsSourceDirs = [],-                                                                                                         includeDirs = [],-                                                                                                         includes = [],-                                                                                                         installIncludes = [],-                                                                                                         jsSources = [],-                                                                                                         ldOptions = [],-                                                                                                         mixins = [],-                                                                                                         oldExtensions = [],-                                                                                                         options = PerCompilerFlavor-                                                                                                                     []-                                                                                                                     [],-                                                                                                         otherExtensions = [],-                                                                                                         otherLanguages = [],-                                                                                                         otherModules = [],-                                                                                                         pkgconfigDepends = [],-                                                                                                         profOptions = PerCompilerFlavor-                                                                                                                         []-                                                                                                                         [],-                                                                                                         sharedOptions = PerCompilerFlavor-                                                                                                                           []-                                                                                                                           [],-                                                                                                         staticOptions = PerCompilerFlavor-                                                                                                                           []-                                                                                                                           [],-                                                                                                         targetBuildDepends = [],-                                                                                                         virtualModules = []},-                                                                                       libExposed = True,-                                                                                       libName = LMainLibName,-                                                                                       libVisibility = LibraryVisibilityPublic,-                                                                                       reexportedModules = [],-                                                                                       signatures = []}}},-                                            CondBranch-                                              {condBranchCondition = `CNot (Var (OS Windows))`,-                                               condBranchIfFalse = Nothing,-                                               condBranchIfTrue = CondNode-                                                                    {condTreeComponents = [],-                                                                     condTreeConstraints = [Dependency-                                                                                              `PackageName "unix"`-                                                                                              AnyVersion-                                                                                              (Set.fromList-                                                                                                 [LMainLibName])],-                                                                     condTreeData = Library-                                                                                      {exposedModules = [],-                                                                                       libBuildInfo = BuildInfo-                                                                                                        {asmOptions = [],-                                                                                                         asmSources = [],-                                                                                                         autogenIncludes = [],-                                                                                                         autogenModules = [],-                                                                                                         buildToolDepends = [],-                                                                                                         buildTools = [],-                                                                                                         buildable = True,-                                                                                                         cSources = [],-                                                                                                         ccOptions = [],-                                                                                                         cmmOptions = [],-                                                                                                         cmmSources = [],-                                                                                                         cppOptions = [],-                                                                                                         customFieldsBI = [],-                                                                                                         cxxOptions = [],-                                                                                                         cxxSources = [],-                                                                                                         defaultExtensions = [],-                                                                                                         defaultLanguage = Nothing,-                                                                                                         extraBundledLibs = [],-                                                                                                         extraDynLibFlavours = [],-                                                                                                         extraFrameworkDirs = [],-                                                                                                         extraGHCiLibs = [],-                                                                                                         extraLibDirs = [],-                                                                                                         extraLibFlavours = [],-                                                                                                         extraLibs = [],-                                                                                                         frameworks = [],-                                                                                                         hsSourceDirs = [],-                                                                                                         includeDirs = [],-                                                                                                         includes = [],-                                                                                                         installIncludes = [],-                                                                                                         jsSources = [],-                                                                                                         ldOptions = [],-                                                                                                         mixins = [],-                                                                                                         oldExtensions = [],-                                                                                                         options = PerCompilerFlavor-                                                                                                                     []-                                                                                                                     [],-                                                                                                         otherExtensions = [],-                                                                                                         otherLanguages = [],-                                                                                                         otherModules = [],-                                                                                                         pkgconfigDepends = [],-                                                                                                         profOptions = PerCompilerFlavor-                                                                                                                         []-                                                                                                                         [],-                                                                                                         sharedOptions = PerCompilerFlavor-                                                                                                                           []-                                                                                                                           [],-                                                                                                         staticOptions = PerCompilerFlavor-                                                                                                                           []-                                                                                                                           [],-                                                                                                         targetBuildDepends = [Dependency-                                                                                                                                 `PackageName "unix"`-                                                                                                                                 AnyVersion-                                                                                                                                 (Set.fromList-                                                                                                                                    [LMainLibName])],-                                                                                                         virtualModules = []},-                                                                                       libExposed = True,-                                                                                       libName = LMainLibName,-                                                                                       libVisibility = LibraryVisibilityPublic,-                                                                                       reexportedModules = [],-                                                                                       signatures = []}}}],-                      condTreeConstraints = [Dependency-                                               `PackageName "base"`-                                               (OrLaterVersion `mkVersion [4,5]`)-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "directory"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "hashable"`-                                               (OrLaterVersion `mkVersion [1,1,2,3]`)-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "binary"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "filepath"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "process"`-                                               (OrLaterVersion `mkVersion [1,1]`)-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "unordered-containers"`-                                               (OrLaterVersion `mkVersion [0,2,1]`)-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "bytestring"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "utf8-string"`-                                               (OrLaterVersion `mkVersion [0,3]`)-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "time"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "random"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "js-jquery"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "js-flot"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "transformers"`-                                               (OrLaterVersion `mkVersion [0,2]`)-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "extra"`-                                               (OrLaterVersion `mkVersion [1,4,8]`)-                                               (Set.fromList [LMainLibName]),-                                             Dependency-                                               `PackageName "deepseq"`-                                               (OrLaterVersion `mkVersion [1,1]`)-                                               (Set.fromList [LMainLibName])],-                      condTreeData = Library-                                       {exposedModules = [`ModuleName ["Development","Shake"]`,-                                                          `ModuleName ["Development","Shake","Classes"]`,-                                                          `ModuleName ["Development","Shake","Command"]`,-                                                          `ModuleName ["Development","Shake","Config"]`,-                                                          `ModuleName ["Development","Shake","FilePath"]`,-                                                          `ModuleName ["Development","Shake","Forward"]`,-                                                          `ModuleName ["Development","Shake","Rule"]`,-                                                          `ModuleName ["Development","Shake","Util"]`],-                                        libBuildInfo = BuildInfo-                                                         {asmOptions = [],-                                                          asmSources = [],-                                                          autogenIncludes = [],-                                                          autogenModules = [],-                                                          buildToolDepends = [],-                                                          buildTools = [],-                                                          buildable = True,-                                                          cSources = [],-                                                          ccOptions = [],-                                                          cmmOptions = [],-                                                          cmmSources = [],-                                                          cppOptions = [],-                                                          customFieldsBI = [],-                                                          cxxOptions = [],-                                                          cxxSources = [],-                                                          defaultExtensions = [],-                                                          defaultLanguage = Just Haskell2010,-                                                          extraBundledLibs = [],-                                                          extraDynLibFlavours = [],-                                                          extraFrameworkDirs = [],-                                                          extraGHCiLibs = [],-                                                          extraLibDirs = [],-                                                          extraLibFlavours = [],-                                                          extraLibs = [],-                                                          frameworks = [],-                                                          hsSourceDirs = ["src"],-                                                          includeDirs = [],-                                                          includes = [],-                                                          installIncludes = [],-                                                          jsSources = [],-                                                          ldOptions = [],-                                                          mixins = [],-                                                          oldExtensions = [],-                                                          options = PerCompilerFlavor [] [],-                                                          otherExtensions = [],-                                                          otherLanguages = [],-                                                          otherModules = [`ModuleName ["Development","Ninja","Env"]`,-                                                                          `ModuleName ["Development","Ninja","Lexer"]`,-                                                                          `ModuleName ["Development","Ninja","Parse"]`,-                                                                          `ModuleName ["Development","Ninja","Type"]`,-                                                                          `ModuleName ["Development","Shake","Args"]`,-                                                                          `ModuleName ["Development","Shake","ByteString"]`,-                                                                          `ModuleName ["Development","Shake","Core"]`,-                                                                          `ModuleName ["Development","Shake","CmdOption"]`,-                                                                          `ModuleName ["Development","Shake","Database"]`,-                                                                          `ModuleName ["Development","Shake","Demo"]`,-                                                                          `ModuleName ["Development","Shake","Derived"]`,-                                                                          `ModuleName ["Development","Shake","Errors"]`,-                                                                          `ModuleName ["Development","Shake","FileInfo"]`,-                                                                          `ModuleName ["Development","Shake","FilePattern"]`,-                                                                          `ModuleName ["Development","Shake","Monad"]`,-                                                                          `ModuleName ["Development","Shake","Pool"]`,-                                                                          `ModuleName ["Development","Shake","Profile"]`,-                                                                          `ModuleName ["Development","Shake","Progress"]`,-                                                                          `ModuleName ["Development","Shake","Resource"]`,-                                                                          `ModuleName ["Development","Shake","Rules","Directory"]`,-                                                                          `ModuleName ["Development","Shake","Rules","File"]`,-                                                                          `ModuleName ["Development","Shake","Rules","Files"]`,-                                                                          `ModuleName ["Development","Shake","Rules","Oracle"]`,-                                                                          `ModuleName ["Development","Shake","Rules","OrderOnly"]`,-                                                                          `ModuleName ["Development","Shake","Rules","Rerun"]`,-                                                                          `ModuleName ["Development","Shake","Shake"]`,-                                                                          `ModuleName ["Development","Shake","Special"]`,-                                                                          `ModuleName ["Development","Shake","Storage"]`,-                                                                          `ModuleName ["Development","Shake","Types"]`,-                                                                          `ModuleName ["Development","Shake","Value"]`,-                                                                          `ModuleName ["General","Bilist"]`,-                                                                          `ModuleName ["General","Binary"]`,-                                                                          `ModuleName ["General","Cleanup"]`,-                                                                          `ModuleName ["General","Concurrent"]`,-                                                                          `ModuleName ["General","Extra"]`,-                                                                          `ModuleName ["General","FileLock"]`,-                                                                          `ModuleName ["General","Intern"]`,-                                                                          `ModuleName ["General","Process"]`,-                                                                          `ModuleName ["General","String"]`,-                                                                          `ModuleName ["General","Template"]`,-                                                                          `ModuleName ["General","Timing"]`,-                                                                          `ModuleName ["Paths_shake"]`],-                                                          pkgconfigDepends = [],-                                                          profOptions = PerCompilerFlavor [] [],-                                                          sharedOptions = PerCompilerFlavor [] [],-                                                          staticOptions = PerCompilerFlavor [] [],-                                                          targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`-                                                                                  (OrLaterVersion-                                                                                     `mkVersion [4,5]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "directory"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "hashable"`-                                                                                  (OrLaterVersion-                                                                                     `mkVersion [1,1,2,3]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "binary"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "filepath"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "process"`-                                                                                  (OrLaterVersion-                                                                                     `mkVersion [1,1]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "unordered-containers"`-                                                                                  (OrLaterVersion-                                                                                     `mkVersion [0,2,1]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "bytestring"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "utf8-string"`-                                                                                  (OrLaterVersion-                                                                                     `mkVersion [0,3]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "time"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "random"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "js-jquery"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "js-flot"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "transformers"`-                                                                                  (OrLaterVersion-                                                                                     `mkVersion [0,2]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "extra"`-                                                                                  (OrLaterVersion-                                                                                     `mkVersion [1,4,8]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),-                                                                                Dependency-                                                                                  `PackageName "deepseq"`-                                                                                  (OrLaterVersion-                                                                                     `mkVersion [1,1]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],-                                                          virtualModules = []},-                                        libExposed = True,-                                        libName = LMainLibName,-                                        libVisibility = LibraryVisibilityPublic,-                                        reexportedModules = [],-                                        signatures = []}},-   condSubLibraries = [],-   condTestSuites = [_×_-                       `UnqualComponentName "shake-test"`-                       CondNode-                         {condTreeComponents = [CondBranch-                                                  {condBranchCondition = `Var (Impl GHC (OrLaterVersion (mkVersion [7,6])))`,-                                                   condBranchIfFalse = Nothing,-                                                   condBranchIfTrue = CondNode-                                                                        {condTreeComponents = [],-                                                                         condTreeConstraints = [],-                                                                         condTreeData = TestSuite-                                                                                          {testBuildInfo = BuildInfo-                                                                                                             {asmOptions = [],-                                                                                                              asmSources = [],-                                                                                                              autogenIncludes = [],-                                                                                                              autogenModules = [],-                                                                                                              buildToolDepends = [],-                                                                                                              buildTools = [],-                                                                                                              buildable = True,-                                                                                                              cSources = [],-                                                                                                              ccOptions = [],-                                                                                                              cmmOptions = [],-                                                                                                              cmmSources = [],-                                                                                                              cppOptions = [],-                                                                                                              customFieldsBI = [],-                                                                                                              cxxOptions = [],-                                                                                                              cxxSources = [],-                                                                                                              defaultExtensions = [],-                                                                                                              defaultLanguage = Nothing,-                                                                                                              extraBundledLibs = [],-                                                                                                              extraDynLibFlavours = [],-                                                                                                              extraFrameworkDirs = [],-                                                                                                              extraGHCiLibs = [],-                                                                                                              extraLibDirs = [],-                                                                                                              extraLibFlavours = [],-                                                                                                              extraLibs = [],-                                                                                                              frameworks = [],-                                                                                                              hsSourceDirs = [],-                                                                                                              includeDirs = [],-                                                                                                              includes = [],-                                                                                                              installIncludes = [],-                                                                                                              jsSources = [],-                                                                                                              ldOptions = [],-                                                                                                              mixins = [],-                                                                                                              oldExtensions = [],-                                                                                                              options = PerCompilerFlavor-                                                                                                                          ["-with-rtsopts=-K1K"]-                                                                                                                          [],-                                                                                                              otherExtensions = [],-                                                                                                              otherLanguages = [],-                                                                                                              otherModules = [],-                                                                                                              pkgconfigDepends = [],-                                                                                                              profOptions = PerCompilerFlavor-                                                                                                                              []-                                                                                                                              [],-                                                                                                              sharedOptions = PerCompilerFlavor-                                                                                                                                []-                                                                                                                                [],-                                                                                                              staticOptions = PerCompilerFlavor-                                                                                                                                []-                                                                                                                                [],-                                                                                                              targetBuildDepends = [],-                                                                                                              virtualModules = []},-                                                                                           testInterface = TestSuiteUnsupported-                                                                                                             (TestTypeUnknown-                                                                                                                ""-                                                                                                                `mkVersion []`),-                                                                                           testName = `UnqualComponentName ""`}}},-                                                CondBranch-                                                  {condBranchCondition = `Var (Impl GHC (OrLaterVersion (mkVersion [7,8])))`,-                                                   condBranchIfFalse = Nothing,-                                                   condBranchIfTrue = CondNode-                                                                        {condTreeComponents = [],-                                                                         condTreeConstraints = [],-                                                                         condTreeData = TestSuite-                                                                                          {testBuildInfo = BuildInfo-                                                                                                             {asmOptions = [],-                                                                                                              asmSources = [],-                                                                                                              autogenIncludes = [],-                                                                                                              autogenModules = [],-                                                                                                              buildToolDepends = [],-                                                                                                              buildTools = [],-                                                                                                              buildable = True,-                                                                                                              cSources = [],-                                                                                                              ccOptions = [],-                                                                                                              cmmOptions = [],-                                                                                                              cmmSources = [],-                                                                                                              cppOptions = [],-                                                                                                              customFieldsBI = [],-                                                                                                              cxxOptions = [],-                                                                                                              cxxSources = [],-                                                                                                              defaultExtensions = [],-                                                                                                              defaultLanguage = Nothing,-                                                                                                              extraBundledLibs = [],-                                                                                                              extraDynLibFlavours = [],-                                                                                                              extraFrameworkDirs = [],-                                                                                                              extraGHCiLibs = [],-                                                                                                              extraLibDirs = [],-                                                                                                              extraLibFlavours = [],-                                                                                                              extraLibs = [],-                                                                                                              frameworks = [],-                                                                                                              hsSourceDirs = [],-                                                                                                              includeDirs = [],-                                                                                                              includes = [],-                                                                                                              installIncludes = [],-                                                                                                              jsSources = [],-                                                                                                              ldOptions = [],-                                                                                                              mixins = [],-                                                                                                              oldExtensions = [],-                                                                                                              options = PerCompilerFlavor-                                                                                                                          ["-threaded"]-                                                                                                                          [],-                                                                                                              otherExtensions = [],-                                                                                                              otherLanguages = [],-                                                                                                              otherModules = [],-                                                                                                              pkgconfigDepends = [],-                                                                                                              profOptions = PerCompilerFlavor-                                                                                                                              []-                                                                                                                              [],-                                                                                                              sharedOptions = PerCompilerFlavor-                                                                                                                                []-                                                                                                                                [],-                                                                                                              staticOptions = PerCompilerFlavor-                                                                                                                                []-                                                                                                                                [],-                                                                                                              targetBuildDepends = [],-                                                                                                              virtualModules = []},-                                                                                           testInterface = TestSuiteUnsupported-                                                                                                             (TestTypeUnknown-                                                                                                                ""-                                                                                                                `mkVersion []`),-                                                                                           testName = `UnqualComponentName ""`}}},-                                                CondBranch-                                                  {condBranchCondition = `Var (Flag (FlagName "portable"))`,-                                                   condBranchIfFalse = Just-                                                                         CondNode-                                                                           {condTreeComponents = [CondBranch-                                                                                                    {condBranchCondition = `CNot (Var (OS Windows))`,-                                                                                                     condBranchIfFalse = Nothing,-                                                                                                     condBranchIfTrue = CondNode-                                                                                                                          {condTreeComponents = [],-                                                                                                                           condTreeConstraints = [Dependency-                                                                                                                                                    `PackageName "unix"`-                                                                                                                                                    (OrLaterVersion-                                                                                                                                                       `mkVersion [2,5,1]`)-                                                                                                                                                    (Set.fromList-                                                                                                                                                       [LMainLibName])],-                                                                                                                           condTreeData = TestSuite-                                                                                                                                            {testBuildInfo = BuildInfo-                                                                                                                                                               {asmOptions = [],-                                                                                                                                                                asmSources = [],-                                                                                                                                                                autogenIncludes = [],-                                                                                                                                                                autogenModules = [],-                                                                                                                                                                buildToolDepends = [],-                                                                                                                                                                buildTools = [],-                                                                                                                                                                buildable = True,-                                                                                                                                                                cSources = [],-                                                                                                                                                                ccOptions = [],-                                                                                                                                                                cmmOptions = [],-                                                                                                                                                                cmmSources = [],-                                                                                                                                                                cppOptions = [],-                                                                                                                                                                customFieldsBI = [],-                                                                                                                                                                cxxOptions = [],-                                                                                                                                                                cxxSources = [],-                                                                                                                                                                defaultExtensions = [],-                                                                                                                                                                defaultLanguage = Nothing,-                                                                                                                                                                extraBundledLibs = [],-                                                                                                                                                                extraDynLibFlavours = [],-                                                                                                                                                                extraFrameworkDirs = [],-                                                                                                                                                                extraGHCiLibs = [],-                                                                                                                                                                extraLibDirs = [],-                                                                                                                                                                extraLibFlavours = [],-                                                                                                                                                                extraLibs = [],-                                                                                                                                                                frameworks = [],-                                                                                                                                                                hsSourceDirs = [],-                                                                                                                                                                includeDirs = [],-                                                                                                                                                                includes = [],-                                                                                                                                                                installIncludes = [],-                                                                                                                                                                jsSources = [],-                                                                                                                                                                ldOptions = [],-                                                                                                                                                                mixins = [],-                                                                                                                                                                oldExtensions = [],-                                                                                                                                                                options = PerCompilerFlavor-                                                                                                                                                                            []-                                                                                                                                                                            [],-                                                                                                                                                                otherExtensions = [],-                                                                                                                                                                otherLanguages = [],-                                                                                                                                                                otherModules = [],-                                                                                                                                                                pkgconfigDepends = [],-                                                                                                                                                                profOptions = PerCompilerFlavor-                                                                                                                                                                                []-                                                                                                                                                                                [],-                                                                                                                                                                sharedOptions = PerCompilerFlavor-                                                                                                                                                                                  []-                                                                                                                                                                                  [],-                                                                                                                                                                staticOptions = PerCompilerFlavor-                                                                                                                                                                                  []-                                                                                                                                                                                  [],-                                                                                                                                                                targetBuildDepends = [Dependency-                                                                                                                                                                                        `PackageName "unix"`-                                                                                                                                                                                        (OrLaterVersion-                                                                                                                                                                                           `mkVersion [2,5,1]`)-                                                                                                                                                                                        (Set.fromList-                                                                                                                                                                                           [LMainLibName])],-                                                                                                                                                                virtualModules = []},-                                                                                                                                             testInterface = TestSuiteUnsupported-                                                                                                                                                               (TestTypeUnknown-                                                                                                                                                                  ""-                                                                                                                                                                  `mkVersion []`),-                                                                                                                                             testName = `UnqualComponentName ""`}}}],-                                                                            condTreeConstraints = [],-                                                                            condTreeData = TestSuite-                                                                                             {testBuildInfo = BuildInfo-                                                                                                                {asmOptions = [],-                                                                                                                 asmSources = [],-                                                                                                                 autogenIncludes = [],-                                                                                                                 autogenModules = [],-                                                                                                                 buildToolDepends = [],-                                                                                                                 buildTools = [],-                                                                                                                 buildable = True,-                                                                                                                 cSources = [],-                                                                                                                 ccOptions = [],-                                                                                                                 cmmOptions = [],-                                                                                                                 cmmSources = [],-                                                                                                                 cppOptions = [],-                                                                                                                 customFieldsBI = [],-                                                                                                                 cxxOptions = [],-                                                                                                                 cxxSources = [],-                                                                                                                 defaultExtensions = [],-                                                                                                                 defaultLanguage = Nothing,-                                                                                                                 extraBundledLibs = [],-                                                                                                                 extraDynLibFlavours = [],-                                                                                                                 extraFrameworkDirs = [],-                                                                                                                 extraGHCiLibs = [],-                                                                                                                 extraLibDirs = [],-                                                                                                                 extraLibFlavours = [],-                                                                                                                 extraLibs = [],-                                                                                                                 frameworks = [],-                                                                                                                 hsSourceDirs = [],-                                                                                                                 includeDirs = [],-                                                                                                                 includes = [],-                                                                                                                 installIncludes = [],-                                                                                                                 jsSources = [],-                                                                                                                 ldOptions = [],-                                                                                                                 mixins = [],-                                                                                                                 oldExtensions = [],-                                                                                                                 options = PerCompilerFlavor-                                                                                                                             []-                                                                                                                             [],-                                                                                                                 otherExtensions = [],-                                                                                                                 otherLanguages = [],-                                                                                                                 otherModules = [],-                                                                                                                 pkgconfigDepends = [],-                                                                                                                 profOptions = PerCompilerFlavor-                                                                                                                                 []-                                                                                                                                 [],-                                                                                                                 sharedOptions = PerCompilerFlavor-                                                                                                                                   []-                                                                                                                                   [],-                                                                                                                 staticOptions = PerCompilerFlavor-                                                                                                                                   []-                                                                                                                                   [],-                                                                                                                 targetBuildDepends = [],-                                                                                                                 virtualModules = []},-                                                                                              testInterface = TestSuiteUnsupported-                                                                                                                (TestTypeUnknown-                                                                                                                   ""-                                                                                                                   `mkVersion []`),-                                                                                              testName = `UnqualComponentName ""`}},-                                                   condBranchIfTrue = CondNode-                                                                        {condTreeComponents = [CondBranch-                                                                                                 {condBranchCondition = `Var (Impl GHC (EarlierVersion (mkVersion [7,6])))`,-                                                                                                  condBranchIfFalse = Nothing,-                                                                                                  condBranchIfTrue = CondNode-                                                                                                                       {condTreeComponents = [],-                                                                                                                        condTreeConstraints = [Dependency-                                                                                                                                                 `PackageName "old-time"`-                                                                                                                                                 AnyVersion-                                                                                                                                                 (Set.fromList-                                                                                                                                                    [LMainLibName])],-                                                                                                                        condTreeData = TestSuite-                                                                                                                                         {testBuildInfo = BuildInfo-                                                                                                                                                            {asmOptions = [],-                                                                                                                                                             asmSources = [],-                                                                                                                                                             autogenIncludes = [],-                                                                                                                                                             autogenModules = [],-                                                                                                                                                             buildToolDepends = [],-                                                                                                                                                             buildTools = [],-                                                                                                                                                             buildable = True,-                                                                                                                                                             cSources = [],-                                                                                                                                                             ccOptions = [],-                                                                                                                                                             cmmOptions = [],-                                                                                                                                                             cmmSources = [],-                                                                                                                                                             cppOptions = [],-                                                                                                                                                             customFieldsBI = [],-                                                                                                                                                             cxxOptions = [],-                                                                                                                                                             cxxSources = [],-                                                                                                                                                             defaultExtensions = [],-                                                                                                                                                             defaultLanguage = Nothing,-                                                                                                                                                             extraBundledLibs = [],-                                                                                                                                                             extraDynLibFlavours = [],-                                                                                                                                                             extraFrameworkDirs = [],-                                                                                                                                                             extraGHCiLibs = [],-                                                                                                                                                             extraLibDirs = [],-                                                                                                                                                             extraLibFlavours = [],-                                                                                                                                                             extraLibs = [],-                                                                                                                                                             frameworks = [],-                                                                                                                                                             hsSourceDirs = [],-                                                                                                                                                             includeDirs = [],-                                                                                                                                                             includes = [],-                                                                                                                                                             installIncludes = [],-                                                                                                                                                             jsSources = [],-                                                                                                                                                             ldOptions = [],-                                                                                                                                                             mixins = [],-                                                                                                                                                             oldExtensions = [],-                                                                                                                                                             options = PerCompilerFlavor-                                                                                                                                                                         []-                                                                                                                                                                         [],-                                                                                                                                                             otherExtensions = [],-                                                                                                                                                             otherLanguages = [],-                                                                                                                                                             otherModules = [],-                                                                                                                                                             pkgconfigDepends = [],-                                                                                                                                                             profOptions = PerCompilerFlavor-                                                                                                                                                                             []-                                                                                                                                                                             [],-                                                                                                                                                             sharedOptions = PerCompilerFlavor-                                                                                                                                                                               []-                                                                                                                                                                               [],-                                                                                                                                                             staticOptions = PerCompilerFlavor-                                                                                                                                                                               []-                                                                                                                                                                               [],-                                                                                                                                                             targetBuildDepends = [Dependency-                                                                                                                                                                                     `PackageName "old-time"`-                                                                                                                                                                                     AnyVersion-                                                                                                                                                                                     (Set.fromList-                                                                                                                                                                                        [LMainLibName])],-                                                                                                                                                             virtualModules = []},-                                                                                                                                          testInterface = TestSuiteUnsupported-                                                                                                                                                            (TestTypeUnknown-                                                                                                                                                               ""-                                                                                                                                                               `mkVersion []`),-                                                                                                                                          testName = `UnqualComponentName ""`}}}],-                                                                         condTreeConstraints = [],-                                                                         condTreeData = TestSuite-                                                                                          {testBuildInfo = BuildInfo-                                                                                                             {asmOptions = [],-                                                                                                              asmSources = [],-                                                                                                              autogenIncludes = [],-                                                                                                              autogenModules = [],-                                                                                                              buildToolDepends = [],-                                                                                                              buildTools = [],-                                                                                                              buildable = True,-                                                                                                              cSources = [],-                                                                                                              ccOptions = [],-                                                                                                              cmmOptions = [],-                                                                                                              cmmSources = [],-                                                                                                              cppOptions = ["-DPORTABLE"],-                                                                                                              customFieldsBI = [],-                                                                                                              cxxOptions = [],-                                                                                                              cxxSources = [],-                                                                                                              defaultExtensions = [],-                                                                                                              defaultLanguage = Nothing,-                                                                                                              extraBundledLibs = [],-                                                                                                              extraDynLibFlavours = [],-                                                                                                              extraFrameworkDirs = [],-                                                                                                              extraGHCiLibs = [],-                                                                                                              extraLibDirs = [],-                                                                                                              extraLibFlavours = [],-                                                                                                              extraLibs = [],-                                                                                                              frameworks = [],-                                                                                                              hsSourceDirs = [],-                                                                                                              includeDirs = [],-                                                                                                              includes = [],-                                                                                                              installIncludes = [],-                                                                                                              jsSources = [],-                                                                                                              ldOptions = [],-                                                                                                              mixins = [],-                                                                                                              oldExtensions = [],-                                                                                                              options = PerCompilerFlavor-                                                                                                                          []-                                                                                                                          [],-                                                                                                              otherExtensions = [],-                                                                                                              otherLanguages = [],-                                                                                                              otherModules = [],-                                                                                                              pkgconfigDepends = [],-                                                                                                              profOptions = PerCompilerFlavor-                                                                                                                              []-                                                                                                                              [],-                                                                                                              sharedOptions = PerCompilerFlavor-                                                                                                                                []-                                                                                                                                [],-                                                                                                              staticOptions = PerCompilerFlavor-                                                                                                                                []-                                                                                                                                [],-                                                                                                              targetBuildDepends = [],-                                                                                                              virtualModules = []},-                                                                                           testInterface = TestSuiteUnsupported-                                                                                                             (TestTypeUnknown-                                                                                                                ""-                                                                                                                `mkVersion []`),-                                                                                           testName = `UnqualComponentName ""`}}},-                                                CondBranch-                                                  {condBranchCondition = `CNot (Var (OS Windows))`,-                                                   condBranchIfFalse = Nothing,-                                                   condBranchIfTrue = CondNode-                                                                        {condTreeComponents = [],-                                                                         condTreeConstraints = [Dependency-                                                                                                  `PackageName "unix"`-                                                                                                  AnyVersion-                                                                                                  (Set.fromList-                                                                                                     [LMainLibName])],-                                                                         condTreeData = TestSuite-                                                                                          {testBuildInfo = BuildInfo-                                                                                                             {asmOptions = [],-                                                                                                              asmSources = [],-                                                                                                              autogenIncludes = [],-                                                                                                              autogenModules = [],-                                                                                                              buildToolDepends = [],-                                                                                                              buildTools = [],-                                                                                                              buildable = True,-                                                                                                              cSources = [],-                                                                                                              ccOptions = [],-                                                                                                              cmmOptions = [],-                                                                                                              cmmSources = [],-                                                                                                              cppOptions = [],-                                                                                                              customFieldsBI = [],-                                                                                                              cxxOptions = [],-                                                                                                              cxxSources = [],-                                                                                                              defaultExtensions = [],-                                                                                                              defaultLanguage = Nothing,-                                                                                                              extraBundledLibs = [],-                                                                                                              extraDynLibFlavours = [],-                                                                                                              extraFrameworkDirs = [],-                                                                                                              extraGHCiLibs = [],-                                                                                                              extraLibDirs = [],-                                                                                                              extraLibFlavours = [],-                                                                                                              extraLibs = [],-                                                                                                              frameworks = [],-                                                                                                              hsSourceDirs = [],-                                                                                                              includeDirs = [],-                                                                                                              includes = [],-                                                                                                              installIncludes = [],-                                                                                                              jsSources = [],-                                                                                                              ldOptions = [],-                                                                                                              mixins = [],-                                                                                                              oldExtensions = [],-                                                                                                              options = PerCompilerFlavor-                                                                                                                          []-                                                                                                                          [],-                                                                                                              otherExtensions = [],-                                                                                                              otherLanguages = [],-                                                                                                              otherModules = [],-                                                                                                              pkgconfigDepends = [],-                                                                                                              profOptions = PerCompilerFlavor-                                                                                                                              []-                                                                                                                              [],-                                                                                                              sharedOptions = PerCompilerFlavor-                                                                                                                                []-                                                                                                                                [],-                                                                                                              staticOptions = PerCompilerFlavor-                                                                                                                                []-                                                                                                                                [],-                                                                                                              targetBuildDepends = [Dependency-                                                                                                                                      `PackageName "unix"`-                                                                                                                                      AnyVersion-                                                                                                                                      (Set.fromList-                                                                                                                                         [LMainLibName])],-                                                                                                              virtualModules = []},-                                                                                           testInterface = TestSuiteUnsupported-                                                                                                             (TestTypeUnknown-                                                                                                                ""-                                                                                                                `mkVersion []`),-                                                                                           testName = `UnqualComponentName ""`}}}],-                          condTreeConstraints = [Dependency-                                                   `PackageName "base"`-                                                   (WildcardVersion `mkVersion [4]`)-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "directory"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "hashable"`-                                                   (OrLaterVersion `mkVersion [1,1,2,3]`)-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "binary"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "filepath"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "process"`-                                                   (OrLaterVersion `mkVersion [1,1]`)-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "unordered-containers"`-                                                   (OrLaterVersion `mkVersion [0,2,1]`)-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "bytestring"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "utf8-string"`-                                                   (OrLaterVersion `mkVersion [0,3]`)-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "time"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "random"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "js-jquery"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "js-flot"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "transformers"`-                                                   (OrLaterVersion `mkVersion [0,2]`)-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "deepseq"`-                                                   (OrLaterVersion `mkVersion [1,1]`)-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "extra"`-                                                   (OrLaterVersion `mkVersion [1,4,8]`)-                                                   (Set.fromList [LMainLibName]),-                                                 Dependency-                                                   `PackageName "QuickCheck"`-                                                   (OrLaterVersion `mkVersion [2,0]`)-                                                   (Set.fromList [LMainLibName])],-                          condTreeData = TestSuite-                                           {testBuildInfo = BuildInfo-                                                              {asmOptions = [],-                                                               asmSources = [],-                                                               autogenIncludes = [],-                                                               autogenModules = [],-                                                               buildToolDepends = [],-                                                               buildTools = [],-                                                               buildable = True,-                                                               cSources = [],-                                                               ccOptions = [],-                                                               cmmOptions = [],-                                                               cmmSources = [],-                                                               cppOptions = [],-                                                               customFieldsBI = [],-                                                               cxxOptions = [],-                                                               cxxSources = [],-                                                               defaultExtensions = [],-                                                               defaultLanguage = Just Haskell2010,-                                                               extraBundledLibs = [],-                                                               extraDynLibFlavours = [],-                                                               extraFrameworkDirs = [],-                                                               extraGHCiLibs = [],-                                                               extraLibDirs = [],-                                                               extraLibFlavours = [],-                                                               extraLibs = [],-                                                               frameworks = [],-                                                               hsSourceDirs = ["src"],-                                                               includeDirs = [],-                                                               includes = [],-                                                               installIncludes = [],-                                                               jsSources = [],-                                                               ldOptions = [],-                                                               mixins = [],-                                                               oldExtensions = [],-                                                               options = PerCompilerFlavor-                                                                           ["-main-is",-                                                                            "Test.main",-                                                                            "-rtsopts"]-                                                                           [],-                                                               otherExtensions = [],-                                                               otherLanguages = [],-                                                               otherModules = [`ModuleName ["Development","Make","All"]`,-                                                                               `ModuleName ["Development","Make","Env"]`,-                                                                               `ModuleName ["Development","Make","Parse"]`,-                                                                               `ModuleName ["Development","Make","Rules"]`,-                                                                               `ModuleName ["Development","Make","Type"]`,-                                                                               `ModuleName ["Development","Ninja","All"]`,-                                                                               `ModuleName ["Development","Ninja","Env"]`,-                                                                               `ModuleName ["Development","Ninja","Lexer"]`,-                                                                               `ModuleName ["Development","Ninja","Parse"]`,-                                                                               `ModuleName ["Development","Ninja","Type"]`,-                                                                               `ModuleName ["Development","Shake"]`,-                                                                               `ModuleName ["Development","Shake","Args"]`,-                                                                               `ModuleName ["Development","Shake","ByteString"]`,-                                                                               `ModuleName ["Development","Shake","Classes"]`,-                                                                               `ModuleName ["Development","Shake","CmdOption"]`,-                                                                               `ModuleName ["Development","Shake","Command"]`,-                                                                               `ModuleName ["Development","Shake","Config"]`,-                                                                               `ModuleName ["Development","Shake","Core"]`,-                                                                               `ModuleName ["Development","Shake","Database"]`,-                                                                               `ModuleName ["Development","Shake","Demo"]`,-                                                                               `ModuleName ["Development","Shake","Derived"]`,-                                                                               `ModuleName ["Development","Shake","Errors"]`,-                                                                               `ModuleName ["Development","Shake","FileInfo"]`,-                                                                               `ModuleName ["Development","Shake","FilePath"]`,-                                                                               `ModuleName ["Development","Shake","FilePattern"]`,-                                                                               `ModuleName ["Development","Shake","Forward"]`,-                                                                               `ModuleName ["Development","Shake","Monad"]`,-                                                                               `ModuleName ["Development","Shake","Pool"]`,-                                                                               `ModuleName ["Development","Shake","Profile"]`,-                                                                               `ModuleName ["Development","Shake","Progress"]`,-                                                                               `ModuleName ["Development","Shake","Resource"]`,-                                                                               `ModuleName ["Development","Shake","Rule"]`,-                                                                               `ModuleName ["Development","Shake","Rules","Directory"]`,-                                                                               `ModuleName ["Development","Shake","Rules","File"]`,-                                                                               `ModuleName ["Development","Shake","Rules","Files"]`,-                                                                               `ModuleName ["Development","Shake","Rules","Oracle"]`,-                                                                               `ModuleName ["Development","Shake","Rules","OrderOnly"]`,-                                                                               `ModuleName ["Development","Shake","Rules","Rerun"]`,-                                                                               `ModuleName ["Development","Shake","Shake"]`,-                                                                               `ModuleName ["Development","Shake","Special"]`,-                                                                               `ModuleName ["Development","Shake","Storage"]`,-                                                                               `ModuleName ["Development","Shake","Types"]`,-                                                                               `ModuleName ["Development","Shake","Util"]`,-                                                                               `ModuleName ["Development","Shake","Value"]`,-                                                                               `ModuleName ["General","Bilist"]`,-                                                                               `ModuleName ["General","Binary"]`,-                                                                               `ModuleName ["General","Cleanup"]`,-                                                                               `ModuleName ["General","Concurrent"]`,-                                                                               `ModuleName ["General","Extra"]`,-                                                                               `ModuleName ["General","FileLock"]`,-                                                                               `ModuleName ["General","Intern"]`,-                                                                               `ModuleName ["General","Process"]`,-                                                                               `ModuleName ["General","String"]`,-                                                                               `ModuleName ["General","Template"]`,-                                                                               `ModuleName ["General","Timing"]`,-                                                                               `ModuleName ["Paths_shake"]`,-                                                                               `ModuleName ["Run"]`,-                                                                               `ModuleName ["Test","Assume"]`,-                                                                               `ModuleName ["Test","Basic"]`,-                                                                               `ModuleName ["Test","Benchmark"]`,-                                                                               `ModuleName ["Test","C"]`,-                                                                               `ModuleName ["Test","Cache"]`,-                                                                               `ModuleName ["Test","Command"]`,-                                                                               `ModuleName ["Test","Config"]`,-                                                                               `ModuleName ["Test","Digest"]`,-                                                                               `ModuleName ["Test","Directory"]`,-                                                                               `ModuleName ["Test","Docs"]`,-                                                                               `ModuleName ["Test","Errors"]`,-                                                                               `ModuleName ["Test","FileLock"]`,-                                                                               `ModuleName ["Test","FilePath"]`,-                                                                               `ModuleName ["Test","FilePattern"]`,-                                                                               `ModuleName ["Test","Files"]`,-                                                                               `ModuleName ["Test","Forward"]`,-                                                                               `ModuleName ["Test","Journal"]`,-                                                                               `ModuleName ["Test","Lint"]`,-                                                                               `ModuleName ["Test","Live"]`,-                                                                               `ModuleName ["Test","Makefile"]`,-                                                                               `ModuleName ["Test","Manual"]`,-                                                                               `ModuleName ["Test","Match"]`,-                                                                               `ModuleName ["Test","Monad"]`,-                                                                               `ModuleName ["Test","Ninja"]`,-                                                                               `ModuleName ["Test","Oracle"]`,-                                                                               `ModuleName ["Test","OrderOnly"]`,-                                                                               `ModuleName ["Test","Parallel"]`,-                                                                               `ModuleName ["Test","Pool"]`,-                                                                               `ModuleName ["Test","Progress"]`,-                                                                               `ModuleName ["Test","Random"]`,-                                                                               `ModuleName ["Test","Resources"]`,-                                                                               `ModuleName ["Test","Self"]`,-                                                                               `ModuleName ["Test","Tar"]`,-                                                                               `ModuleName ["Test","Tup"]`,-                                                                               `ModuleName ["Test","Type"]`,-                                                                               `ModuleName ["Test","Unicode"]`,-                                                                               `ModuleName ["Test","Util"]`,-                                                                               `ModuleName ["Test","Verbosity"]`,-                                                                               `ModuleName ["Test","Version"]`],-                                                               pkgconfigDepends = [],-                                                               profOptions = PerCompilerFlavor-                                                                               [] [],-                                                               sharedOptions = PerCompilerFlavor-                                                                                 [] [],-                                                               staticOptions = PerCompilerFlavor-                                                                                 [] [],-                                                               targetBuildDepends = [Dependency-                                                                                       `PackageName "base"`-                                                                                       (WildcardVersion-                                                                                          `mkVersion [4]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "directory"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "hashable"`-                                                                                       (OrLaterVersion-                                                                                          `mkVersion [1,1,2,3]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "binary"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "filepath"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "process"`-                                                                                       (OrLaterVersion-                                                                                          `mkVersion [1,1]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "unordered-containers"`-                                                                                       (OrLaterVersion-                                                                                          `mkVersion [0,2,1]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "bytestring"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "utf8-string"`-                                                                                       (OrLaterVersion-                                                                                          `mkVersion [0,3]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "time"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "random"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "js-jquery"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "js-flot"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "transformers"`-                                                                                       (OrLaterVersion-                                                                                          `mkVersion [0,2]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "deepseq"`-                                                                                       (OrLaterVersion-                                                                                          `mkVersion [1,1]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "extra"`-                                                                                       (OrLaterVersion-                                                                                          `mkVersion [1,4,8]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),-                                                                                     Dependency-                                                                                       `PackageName "QuickCheck"`-                                                                                       (OrLaterVersion-                                                                                          `mkVersion [2,0]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],-                                                               virtualModules = []},-                                            testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "Test.hs",-                                            testName = `UnqualComponentName ""`}}],-   genPackageFlags = [MkFlag-                        {flagDefault = False,-                         flagDescription = "Obtain FileTime using portable functions",-                         flagManual = True,-                         flagName = `FlagName "portable"`}],-   packageDescription = PackageDescription-                          {author = "Neil Mitchell <ndmitchell@gmail.com>",-                           benchmarks = [],-                           bugReports = "https://github.com/ndmitchell/shake/issues",-                           buildTypeRaw = Just Simple,-                           category = "Development, Shake",-                           copyright = "Neil Mitchell 2011-2017",-                           customFieldsPD = [],-                           dataDir = ".",-                           dataFiles = ["html/viz.js",-                                        "html/profile.html",-                                        "html/progress.html",-                                        "html/shake.js",-                                        "docs/manual/build.bat",-                                        "docs/manual/Build.hs",-                                        "docs/manual/build.sh",-                                        "docs/manual/constants.c",-                                        "docs/manual/constants.h",-                                        "docs/manual/main.c"],-                           description = concat-                                           ["Shake is a Haskell library for writing build systems - designed as a\n",-                                            "replacement for @make@. See \"Development.Shake\" for an introduction,\n",-                                            "including an example. Further examples are included in the Cabal tarball,\n",-                                            "under the @Examples@ directory. The homepage contains links to a user\n",-                                            "manual, an academic paper and further information:\n",-                                            "<http://shakebuild.com>\n",-                                            "\n",-                                            "To use Shake the user writes a Haskell program\n",-                                            "that imports \"Development.Shake\", defines some build rules, and calls\n",-                                            "the 'Development.Shake.shakeArgs' function. Thanks to do notation and infix\n",-                                            "operators, a simple Shake build system\n",-                                            "is not too dissimilar from a simple Makefile. However, as build systems\n",-                                            "get more complex, Shake is able to take advantage of the excellent\n",-                                            "abstraction facilities offered by Haskell and easily support much larger\n",-                                            "projects. The Shake library provides all the standard features available in other\n",-                                            "build systems, including automatic parallelism and minimal rebuilds.\n",-                                            "Shake also provides more accurate dependency tracking, including seamless\n",-                                            "support for generated files, and dependencies on system information\n",-                                            "(e.g. compiler version)."],-                           executables = [],-                           extraDocFiles = ["CHANGES.txt", "README.md"],-                           extraSrcFiles = ["src/Test/C/constants.c",-                                            "src/Test/C/constants.h",-                                            "src/Test/C/main.c",-                                            "src/Test/MakeTutor/Makefile",-                                            "src/Test/MakeTutor/hellofunc.c",-                                            "src/Test/MakeTutor/hellomake.c",-                                            "src/Test/MakeTutor/hellomake.h",-                                            "src/Test/Tar/list.txt",-                                            "src/Test/Ninja/*.ninja",-                                            "src/Test/Ninja/subdir/*.ninja",-                                            "src/Test/Ninja/*.output",-                                            "src/Test/Progress/*.prog",-                                            "src/Test/Tup/hello.c",-                                            "src/Test/Tup/root.cfg",-                                            "src/Test/Tup/newmath/root.cfg",-                                            "src/Test/Tup/newmath/square.c",-                                            "src/Test/Tup/newmath/square.h",-                                            "src/Paths.hs",-                                            "docs/Manual.md",-                                            "docs/shake-progress.png"],-                           extraTmpFiles = [],-                           foreignLibs = [],-                           homepage = "http://shakebuild.com",-                           library = Nothing,-                           licenseFiles = ["LICENSE"],-                           licenseRaw = Right BSD3,-                           maintainer = "Neil Mitchell <ndmitchell@gmail.com>",-                           package = PackageIdentifier-                                       {pkgName = `PackageName "shake"`,-                                        pkgVersion = `mkVersion [0,15,11]`},-                           pkgUrl = "",-                           setupBuildInfo = Nothing,-                           sourceRepos = [SourceRepo-                                            {repoBranch = Nothing,-                                             repoKind = RepoHead,-                                             repoLocation = Just-                                                              "https://github.com/ndmitchell/shake.git",-                                             repoModule = Nothing,-                                             repoSubdir = Nothing,-                                             repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [1,18]`),-                           stability = "",-                           subLibraries = [],-                           synopsis = "Build system library, like Make, but more accurate dependencies.",-                           testSuites = [],-                           testedWith = [_×_ GHC (ThisVersion `mkVersion [8,0,1]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,10,3]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,8,4]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,6,3]`),-                                         _×_ GHC (ThisVersion `mkVersion [7,4,2]`)]}}+                        (UnqualComponentName "shake")+                        CondNode+                          {condTreeComponents = [CondBranch+                                                   {condBranchCondition = `Var (Impl GHC (OrLaterVersion (mkVersion [7,8])))`,+                                                    condBranchIfFalse = Nothing,+                                                    condBranchIfTrue = CondNode+                                                                         {condTreeComponents = [],+                                                                          condTreeConstraints = [],+                                                                          condTreeData = Executable+                                                                                           {buildInfo = BuildInfo+                                                                                                          {asmOptions = [],+                                                                                                           asmSources = [],+                                                                                                           autogenIncludes = [],+                                                                                                           autogenModules = [],+                                                                                                           buildToolDepends = [],+                                                                                                           buildTools = [],+                                                                                                           buildable = True,+                                                                                                           cSources = [],+                                                                                                           ccOptions = [],+                                                                                                           cmmOptions = [],+                                                                                                           cmmSources = [],+                                                                                                           cppOptions = [],+                                                                                                           customFieldsBI = [],+                                                                                                           cxxOptions = [],+                                                                                                           cxxSources = [],+                                                                                                           defaultExtensions = [],+                                                                                                           defaultLanguage = Nothing,+                                                                                                           extraBundledLibs = [],+                                                                                                           extraDynLibFlavours = [],+                                                                                                           extraFrameworkDirs = [],+                                                                                                           extraGHCiLibs = [],+                                                                                                           extraLibDirs = [],+                                                                                                           extraLibFlavours = [],+                                                                                                           extraLibs = [],+                                                                                                           frameworks = [],+                                                                                                           hsSourceDirs = [],+                                                                                                           includeDirs = [],+                                                                                                           includes = [],+                                                                                                           installIncludes = [],+                                                                                                           jsSources = [],+                                                                                                           ldOptions = [],+                                                                                                           mixins = [],+                                                                                                           oldExtensions = [],+                                                                                                           options = PerCompilerFlavor+                                                                                                                       ["-threaded",+                                                                                                                        "-with-rtsopts=-I0 -qg -qb"]+                                                                                                                       [],+                                                                                                           otherExtensions = [],+                                                                                                           otherLanguages = [],+                                                                                                           otherModules = [],+                                                                                                           pkgconfigDepends = [],+                                                                                                           profOptions = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                           sharedOptions = PerCompilerFlavor+                                                                                                                             []+                                                                                                                             [],+                                                                                                           staticOptions = PerCompilerFlavor+                                                                                                                             []+                                                                                                                             [],+                                                                                                           targetBuildDepends = [],+                                                                                                           virtualModules = []},+                                                                                            exeName = UnqualComponentName+                                                                                                        "shake",+                                                                                            exeScope = ExecutablePublic,+                                                                                            modulePath = ""}}},+                                                 CondBranch+                                                   {condBranchCondition = `Var (PackageFlag (FlagName "portable"))`,+                                                    condBranchIfFalse = Just+                                                                          CondNode+                                                                            {condTreeComponents = [CondBranch+                                                                                                     {condBranchCondition = `CNot (Var (OS Windows))`,+                                                                                                      condBranchIfFalse = Nothing,+                                                                                                      condBranchIfTrue = CondNode+                                                                                                                           {condTreeComponents = [],+                                                                                                                            condTreeConstraints = [Dependency+                                                                                                                                                     (PackageName+                                                                                                                                                        "unix")+                                                                                                                                                     (OrLaterVersion+                                                                                                                                                        (mkVersion+                                                                                                                                                           [2,+                                                                                                                                                            5,+                                                                                                                                                            1]))+                                                                                                                                                     mainLibSet],+                                                                                                                            condTreeData = Executable+                                                                                                                                             {buildInfo = BuildInfo+                                                                                                                                                            {asmOptions = [],+                                                                                                                                                             asmSources = [],+                                                                                                                                                             autogenIncludes = [],+                                                                                                                                                             autogenModules = [],+                                                                                                                                                             buildToolDepends = [],+                                                                                                                                                             buildTools = [],+                                                                                                                                                             buildable = True,+                                                                                                                                                             cSources = [],+                                                                                                                                                             ccOptions = [],+                                                                                                                                                             cmmOptions = [],+                                                                                                                                                             cmmSources = [],+                                                                                                                                                             cppOptions = [],+                                                                                                                                                             customFieldsBI = [],+                                                                                                                                                             cxxOptions = [],+                                                                                                                                                             cxxSources = [],+                                                                                                                                                             defaultExtensions = [],+                                                                                                                                                             defaultLanguage = Nothing,+                                                                                                                                                             extraBundledLibs = [],+                                                                                                                                                             extraDynLibFlavours = [],+                                                                                                                                                             extraFrameworkDirs = [],+                                                                                                                                                             extraGHCiLibs = [],+                                                                                                                                                             extraLibDirs = [],+                                                                                                                                                             extraLibFlavours = [],+                                                                                                                                                             extraLibs = [],+                                                                                                                                                             frameworks = [],+                                                                                                                                                             hsSourceDirs = [],+                                                                                                                                                             includeDirs = [],+                                                                                                                                                             includes = [],+                                                                                                                                                             installIncludes = [],+                                                                                                                                                             jsSources = [],+                                                                                                                                                             ldOptions = [],+                                                                                                                                                             mixins = [],+                                                                                                                                                             oldExtensions = [],+                                                                                                                                                             options = PerCompilerFlavor+                                                                                                                                                                         []+                                                                                                                                                                         [],+                                                                                                                                                             otherExtensions = [],+                                                                                                                                                             otherLanguages = [],+                                                                                                                                                             otherModules = [],+                                                                                                                                                             pkgconfigDepends = [],+                                                                                                                                                             profOptions = PerCompilerFlavor+                                                                                                                                                                             []+                                                                                                                                                                             [],+                                                                                                                                                             sharedOptions = PerCompilerFlavor+                                                                                                                                                                               []+                                                                                                                                                                               [],+                                                                                                                                                             staticOptions = PerCompilerFlavor+                                                                                                                                                                               []+                                                                                                                                                                               [],+                                                                                                                                                             targetBuildDepends = [Dependency+                                                                                                                                                                                     (PackageName+                                                                                                                                                                                        "unix")+                                                                                                                                                                                     (OrLaterVersion+                                                                                                                                                                                        (mkVersion+                                                                                                                                                                                           [2,+                                                                                                                                                                                            5,+                                                                                                                                                                                            1]))+                                                                                                                                                                                     mainLibSet],+                                                                                                                                                             virtualModules = []},+                                                                                                                                              exeName = UnqualComponentName+                                                                                                                                                          "shake",+                                                                                                                                              exeScope = ExecutablePublic,+                                                                                                                                              modulePath = ""}}}],+                                                                             condTreeConstraints = [],+                                                                             condTreeData = Executable+                                                                                              {buildInfo = BuildInfo+                                                                                                             {asmOptions = [],+                                                                                                              asmSources = [],+                                                                                                              autogenIncludes = [],+                                                                                                              autogenModules = [],+                                                                                                              buildToolDepends = [],+                                                                                                              buildTools = [],+                                                                                                              buildable = True,+                                                                                                              cSources = [],+                                                                                                              ccOptions = [],+                                                                                                              cmmOptions = [],+                                                                                                              cmmSources = [],+                                                                                                              cppOptions = [],+                                                                                                              customFieldsBI = [],+                                                                                                              cxxOptions = [],+                                                                                                              cxxSources = [],+                                                                                                              defaultExtensions = [],+                                                                                                              defaultLanguage = Nothing,+                                                                                                              extraBundledLibs = [],+                                                                                                              extraDynLibFlavours = [],+                                                                                                              extraFrameworkDirs = [],+                                                                                                              extraGHCiLibs = [],+                                                                                                              extraLibDirs = [],+                                                                                                              extraLibFlavours = [],+                                                                                                              extraLibs = [],+                                                                                                              frameworks = [],+                                                                                                              hsSourceDirs = [],+                                                                                                              includeDirs = [],+                                                                                                              includes = [],+                                                                                                              installIncludes = [],+                                                                                                              jsSources = [],+                                                                                                              ldOptions = [],+                                                                                                              mixins = [],+                                                                                                              oldExtensions = [],+                                                                                                              options = PerCompilerFlavor+                                                                                                                          []+                                                                                                                          [],+                                                                                                              otherExtensions = [],+                                                                                                              otherLanguages = [],+                                                                                                              otherModules = [],+                                                                                                              pkgconfigDepends = [],+                                                                                                              profOptions = PerCompilerFlavor+                                                                                                                              []+                                                                                                                              [],+                                                                                                              sharedOptions = PerCompilerFlavor+                                                                                                                                []+                                                                                                                                [],+                                                                                                              staticOptions = PerCompilerFlavor+                                                                                                                                []+                                                                                                                                [],+                                                                                                              targetBuildDepends = [],+                                                                                                              virtualModules = []},+                                                                                               exeName = UnqualComponentName+                                                                                                           "shake",+                                                                                               exeScope = ExecutablePublic,+                                                                                               modulePath = ""}},+                                                    condBranchIfTrue = CondNode+                                                                         {condTreeComponents = [CondBranch+                                                                                                  {condBranchCondition = `Var (Impl GHC (EarlierVersion (mkVersion [7,6])))`,+                                                                                                   condBranchIfFalse = Nothing,+                                                                                                   condBranchIfTrue = CondNode+                                                                                                                        {condTreeComponents = [],+                                                                                                                         condTreeConstraints = [Dependency+                                                                                                                                                  (PackageName+                                                                                                                                                     "old-time")+                                                                                                                                                  (OrLaterVersion+                                                                                                                                                     (mkVersion+                                                                                                                                                        [0]))+                                                                                                                                                  mainLibSet],+                                                                                                                         condTreeData = Executable+                                                                                                                                          {buildInfo = BuildInfo+                                                                                                                                                         {asmOptions = [],+                                                                                                                                                          asmSources = [],+                                                                                                                                                          autogenIncludes = [],+                                                                                                                                                          autogenModules = [],+                                                                                                                                                          buildToolDepends = [],+                                                                                                                                                          buildTools = [],+                                                                                                                                                          buildable = True,+                                                                                                                                                          cSources = [],+                                                                                                                                                          ccOptions = [],+                                                                                                                                                          cmmOptions = [],+                                                                                                                                                          cmmSources = [],+                                                                                                                                                          cppOptions = [],+                                                                                                                                                          customFieldsBI = [],+                                                                                                                                                          cxxOptions = [],+                                                                                                                                                          cxxSources = [],+                                                                                                                                                          defaultExtensions = [],+                                                                                                                                                          defaultLanguage = Nothing,+                                                                                                                                                          extraBundledLibs = [],+                                                                                                                                                          extraDynLibFlavours = [],+                                                                                                                                                          extraFrameworkDirs = [],+                                                                                                                                                          extraGHCiLibs = [],+                                                                                                                                                          extraLibDirs = [],+                                                                                                                                                          extraLibFlavours = [],+                                                                                                                                                          extraLibs = [],+                                                                                                                                                          frameworks = [],+                                                                                                                                                          hsSourceDirs = [],+                                                                                                                                                          includeDirs = [],+                                                                                                                                                          includes = [],+                                                                                                                                                          installIncludes = [],+                                                                                                                                                          jsSources = [],+                                                                                                                                                          ldOptions = [],+                                                                                                                                                          mixins = [],+                                                                                                                                                          oldExtensions = [],+                                                                                                                                                          options = PerCompilerFlavor+                                                                                                                                                                      []+                                                                                                                                                                      [],+                                                                                                                                                          otherExtensions = [],+                                                                                                                                                          otherLanguages = [],+                                                                                                                                                          otherModules = [],+                                                                                                                                                          pkgconfigDepends = [],+                                                                                                                                                          profOptions = PerCompilerFlavor+                                                                                                                                                                          []+                                                                                                                                                                          [],+                                                                                                                                                          sharedOptions = PerCompilerFlavor+                                                                                                                                                                            []+                                                                                                                                                                            [],+                                                                                                                                                          staticOptions = PerCompilerFlavor+                                                                                                                                                                            []+                                                                                                                                                                            [],+                                                                                                                                                          targetBuildDepends = [Dependency+                                                                                                                                                                                  (PackageName+                                                                                                                                                                                     "old-time")+                                                                                                                                                                                  (OrLaterVersion+                                                                                                                                                                                     (mkVersion+                                                                                                                                                                                        [0]))+                                                                                                                                                                                  mainLibSet],+                                                                                                                                                          virtualModules = []},+                                                                                                                                           exeName = UnqualComponentName+                                                                                                                                                       "shake",+                                                                                                                                           exeScope = ExecutablePublic,+                                                                                                                                           modulePath = ""}}}],+                                                                          condTreeConstraints = [],+                                                                          condTreeData = Executable+                                                                                           {buildInfo = BuildInfo+                                                                                                          {asmOptions = [],+                                                                                                           asmSources = [],+                                                                                                           autogenIncludes = [],+                                                                                                           autogenModules = [],+                                                                                                           buildToolDepends = [],+                                                                                                           buildTools = [],+                                                                                                           buildable = True,+                                                                                                           cSources = [],+                                                                                                           ccOptions = [],+                                                                                                           cmmOptions = [],+                                                                                                           cmmSources = [],+                                                                                                           cppOptions = ["-DPORTABLE"],+                                                                                                           customFieldsBI = [],+                                                                                                           cxxOptions = [],+                                                                                                           cxxSources = [],+                                                                                                           defaultExtensions = [],+                                                                                                           defaultLanguage = Nothing,+                                                                                                           extraBundledLibs = [],+                                                                                                           extraDynLibFlavours = [],+                                                                                                           extraFrameworkDirs = [],+                                                                                                           extraGHCiLibs = [],+                                                                                                           extraLibDirs = [],+                                                                                                           extraLibFlavours = [],+                                                                                                           extraLibs = [],+                                                                                                           frameworks = [],+                                                                                                           hsSourceDirs = [],+                                                                                                           includeDirs = [],+                                                                                                           includes = [],+                                                                                                           installIncludes = [],+                                                                                                           jsSources = [],+                                                                                                           ldOptions = [],+                                                                                                           mixins = [],+                                                                                                           oldExtensions = [],+                                                                                                           options = PerCompilerFlavor+                                                                                                                       []+                                                                                                                       [],+                                                                                                           otherExtensions = [],+                                                                                                           otherLanguages = [],+                                                                                                           otherModules = [],+                                                                                                           pkgconfigDepends = [],+                                                                                                           profOptions = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                           sharedOptions = PerCompilerFlavor+                                                                                                                             []+                                                                                                                             [],+                                                                                                           staticOptions = PerCompilerFlavor+                                                                                                                             []+                                                                                                                             [],+                                                                                                           targetBuildDepends = [],+                                                                                                           virtualModules = []},+                                                                                            exeName = UnqualComponentName+                                                                                                        "shake",+                                                                                            exeScope = ExecutablePublic,+                                                                                            modulePath = ""}}},+                                                 CondBranch+                                                   {condBranchCondition = `CNot (Var (OS Windows))`,+                                                    condBranchIfFalse = Nothing,+                                                    condBranchIfTrue = CondNode+                                                                         {condTreeComponents = [],+                                                                          condTreeConstraints = [Dependency+                                                                                                   (PackageName+                                                                                                      "unix")+                                                                                                   (OrLaterVersion+                                                                                                      (mkVersion+                                                                                                         [0]))+                                                                                                   mainLibSet],+                                                                          condTreeData = Executable+                                                                                           {buildInfo = BuildInfo+                                                                                                          {asmOptions = [],+                                                                                                           asmSources = [],+                                                                                                           autogenIncludes = [],+                                                                                                           autogenModules = [],+                                                                                                           buildToolDepends = [],+                                                                                                           buildTools = [],+                                                                                                           buildable = True,+                                                                                                           cSources = [],+                                                                                                           ccOptions = [],+                                                                                                           cmmOptions = [],+                                                                                                           cmmSources = [],+                                                                                                           cppOptions = [],+                                                                                                           customFieldsBI = [],+                                                                                                           cxxOptions = [],+                                                                                                           cxxSources = [],+                                                                                                           defaultExtensions = [],+                                                                                                           defaultLanguage = Nothing,+                                                                                                           extraBundledLibs = [],+                                                                                                           extraDynLibFlavours = [],+                                                                                                           extraFrameworkDirs = [],+                                                                                                           extraGHCiLibs = [],+                                                                                                           extraLibDirs = [],+                                                                                                           extraLibFlavours = [],+                                                                                                           extraLibs = [],+                                                                                                           frameworks = [],+                                                                                                           hsSourceDirs = [],+                                                                                                           includeDirs = [],+                                                                                                           includes = [],+                                                                                                           installIncludes = [],+                                                                                                           jsSources = [],+                                                                                                           ldOptions = [],+                                                                                                           mixins = [],+                                                                                                           oldExtensions = [],+                                                                                                           options = PerCompilerFlavor+                                                                                                                       []+                                                                                                                       [],+                                                                                                           otherExtensions = [],+                                                                                                           otherLanguages = [],+                                                                                                           otherModules = [],+                                                                                                           pkgconfigDepends = [],+                                                                                                           profOptions = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                           sharedOptions = PerCompilerFlavor+                                                                                                                             []+                                                                                                                             [],+                                                                                                           staticOptions = PerCompilerFlavor+                                                                                                                             []+                                                                                                                             [],+                                                                                                           targetBuildDepends = [Dependency+                                                                                                                                   (PackageName+                                                                                                                                      "unix")+                                                                                                                                   (OrLaterVersion+                                                                                                                                      (mkVersion+                                                                                                                                         [0]))+                                                                                                                                   mainLibSet],+                                                                                                           virtualModules = []},+                                                                                            exeName = UnqualComponentName+                                                                                                        "shake",+                                                                                            exeScope = ExecutablePublic,+                                                                                            modulePath = ""}}}],+                           condTreeConstraints = [Dependency+                                                    (PackageName "base")+                                                    (IntersectVersionRanges+                                                       (OrLaterVersion (mkVersion [4]))+                                                       (EarlierVersion (mkVersion [5])))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "directory")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "hashable")+                                                    (OrLaterVersion (mkVersion [1, 1, 2, 3]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "binary")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "filepath")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "process")+                                                    (OrLaterVersion (mkVersion [1, 1]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "unordered-containers")+                                                    (OrLaterVersion (mkVersion [0, 2, 1]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "bytestring")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "utf8-string")+                                                    (OrLaterVersion (mkVersion [0, 3]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "time")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "random")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "js-jquery")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "js-flot")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "transformers")+                                                    (OrLaterVersion (mkVersion [0, 2]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "extra")+                                                    (OrLaterVersion (mkVersion [1, 4, 8]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "deepseq")+                                                    (OrLaterVersion (mkVersion [1, 1]))+                                                    mainLibSet,+                                                  Dependency+                                                    (PackageName "primitive")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet],+                           condTreeData = Executable+                                            {buildInfo = BuildInfo+                                                           {asmOptions = [],+                                                            asmSources = [],+                                                            autogenIncludes = [],+                                                            autogenModules = [],+                                                            buildToolDepends = [],+                                                            buildTools = [],+                                                            buildable = True,+                                                            cSources = [],+                                                            ccOptions = [],+                                                            cmmOptions = [],+                                                            cmmSources = [],+                                                            cppOptions = [],+                                                            customFieldsBI = [],+                                                            cxxOptions = [],+                                                            cxxSources = [],+                                                            defaultExtensions = [],+                                                            defaultLanguage = Just Haskell2010,+                                                            extraBundledLibs = [],+                                                            extraDynLibFlavours = [],+                                                            extraFrameworkDirs = [],+                                                            extraGHCiLibs = [],+                                                            extraLibDirs = [],+                                                            extraLibFlavours = [],+                                                            extraLibs = [],+                                                            frameworks = [],+                                                            hsSourceDirs = ["src"],+                                                            includeDirs = [],+                                                            includes = [],+                                                            installIncludes = [],+                                                            jsSources = [],+                                                            ldOptions = [],+                                                            mixins = [],+                                                            oldExtensions = [],+                                                            options = PerCompilerFlavor+                                                                        ["-main-is",+                                                                         "Run.main",+                                                                         "-rtsopts"]+                                                                        [],+                                                            otherExtensions = [],+                                                            otherLanguages = [],+                                                            otherModules = [ModuleName+                                                                              "Development.Make.All",+                                                                            ModuleName+                                                                              "Development.Make.Env",+                                                                            ModuleName+                                                                              "Development.Make.Parse",+                                                                            ModuleName+                                                                              "Development.Make.Rules",+                                                                            ModuleName+                                                                              "Development.Make.Type",+                                                                            ModuleName+                                                                              "Development.Ninja.All",+                                                                            ModuleName+                                                                              "Development.Ninja.Env",+                                                                            ModuleName+                                                                              "Development.Ninja.Lexer",+                                                                            ModuleName+                                                                              "Development.Ninja.Parse",+                                                                            ModuleName+                                                                              "Development.Ninja.Type",+                                                                            ModuleName+                                                                              "Development.Shake",+                                                                            ModuleName+                                                                              "Development.Shake.Args",+                                                                            ModuleName+                                                                              "Development.Shake.ByteString",+                                                                            ModuleName+                                                                              "Development.Shake.Classes",+                                                                            ModuleName+                                                                              "Development.Shake.CmdOption",+                                                                            ModuleName+                                                                              "Development.Shake.Command",+                                                                            ModuleName+                                                                              "Development.Shake.Core",+                                                                            ModuleName+                                                                              "Development.Shake.Database",+                                                                            ModuleName+                                                                              "Development.Shake.Demo",+                                                                            ModuleName+                                                                              "Development.Shake.Derived",+                                                                            ModuleName+                                                                              "Development.Shake.Errors",+                                                                            ModuleName+                                                                              "Development.Shake.FileInfo",+                                                                            ModuleName+                                                                              "Development.Shake.FilePath",+                                                                            ModuleName+                                                                              "Development.Shake.FilePattern",+                                                                            ModuleName+                                                                              "Development.Shake.Forward",+                                                                            ModuleName+                                                                              "Development.Shake.Monad",+                                                                            ModuleName+                                                                              "Development.Shake.Pool",+                                                                            ModuleName+                                                                              "Development.Shake.Profile",+                                                                            ModuleName+                                                                              "Development.Shake.Progress",+                                                                            ModuleName+                                                                              "Development.Shake.Resource",+                                                                            ModuleName+                                                                              "Development.Shake.Rule",+                                                                            ModuleName+                                                                              "Development.Shake.Rules.Directory",+                                                                            ModuleName+                                                                              "Development.Shake.Rules.File",+                                                                            ModuleName+                                                                              "Development.Shake.Rules.Files",+                                                                            ModuleName+                                                                              "Development.Shake.Rules.Oracle",+                                                                            ModuleName+                                                                              "Development.Shake.Rules.OrderOnly",+                                                                            ModuleName+                                                                              "Development.Shake.Rules.Rerun",+                                                                            ModuleName+                                                                              "Development.Shake.Shake",+                                                                            ModuleName+                                                                              "Development.Shake.Special",+                                                                            ModuleName+                                                                              "Development.Shake.Storage",+                                                                            ModuleName+                                                                              "Development.Shake.Types",+                                                                            ModuleName+                                                                              "Development.Shake.Value",+                                                                            ModuleName+                                                                              "General.Bilist",+                                                                            ModuleName+                                                                              "General.Binary",+                                                                            ModuleName+                                                                              "General.Cleanup",+                                                                            ModuleName+                                                                              "General.Concurrent",+                                                                            ModuleName+                                                                              "General.Extra",+                                                                            ModuleName+                                                                              "General.FileLock",+                                                                            ModuleName+                                                                              "General.Intern",+                                                                            ModuleName+                                                                              "General.Process",+                                                                            ModuleName+                                                                              "General.String",+                                                                            ModuleName+                                                                              "General.Template",+                                                                            ModuleName+                                                                              "General.Timing",+                                                                            ModuleName+                                                                              "Paths_shake",+                                                                            ModuleName "Run"],+                                                            pkgconfigDepends = [],+                                                            profOptions = PerCompilerFlavor [] [],+                                                            sharedOptions = PerCompilerFlavor [] [],+                                                            staticOptions = PerCompilerFlavor [] [],+                                                            targetBuildDepends = [Dependency+                                                                                    (PackageName+                                                                                       "base")+                                                                                    (IntersectVersionRanges+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [4]))+                                                                                       (EarlierVersion+                                                                                          (mkVersion+                                                                                             [5])))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "directory")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "hashable")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [1,+                                                                                           1,+                                                                                           2,+                                                                                           3]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "binary")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "filepath")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "process")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [1, 1]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "unordered-containers")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0,+                                                                                           2,+                                                                                           1]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "bytestring")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "utf8-string")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0, 3]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "time")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "random")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "js-jquery")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "js-flot")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "transformers")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0, 2]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "extra")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [1,+                                                                                           4,+                                                                                           8]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "deepseq")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [1, 1]))+                                                                                    mainLibSet,+                                                                                  Dependency+                                                                                    (PackageName+                                                                                       "primitive")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet],+                                                            virtualModules = []},+                                             exeName = UnqualComponentName "shake",+                                             exeScope = ExecutablePublic,+                                             modulePath = "Run.hs"}}],+   condForeignLibs = [],+   condLibrary = Just+                   CondNode+                     {condTreeComponents = [CondBranch+                                              {condBranchCondition = `Var (PackageFlag (FlagName "portable"))`,+                                               condBranchIfFalse = Just+                                                                     CondNode+                                                                       {condTreeComponents = [CondBranch+                                                                                                {condBranchCondition = `CNot (Var (OS Windows))`,+                                                                                                 condBranchIfFalse = Nothing,+                                                                                                 condBranchIfTrue = CondNode+                                                                                                                      {condTreeComponents = [],+                                                                                                                       condTreeConstraints = [Dependency+                                                                                                                                                (PackageName+                                                                                                                                                   "unix")+                                                                                                                                                (OrLaterVersion+                                                                                                                                                   (mkVersion+                                                                                                                                                      [2,+                                                                                                                                                       5,+                                                                                                                                                       1]))+                                                                                                                                                mainLibSet],+                                                                                                                       condTreeData = Library+                                                                                                                                        {exposedModules = [],+                                                                                                                                         libBuildInfo = BuildInfo+                                                                                                                                                          {asmOptions = [],+                                                                                                                                                           asmSources = [],+                                                                                                                                                           autogenIncludes = [],+                                                                                                                                                           autogenModules = [],+                                                                                                                                                           buildToolDepends = [],+                                                                                                                                                           buildTools = [],+                                                                                                                                                           buildable = True,+                                                                                                                                                           cSources = [],+                                                                                                                                                           ccOptions = [],+                                                                                                                                                           cmmOptions = [],+                                                                                                                                                           cmmSources = [],+                                                                                                                                                           cppOptions = [],+                                                                                                                                                           customFieldsBI = [],+                                                                                                                                                           cxxOptions = [],+                                                                                                                                                           cxxSources = [],+                                                                                                                                                           defaultExtensions = [],+                                                                                                                                                           defaultLanguage = Nothing,+                                                                                                                                                           extraBundledLibs = [],+                                                                                                                                                           extraDynLibFlavours = [],+                                                                                                                                                           extraFrameworkDirs = [],+                                                                                                                                                           extraGHCiLibs = [],+                                                                                                                                                           extraLibDirs = [],+                                                                                                                                                           extraLibFlavours = [],+                                                                                                                                                           extraLibs = [],+                                                                                                                                                           frameworks = [],+                                                                                                                                                           hsSourceDirs = [],+                                                                                                                                                           includeDirs = [],+                                                                                                                                                           includes = [],+                                                                                                                                                           installIncludes = [],+                                                                                                                                                           jsSources = [],+                                                                                                                                                           ldOptions = [],+                                                                                                                                                           mixins = [],+                                                                                                                                                           oldExtensions = [],+                                                                                                                                                           options = PerCompilerFlavor+                                                                                                                                                                       []+                                                                                                                                                                       [],+                                                                                                                                                           otherExtensions = [],+                                                                                                                                                           otherLanguages = [],+                                                                                                                                                           otherModules = [],+                                                                                                                                                           pkgconfigDepends = [],+                                                                                                                                                           profOptions = PerCompilerFlavor+                                                                                                                                                                           []+                                                                                                                                                                           [],+                                                                                                                                                           sharedOptions = PerCompilerFlavor+                                                                                                                                                                             []+                                                                                                                                                                             [],+                                                                                                                                                           staticOptions = PerCompilerFlavor+                                                                                                                                                                             []+                                                                                                                                                                             [],+                                                                                                                                                           targetBuildDepends = [Dependency+                                                                                                                                                                                   (PackageName+                                                                                                                                                                                      "unix")+                                                                                                                                                                                   (OrLaterVersion+                                                                                                                                                                                      (mkVersion+                                                                                                                                                                                         [2,+                                                                                                                                                                                          5,+                                                                                                                                                                                          1]))+                                                                                                                                                                                   mainLibSet],+                                                                                                                                                           virtualModules = []},+                                                                                                                                         libExposed = True,+                                                                                                                                         libName = LMainLibName,+                                                                                                                                         libVisibility = LibraryVisibilityPublic,+                                                                                                                                         reexportedModules = [],+                                                                                                                                         signatures = []}}}],+                                                                        condTreeConstraints = [],+                                                                        condTreeData = Library+                                                                                         {exposedModules = [],+                                                                                          libBuildInfo = BuildInfo+                                                                                                           {asmOptions = [],+                                                                                                            asmSources = [],+                                                                                                            autogenIncludes = [],+                                                                                                            autogenModules = [],+                                                                                                            buildToolDepends = [],+                                                                                                            buildTools = [],+                                                                                                            buildable = True,+                                                                                                            cSources = [],+                                                                                                            ccOptions = [],+                                                                                                            cmmOptions = [],+                                                                                                            cmmSources = [],+                                                                                                            cppOptions = [],+                                                                                                            customFieldsBI = [],+                                                                                                            cxxOptions = [],+                                                                                                            cxxSources = [],+                                                                                                            defaultExtensions = [],+                                                                                                            defaultLanguage = Nothing,+                                                                                                            extraBundledLibs = [],+                                                                                                            extraDynLibFlavours = [],+                                                                                                            extraFrameworkDirs = [],+                                                                                                            extraGHCiLibs = [],+                                                                                                            extraLibDirs = [],+                                                                                                            extraLibFlavours = [],+                                                                                                            extraLibs = [],+                                                                                                            frameworks = [],+                                                                                                            hsSourceDirs = [],+                                                                                                            includeDirs = [],+                                                                                                            includes = [],+                                                                                                            installIncludes = [],+                                                                                                            jsSources = [],+                                                                                                            ldOptions = [],+                                                                                                            mixins = [],+                                                                                                            oldExtensions = [],+                                                                                                            options = PerCompilerFlavor+                                                                                                                        []+                                                                                                                        [],+                                                                                                            otherExtensions = [],+                                                                                                            otherLanguages = [],+                                                                                                            otherModules = [],+                                                                                                            pkgconfigDepends = [],+                                                                                                            profOptions = PerCompilerFlavor+                                                                                                                            []+                                                                                                                            [],+                                                                                                            sharedOptions = PerCompilerFlavor+                                                                                                                              []+                                                                                                                              [],+                                                                                                            staticOptions = PerCompilerFlavor+                                                                                                                              []+                                                                                                                              [],+                                                                                                            targetBuildDepends = [],+                                                                                                            virtualModules = []},+                                                                                          libExposed = True,+                                                                                          libName = LMainLibName,+                                                                                          libVisibility = LibraryVisibilityPublic,+                                                                                          reexportedModules = [],+                                                                                          signatures = []}},+                                               condBranchIfTrue = CondNode+                                                                    {condTreeComponents = [CondBranch+                                                                                             {condBranchCondition = `Var (Impl GHC (EarlierVersion (mkVersion [7,6])))`,+                                                                                              condBranchIfFalse = Nothing,+                                                                                              condBranchIfTrue = CondNode+                                                                                                                   {condTreeComponents = [],+                                                                                                                    condTreeConstraints = [Dependency+                                                                                                                                             (PackageName+                                                                                                                                                "old-time")+                                                                                                                                             (OrLaterVersion+                                                                                                                                                (mkVersion+                                                                                                                                                   [0]))+                                                                                                                                             mainLibSet],+                                                                                                                    condTreeData = Library+                                                                                                                                     {exposedModules = [],+                                                                                                                                      libBuildInfo = BuildInfo+                                                                                                                                                       {asmOptions = [],+                                                                                                                                                        asmSources = [],+                                                                                                                                                        autogenIncludes = [],+                                                                                                                                                        autogenModules = [],+                                                                                                                                                        buildToolDepends = [],+                                                                                                                                                        buildTools = [],+                                                                                                                                                        buildable = True,+                                                                                                                                                        cSources = [],+                                                                                                                                                        ccOptions = [],+                                                                                                                                                        cmmOptions = [],+                                                                                                                                                        cmmSources = [],+                                                                                                                                                        cppOptions = [],+                                                                                                                                                        customFieldsBI = [],+                                                                                                                                                        cxxOptions = [],+                                                                                                                                                        cxxSources = [],+                                                                                                                                                        defaultExtensions = [],+                                                                                                                                                        defaultLanguage = Nothing,+                                                                                                                                                        extraBundledLibs = [],+                                                                                                                                                        extraDynLibFlavours = [],+                                                                                                                                                        extraFrameworkDirs = [],+                                                                                                                                                        extraGHCiLibs = [],+                                                                                                                                                        extraLibDirs = [],+                                                                                                                                                        extraLibFlavours = [],+                                                                                                                                                        extraLibs = [],+                                                                                                                                                        frameworks = [],+                                                                                                                                                        hsSourceDirs = [],+                                                                                                                                                        includeDirs = [],+                                                                                                                                                        includes = [],+                                                                                                                                                        installIncludes = [],+                                                                                                                                                        jsSources = [],+                                                                                                                                                        ldOptions = [],+                                                                                                                                                        mixins = [],+                                                                                                                                                        oldExtensions = [],+                                                                                                                                                        options = PerCompilerFlavor+                                                                                                                                                                    []+                                                                                                                                                                    [],+                                                                                                                                                        otherExtensions = [],+                                                                                                                                                        otherLanguages = [],+                                                                                                                                                        otherModules = [],+                                                                                                                                                        pkgconfigDepends = [],+                                                                                                                                                        profOptions = PerCompilerFlavor+                                                                                                                                                                        []+                                                                                                                                                                        [],+                                                                                                                                                        sharedOptions = PerCompilerFlavor+                                                                                                                                                                          []+                                                                                                                                                                          [],+                                                                                                                                                        staticOptions = PerCompilerFlavor+                                                                                                                                                                          []+                                                                                                                                                                          [],+                                                                                                                                                        targetBuildDepends = [Dependency+                                                                                                                                                                                (PackageName+                                                                                                                                                                                   "old-time")+                                                                                                                                                                                (OrLaterVersion+                                                                                                                                                                                   (mkVersion+                                                                                                                                                                                      [0]))+                                                                                                                                                                                mainLibSet],+                                                                                                                                                        virtualModules = []},+                                                                                                                                      libExposed = True,+                                                                                                                                      libName = LMainLibName,+                                                                                                                                      libVisibility = LibraryVisibilityPublic,+                                                                                                                                      reexportedModules = [],+                                                                                                                                      signatures = []}}}],+                                                                     condTreeConstraints = [],+                                                                     condTreeData = Library+                                                                                      {exposedModules = [],+                                                                                       libBuildInfo = BuildInfo+                                                                                                        {asmOptions = [],+                                                                                                         asmSources = [],+                                                                                                         autogenIncludes = [],+                                                                                                         autogenModules = [],+                                                                                                         buildToolDepends = [],+                                                                                                         buildTools = [],+                                                                                                         buildable = True,+                                                                                                         cSources = [],+                                                                                                         ccOptions = [],+                                                                                                         cmmOptions = [],+                                                                                                         cmmSources = [],+                                                                                                         cppOptions = ["-DPORTABLE"],+                                                                                                         customFieldsBI = [],+                                                                                                         cxxOptions = [],+                                                                                                         cxxSources = [],+                                                                                                         defaultExtensions = [],+                                                                                                         defaultLanguage = Nothing,+                                                                                                         extraBundledLibs = [],+                                                                                                         extraDynLibFlavours = [],+                                                                                                         extraFrameworkDirs = [],+                                                                                                         extraGHCiLibs = [],+                                                                                                         extraLibDirs = [],+                                                                                                         extraLibFlavours = [],+                                                                                                         extraLibs = [],+                                                                                                         frameworks = [],+                                                                                                         hsSourceDirs = [],+                                                                                                         includeDirs = [],+                                                                                                         includes = [],+                                                                                                         installIncludes = [],+                                                                                                         jsSources = [],+                                                                                                         ldOptions = [],+                                                                                                         mixins = [],+                                                                                                         oldExtensions = [],+                                                                                                         options = PerCompilerFlavor+                                                                                                                     []+                                                                                                                     [],+                                                                                                         otherExtensions = [],+                                                                                                         otherLanguages = [],+                                                                                                         otherModules = [],+                                                                                                         pkgconfigDepends = [],+                                                                                                         profOptions = PerCompilerFlavor+                                                                                                                         []+                                                                                                                         [],+                                                                                                         sharedOptions = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                         staticOptions = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                         targetBuildDepends = [],+                                                                                                         virtualModules = []},+                                                                                       libExposed = True,+                                                                                       libName = LMainLibName,+                                                                                       libVisibility = LibraryVisibilityPublic,+                                                                                       reexportedModules = [],+                                                                                       signatures = []}}},+                                            CondBranch+                                              {condBranchCondition = `CNot (Var (OS Windows))`,+                                               condBranchIfFalse = Nothing,+                                               condBranchIfTrue = CondNode+                                                                    {condTreeComponents = [],+                                                                     condTreeConstraints = [Dependency+                                                                                              (PackageName+                                                                                                 "unix")+                                                                                              (OrLaterVersion+                                                                                                 (mkVersion+                                                                                                    [0]))+                                                                                              mainLibSet],+                                                                     condTreeData = Library+                                                                                      {exposedModules = [],+                                                                                       libBuildInfo = BuildInfo+                                                                                                        {asmOptions = [],+                                                                                                         asmSources = [],+                                                                                                         autogenIncludes = [],+                                                                                                         autogenModules = [],+                                                                                                         buildToolDepends = [],+                                                                                                         buildTools = [],+                                                                                                         buildable = True,+                                                                                                         cSources = [],+                                                                                                         ccOptions = [],+                                                                                                         cmmOptions = [],+                                                                                                         cmmSources = [],+                                                                                                         cppOptions = [],+                                                                                                         customFieldsBI = [],+                                                                                                         cxxOptions = [],+                                                                                                         cxxSources = [],+                                                                                                         defaultExtensions = [],+                                                                                                         defaultLanguage = Nothing,+                                                                                                         extraBundledLibs = [],+                                                                                                         extraDynLibFlavours = [],+                                                                                                         extraFrameworkDirs = [],+                                                                                                         extraGHCiLibs = [],+                                                                                                         extraLibDirs = [],+                                                                                                         extraLibFlavours = [],+                                                                                                         extraLibs = [],+                                                                                                         frameworks = [],+                                                                                                         hsSourceDirs = [],+                                                                                                         includeDirs = [],+                                                                                                         includes = [],+                                                                                                         installIncludes = [],+                                                                                                         jsSources = [],+                                                                                                         ldOptions = [],+                                                                                                         mixins = [],+                                                                                                         oldExtensions = [],+                                                                                                         options = PerCompilerFlavor+                                                                                                                     []+                                                                                                                     [],+                                                                                                         otherExtensions = [],+                                                                                                         otherLanguages = [],+                                                                                                         otherModules = [],+                                                                                                         pkgconfigDepends = [],+                                                                                                         profOptions = PerCompilerFlavor+                                                                                                                         []+                                                                                                                         [],+                                                                                                         sharedOptions = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                         staticOptions = PerCompilerFlavor+                                                                                                                           []+                                                                                                                           [],+                                                                                                         targetBuildDepends = [Dependency+                                                                                                                                 (PackageName+                                                                                                                                    "unix")+                                                                                                                                 (OrLaterVersion+                                                                                                                                    (mkVersion+                                                                                                                                       [0]))+                                                                                                                                 mainLibSet],+                                                                                                         virtualModules = []},+                                                                                       libExposed = True,+                                                                                       libName = LMainLibName,+                                                                                       libVisibility = LibraryVisibilityPublic,+                                                                                       reexportedModules = [],+                                                                                       signatures = []}}}],+                      condTreeConstraints = [Dependency+                                               (PackageName "base")+                                               (OrLaterVersion (mkVersion [4, 5]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "directory")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "hashable")+                                               (OrLaterVersion (mkVersion [1, 1, 2, 3]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "binary")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "filepath")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "process")+                                               (OrLaterVersion (mkVersion [1, 1]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "unordered-containers")+                                               (OrLaterVersion (mkVersion [0, 2, 1]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "bytestring")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "utf8-string")+                                               (OrLaterVersion (mkVersion [0, 3]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "time")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "random")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "js-jquery")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "js-flot")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "transformers")+                                               (OrLaterVersion (mkVersion [0, 2]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "extra")+                                               (OrLaterVersion (mkVersion [1, 4, 8]))+                                               mainLibSet,+                                             Dependency+                                               (PackageName "deepseq")+                                               (OrLaterVersion (mkVersion [1, 1]))+                                               mainLibSet],+                      condTreeData = Library+                                       {exposedModules = [ModuleName "Development.Shake",+                                                          ModuleName "Development.Shake.Classes",+                                                          ModuleName "Development.Shake.Command",+                                                          ModuleName "Development.Shake.Config",+                                                          ModuleName "Development.Shake.FilePath",+                                                          ModuleName "Development.Shake.Forward",+                                                          ModuleName "Development.Shake.Rule",+                                                          ModuleName "Development.Shake.Util"],+                                        libBuildInfo = BuildInfo+                                                         {asmOptions = [],+                                                          asmSources = [],+                                                          autogenIncludes = [],+                                                          autogenModules = [],+                                                          buildToolDepends = [],+                                                          buildTools = [],+                                                          buildable = True,+                                                          cSources = [],+                                                          ccOptions = [],+                                                          cmmOptions = [],+                                                          cmmSources = [],+                                                          cppOptions = [],+                                                          customFieldsBI = [],+                                                          cxxOptions = [],+                                                          cxxSources = [],+                                                          defaultExtensions = [],+                                                          defaultLanguage = Just Haskell2010,+                                                          extraBundledLibs = [],+                                                          extraDynLibFlavours = [],+                                                          extraFrameworkDirs = [],+                                                          extraGHCiLibs = [],+                                                          extraLibDirs = [],+                                                          extraLibFlavours = [],+                                                          extraLibs = [],+                                                          frameworks = [],+                                                          hsSourceDirs = [".", "src"],+                                                          includeDirs = [],+                                                          includes = [],+                                                          installIncludes = [],+                                                          jsSources = [],+                                                          ldOptions = [],+                                                          mixins = [],+                                                          oldExtensions = [],+                                                          options = PerCompilerFlavor [] [],+                                                          otherExtensions = [],+                                                          otherLanguages = [],+                                                          otherModules = [ModuleName+                                                                            "Development.Ninja.Env",+                                                                          ModuleName+                                                                            "Development.Ninja.Lexer",+                                                                          ModuleName+                                                                            "Development.Ninja.Parse",+                                                                          ModuleName+                                                                            "Development.Ninja.Type",+                                                                          ModuleName+                                                                            "Development.Shake.Args",+                                                                          ModuleName+                                                                            "Development.Shake.ByteString",+                                                                          ModuleName+                                                                            "Development.Shake.Core",+                                                                          ModuleName+                                                                            "Development.Shake.CmdOption",+                                                                          ModuleName+                                                                            "Development.Shake.Database",+                                                                          ModuleName+                                                                            "Development.Shake.Demo",+                                                                          ModuleName+                                                                            "Development.Shake.Derived",+                                                                          ModuleName+                                                                            "Development.Shake.Errors",+                                                                          ModuleName+                                                                            "Development.Shake.FileInfo",+                                                                          ModuleName+                                                                            "Development.Shake.FilePattern",+                                                                          ModuleName+                                                                            "Development.Shake.Monad",+                                                                          ModuleName+                                                                            "Development.Shake.Pool",+                                                                          ModuleName+                                                                            "Development.Shake.Profile",+                                                                          ModuleName+                                                                            "Development.Shake.Progress",+                                                                          ModuleName+                                                                            "Development.Shake.Resource",+                                                                          ModuleName+                                                                            "Development.Shake.Rules.Directory",+                                                                          ModuleName+                                                                            "Development.Shake.Rules.File",+                                                                          ModuleName+                                                                            "Development.Shake.Rules.Files",+                                                                          ModuleName+                                                                            "Development.Shake.Rules.Oracle",+                                                                          ModuleName+                                                                            "Development.Shake.Rules.OrderOnly",+                                                                          ModuleName+                                                                            "Development.Shake.Rules.Rerun",+                                                                          ModuleName+                                                                            "Development.Shake.Shake",+                                                                          ModuleName+                                                                            "Development.Shake.Special",+                                                                          ModuleName+                                                                            "Development.Shake.Storage",+                                                                          ModuleName+                                                                            "Development.Shake.Types",+                                                                          ModuleName+                                                                            "Development.Shake.Value",+                                                                          ModuleName+                                                                            "General.Bilist",+                                                                          ModuleName+                                                                            "General.Binary",+                                                                          ModuleName+                                                                            "General.Cleanup",+                                                                          ModuleName+                                                                            "General.Concurrent",+                                                                          ModuleName+                                                                            "General.Extra",+                                                                          ModuleName+                                                                            "General.FileLock",+                                                                          ModuleName+                                                                            "General.Intern",+                                                                          ModuleName+                                                                            "General.Process",+                                                                          ModuleName+                                                                            "General.String",+                                                                          ModuleName+                                                                            "General.Template",+                                                                          ModuleName+                                                                            "General.Timing",+                                                                          ModuleName "Paths_shake"],+                                                          pkgconfigDepends = [],+                                                          profOptions = PerCompilerFlavor [] [],+                                                          sharedOptions = PerCompilerFlavor [] [],+                                                          staticOptions = PerCompilerFlavor [] [],+                                                          targetBuildDepends = [Dependency+                                                                                  (PackageName+                                                                                     "base")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [4, 5]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "directory")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "hashable")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [1,+                                                                                         1,+                                                                                         2,+                                                                                         3]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "binary")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "filepath")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "process")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [1, 1]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "unordered-containers")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0, 2, 1]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "bytestring")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "utf8-string")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0, 3]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "time")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "random")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "js-jquery")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "js-flot")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "transformers")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0, 2]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "extra")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [1, 4, 8]))+                                                                                  mainLibSet,+                                                                                Dependency+                                                                                  (PackageName+                                                                                     "deepseq")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [1, 1]))+                                                                                  mainLibSet],+                                                          virtualModules = []},+                                        libExposed = True,+                                        libName = LMainLibName,+                                        libVisibility = LibraryVisibilityPublic,+                                        reexportedModules = [],+                                        signatures = []}},+   condSubLibraries = [],+   condTestSuites = [_×_+                       (UnqualComponentName "shake-test")+                       CondNode+                         {condTreeComponents = [CondBranch+                                                  {condBranchCondition = `Var (Impl GHC (OrLaterVersion (mkVersion [7,6])))`,+                                                   condBranchIfFalse = Nothing,+                                                   condBranchIfTrue = CondNode+                                                                        {condTreeComponents = [],+                                                                         condTreeConstraints = [],+                                                                         condTreeData = TestSuite+                                                                                          {testBuildInfo = BuildInfo+                                                                                                             {asmOptions = [],+                                                                                                              asmSources = [],+                                                                                                              autogenIncludes = [],+                                                                                                              autogenModules = [],+                                                                                                              buildToolDepends = [],+                                                                                                              buildTools = [],+                                                                                                              buildable = True,+                                                                                                              cSources = [],+                                                                                                              ccOptions = [],+                                                                                                              cmmOptions = [],+                                                                                                              cmmSources = [],+                                                                                                              cppOptions = [],+                                                                                                              customFieldsBI = [],+                                                                                                              cxxOptions = [],+                                                                                                              cxxSources = [],+                                                                                                              defaultExtensions = [],+                                                                                                              defaultLanguage = Nothing,+                                                                                                              extraBundledLibs = [],+                                                                                                              extraDynLibFlavours = [],+                                                                                                              extraFrameworkDirs = [],+                                                                                                              extraGHCiLibs = [],+                                                                                                              extraLibDirs = [],+                                                                                                              extraLibFlavours = [],+                                                                                                              extraLibs = [],+                                                                                                              frameworks = [],+                                                                                                              hsSourceDirs = [],+                                                                                                              includeDirs = [],+                                                                                                              includes = [],+                                                                                                              installIncludes = [],+                                                                                                              jsSources = [],+                                                                                                              ldOptions = [],+                                                                                                              mixins = [],+                                                                                                              oldExtensions = [],+                                                                                                              options = PerCompilerFlavor+                                                                                                                          ["-with-rtsopts=-K1K"]+                                                                                                                          [],+                                                                                                              otherExtensions = [],+                                                                                                              otherLanguages = [],+                                                                                                              otherModules = [],+                                                                                                              pkgconfigDepends = [],+                                                                                                              profOptions = PerCompilerFlavor+                                                                                                                              []+                                                                                                                              [],+                                                                                                              sharedOptions = PerCompilerFlavor+                                                                                                                                []+                                                                                                                                [],+                                                                                                              staticOptions = PerCompilerFlavor+                                                                                                                                []+                                                                                                                                [],+                                                                                                              targetBuildDepends = [],+                                                                                                              virtualModules = []},+                                                                                           testInterface = TestSuiteUnsupported+                                                                                                             (TestTypeUnknown+                                                                                                                ""+                                                                                                                (mkVersion+                                                                                                                   [])),+                                                                                           testName = UnqualComponentName+                                                                                                        ""}}},+                                                CondBranch+                                                  {condBranchCondition = `Var (Impl GHC (OrLaterVersion (mkVersion [7,8])))`,+                                                   condBranchIfFalse = Nothing,+                                                   condBranchIfTrue = CondNode+                                                                        {condTreeComponents = [],+                                                                         condTreeConstraints = [],+                                                                         condTreeData = TestSuite+                                                                                          {testBuildInfo = BuildInfo+                                                                                                             {asmOptions = [],+                                                                                                              asmSources = [],+                                                                                                              autogenIncludes = [],+                                                                                                              autogenModules = [],+                                                                                                              buildToolDepends = [],+                                                                                                              buildTools = [],+                                                                                                              buildable = True,+                                                                                                              cSources = [],+                                                                                                              ccOptions = [],+                                                                                                              cmmOptions = [],+                                                                                                              cmmSources = [],+                                                                                                              cppOptions = [],+                                                                                                              customFieldsBI = [],+                                                                                                              cxxOptions = [],+                                                                                                              cxxSources = [],+                                                                                                              defaultExtensions = [],+                                                                                                              defaultLanguage = Nothing,+                                                                                                              extraBundledLibs = [],+                                                                                                              extraDynLibFlavours = [],+                                                                                                              extraFrameworkDirs = [],+                                                                                                              extraGHCiLibs = [],+                                                                                                              extraLibDirs = [],+                                                                                                              extraLibFlavours = [],+                                                                                                              extraLibs = [],+                                                                                                              frameworks = [],+                                                                                                              hsSourceDirs = [],+                                                                                                              includeDirs = [],+                                                                                                              includes = [],+                                                                                                              installIncludes = [],+                                                                                                              jsSources = [],+                                                                                                              ldOptions = [],+                                                                                                              mixins = [],+                                                                                                              oldExtensions = [],+                                                                                                              options = PerCompilerFlavor+                                                                                                                          ["-threaded"]+                                                                                                                          [],+                                                                                                              otherExtensions = [],+                                                                                                              otherLanguages = [],+                                                                                                              otherModules = [],+                                                                                                              pkgconfigDepends = [],+                                                                                                              profOptions = PerCompilerFlavor+                                                                                                                              []+                                                                                                                              [],+                                                                                                              sharedOptions = PerCompilerFlavor+                                                                                                                                []+                                                                                                                                [],+                                                                                                              staticOptions = PerCompilerFlavor+                                                                                                                                []+                                                                                                                                [],+                                                                                                              targetBuildDepends = [],+                                                                                                              virtualModules = []},+                                                                                           testInterface = TestSuiteUnsupported+                                                                                                             (TestTypeUnknown+                                                                                                                ""+                                                                                                                (mkVersion+                                                                                                                   [])),+                                                                                           testName = UnqualComponentName+                                                                                                        ""}}},+                                                CondBranch+                                                  {condBranchCondition = `Var (PackageFlag (FlagName "portable"))`,+                                                   condBranchIfFalse = Just+                                                                         CondNode+                                                                           {condTreeComponents = [CondBranch+                                                                                                    {condBranchCondition = `CNot (Var (OS Windows))`,+                                                                                                     condBranchIfFalse = Nothing,+                                                                                                     condBranchIfTrue = CondNode+                                                                                                                          {condTreeComponents = [],+                                                                                                                           condTreeConstraints = [Dependency+                                                                                                                                                    (PackageName+                                                                                                                                                       "unix")+                                                                                                                                                    (OrLaterVersion+                                                                                                                                                       (mkVersion+                                                                                                                                                          [2,+                                                                                                                                                           5,+                                                                                                                                                           1]))+                                                                                                                                                    mainLibSet],+                                                                                                                           condTreeData = TestSuite+                                                                                                                                            {testBuildInfo = BuildInfo+                                                                                                                                                               {asmOptions = [],+                                                                                                                                                                asmSources = [],+                                                                                                                                                                autogenIncludes = [],+                                                                                                                                                                autogenModules = [],+                                                                                                                                                                buildToolDepends = [],+                                                                                                                                                                buildTools = [],+                                                                                                                                                                buildable = True,+                                                                                                                                                                cSources = [],+                                                                                                                                                                ccOptions = [],+                                                                                                                                                                cmmOptions = [],+                                                                                                                                                                cmmSources = [],+                                                                                                                                                                cppOptions = [],+                                                                                                                                                                customFieldsBI = [],+                                                                                                                                                                cxxOptions = [],+                                                                                                                                                                cxxSources = [],+                                                                                                                                                                defaultExtensions = [],+                                                                                                                                                                defaultLanguage = Nothing,+                                                                                                                                                                extraBundledLibs = [],+                                                                                                                                                                extraDynLibFlavours = [],+                                                                                                                                                                extraFrameworkDirs = [],+                                                                                                                                                                extraGHCiLibs = [],+                                                                                                                                                                extraLibDirs = [],+                                                                                                                                                                extraLibFlavours = [],+                                                                                                                                                                extraLibs = [],+                                                                                                                                                                frameworks = [],+                                                                                                                                                                hsSourceDirs = [],+                                                                                                                                                                includeDirs = [],+                                                                                                                                                                includes = [],+                                                                                                                                                                installIncludes = [],+                                                                                                                                                                jsSources = [],+                                                                                                                                                                ldOptions = [],+                                                                                                                                                                mixins = [],+                                                                                                                                                                oldExtensions = [],+                                                                                                                                                                options = PerCompilerFlavor+                                                                                                                                                                            []+                                                                                                                                                                            [],+                                                                                                                                                                otherExtensions = [],+                                                                                                                                                                otherLanguages = [],+                                                                                                                                                                otherModules = [],+                                                                                                                                                                pkgconfigDepends = [],+                                                                                                                                                                profOptions = PerCompilerFlavor+                                                                                                                                                                                []+                                                                                                                                                                                [],+                                                                                                                                                                sharedOptions = PerCompilerFlavor+                                                                                                                                                                                  []+                                                                                                                                                                                  [],+                                                                                                                                                                staticOptions = PerCompilerFlavor+                                                                                                                                                                                  []+                                                                                                                                                                                  [],+                                                                                                                                                                targetBuildDepends = [Dependency+                                                                                                                                                                                        (PackageName+                                                                                                                                                                                           "unix")+                                                                                                                                                                                        (OrLaterVersion+                                                                                                                                                                                           (mkVersion+                                                                                                                                                                                              [2,+                                                                                                                                                                                               5,+                                                                                                                                                                                               1]))+                                                                                                                                                                                        mainLibSet],+                                                                                                                                                                virtualModules = []},+                                                                                                                                             testInterface = TestSuiteUnsupported+                                                                                                                                                               (TestTypeUnknown+                                                                                                                                                                  ""+                                                                                                                                                                  (mkVersion+                                                                                                                                                                     [])),+                                                                                                                                             testName = UnqualComponentName+                                                                                                                                                          ""}}}],+                                                                            condTreeConstraints = [],+                                                                            condTreeData = TestSuite+                                                                                             {testBuildInfo = BuildInfo+                                                                                                                {asmOptions = [],+                                                                                                                 asmSources = [],+                                                                                                                 autogenIncludes = [],+                                                                                                                 autogenModules = [],+                                                                                                                 buildToolDepends = [],+                                                                                                                 buildTools = [],+                                                                                                                 buildable = True,+                                                                                                                 cSources = [],+                                                                                                                 ccOptions = [],+                                                                                                                 cmmOptions = [],+                                                                                                                 cmmSources = [],+                                                                                                                 cppOptions = [],+                                                                                                                 customFieldsBI = [],+                                                                                                                 cxxOptions = [],+                                                                                                                 cxxSources = [],+                                                                                                                 defaultExtensions = [],+                                                                                                                 defaultLanguage = Nothing,+                                                                                                                 extraBundledLibs = [],+                                                                                                                 extraDynLibFlavours = [],+                                                                                                                 extraFrameworkDirs = [],+                                                                                                                 extraGHCiLibs = [],+                                                                                                                 extraLibDirs = [],+                                                                                                                 extraLibFlavours = [],+                                                                                                                 extraLibs = [],+                                                                                                                 frameworks = [],+                                                                                                                 hsSourceDirs = [],+                                                                                                                 includeDirs = [],+                                                                                                                 includes = [],+                                                                                                                 installIncludes = [],+                                                                                                                 jsSources = [],+                                                                                                                 ldOptions = [],+                                                                                                                 mixins = [],+                                                                                                                 oldExtensions = [],+                                                                                                                 options = PerCompilerFlavor+                                                                                                                             []+                                                                                                                             [],+                                                                                                                 otherExtensions = [],+                                                                                                                 otherLanguages = [],+                                                                                                                 otherModules = [],+                                                                                                                 pkgconfigDepends = [],+                                                                                                                 profOptions = PerCompilerFlavor+                                                                                                                                 []+                                                                                                                                 [],+                                                                                                                 sharedOptions = PerCompilerFlavor+                                                                                                                                   []+                                                                                                                                   [],+                                                                                                                 staticOptions = PerCompilerFlavor+                                                                                                                                   []+                                                                                                                                   [],+                                                                                                                 targetBuildDepends = [],+                                                                                                                 virtualModules = []},+                                                                                              testInterface = TestSuiteUnsupported+                                                                                                                (TestTypeUnknown+                                                                                                                   ""+                                                                                                                   (mkVersion+                                                                                                                      [])),+                                                                                              testName = UnqualComponentName+                                                                                                           ""}},+                                                   condBranchIfTrue = CondNode+                                                                        {condTreeComponents = [CondBranch+                                                                                                 {condBranchCondition = `Var (Impl GHC (EarlierVersion (mkVersion [7,6])))`,+                                                                                                  condBranchIfFalse = Nothing,+                                                                                                  condBranchIfTrue = CondNode+                                                                                                                       {condTreeComponents = [],+                                                                                                                        condTreeConstraints = [Dependency+                                                                                                                                                 (PackageName+                                                                                                                                                    "old-time")+                                                                                                                                                 (OrLaterVersion+                                                                                                                                                    (mkVersion+                                                                                                                                                       [0]))+                                                                                                                                                 mainLibSet],+                                                                                                                        condTreeData = TestSuite+                                                                                                                                         {testBuildInfo = BuildInfo+                                                                                                                                                            {asmOptions = [],+                                                                                                                                                             asmSources = [],+                                                                                                                                                             autogenIncludes = [],+                                                                                                                                                             autogenModules = [],+                                                                                                                                                             buildToolDepends = [],+                                                                                                                                                             buildTools = [],+                                                                                                                                                             buildable = True,+                                                                                                                                                             cSources = [],+                                                                                                                                                             ccOptions = [],+                                                                                                                                                             cmmOptions = [],+                                                                                                                                                             cmmSources = [],+                                                                                                                                                             cppOptions = [],+                                                                                                                                                             customFieldsBI = [],+                                                                                                                                                             cxxOptions = [],+                                                                                                                                                             cxxSources = [],+                                                                                                                                                             defaultExtensions = [],+                                                                                                                                                             defaultLanguage = Nothing,+                                                                                                                                                             extraBundledLibs = [],+                                                                                                                                                             extraDynLibFlavours = [],+                                                                                                                                                             extraFrameworkDirs = [],+                                                                                                                                                             extraGHCiLibs = [],+                                                                                                                                                             extraLibDirs = [],+                                                                                                                                                             extraLibFlavours = [],+                                                                                                                                                             extraLibs = [],+                                                                                                                                                             frameworks = [],+                                                                                                                                                             hsSourceDirs = [],+                                                                                                                                                             includeDirs = [],+                                                                                                                                                             includes = [],+                                                                                                                                                             installIncludes = [],+                                                                                                                                                             jsSources = [],+                                                                                                                                                             ldOptions = [],+                                                                                                                                                             mixins = [],+                                                                                                                                                             oldExtensions = [],+                                                                                                                                                             options = PerCompilerFlavor+                                                                                                                                                                         []+                                                                                                                                                                         [],+                                                                                                                                                             otherExtensions = [],+                                                                                                                                                             otherLanguages = [],+                                                                                                                                                             otherModules = [],+                                                                                                                                                             pkgconfigDepends = [],+                                                                                                                                                             profOptions = PerCompilerFlavor+                                                                                                                                                                             []+                                                                                                                                                                             [],+                                                                                                                                                             sharedOptions = PerCompilerFlavor+                                                                                                                                                                               []+                                                                                                                                                                               [],+                                                                                                                                                             staticOptions = PerCompilerFlavor+                                                                                                                                                                               []+                                                                                                                                                                               [],+                                                                                                                                                             targetBuildDepends = [Dependency+                                                                                                                                                                                     (PackageName+                                                                                                                                                                                        "old-time")+                                                                                                                                                                                     (OrLaterVersion+                                                                                                                                                                                        (mkVersion+                                                                                                                                                                                           [0]))+                                                                                                                                                                                     mainLibSet],+                                                                                                                                                             virtualModules = []},+                                                                                                                                          testInterface = TestSuiteUnsupported+                                                                                                                                                            (TestTypeUnknown+                                                                                                                                                               ""+                                                                                                                                                               (mkVersion+                                                                                                                                                                  [])),+                                                                                                                                          testName = UnqualComponentName+                                                                                                                                                       ""}}}],+                                                                         condTreeConstraints = [],+                                                                         condTreeData = TestSuite+                                                                                          {testBuildInfo = BuildInfo+                                                                                                             {asmOptions = [],+                                                                                                              asmSources = [],+                                                                                                              autogenIncludes = [],+                                                                                                              autogenModules = [],+                                                                                                              buildToolDepends = [],+                                                                                                              buildTools = [],+                                                                                                              buildable = True,+                                                                                                              cSources = [],+                                                                                                              ccOptions = [],+                                                                                                              cmmOptions = [],+                                                                                                              cmmSources = [],+                                                                                                              cppOptions = ["-DPORTABLE"],+                                                                                                              customFieldsBI = [],+                                                                                                              cxxOptions = [],+                                                                                                              cxxSources = [],+                                                                                                              defaultExtensions = [],+                                                                                                              defaultLanguage = Nothing,+                                                                                                              extraBundledLibs = [],+                                                                                                              extraDynLibFlavours = [],+                                                                                                              extraFrameworkDirs = [],+                                                                                                              extraGHCiLibs = [],+                                                                                                              extraLibDirs = [],+                                                                                                              extraLibFlavours = [],+                                                                                                              extraLibs = [],+                                                                                                              frameworks = [],+                                                                                                              hsSourceDirs = [],+                                                                                                              includeDirs = [],+                                                                                                              includes = [],+                                                                                                              installIncludes = [],+                                                                                                              jsSources = [],+                                                                                                              ldOptions = [],+                                                                                                              mixins = [],+                                                                                                              oldExtensions = [],+                                                                                                              options = PerCompilerFlavor+                                                                                                                          []+                                                                                                                          [],+                                                                                                              otherExtensions = [],+                                                                                                              otherLanguages = [],+                                                                                                              otherModules = [],+                                                                                                              pkgconfigDepends = [],+                                                                                                              profOptions = PerCompilerFlavor+                                                                                                                              []+                                                                                                                              [],+                                                                                                              sharedOptions = PerCompilerFlavor+                                                                                                                                []+                                                                                                                                [],+                                                                                                              staticOptions = PerCompilerFlavor+                                                                                                                                []+                                                                                                                                [],+                                                                                                              targetBuildDepends = [],+                                                                                                              virtualModules = []},+                                                                                           testInterface = TestSuiteUnsupported+                                                                                                             (TestTypeUnknown+                                                                                                                ""+                                                                                                                (mkVersion+                                                                                                                   [])),+                                                                                           testName = UnqualComponentName+                                                                                                        ""}}},+                                                CondBranch+                                                  {condBranchCondition = `CNot (Var (OS Windows))`,+                                                   condBranchIfFalse = Nothing,+                                                   condBranchIfTrue = CondNode+                                                                        {condTreeComponents = [],+                                                                         condTreeConstraints = [Dependency+                                                                                                  (PackageName+                                                                                                     "unix")+                                                                                                  (OrLaterVersion+                                                                                                     (mkVersion+                                                                                                        [0]))+                                                                                                  mainLibSet],+                                                                         condTreeData = TestSuite+                                                                                          {testBuildInfo = BuildInfo+                                                                                                             {asmOptions = [],+                                                                                                              asmSources = [],+                                                                                                              autogenIncludes = [],+                                                                                                              autogenModules = [],+                                                                                                              buildToolDepends = [],+                                                                                                              buildTools = [],+                                                                                                              buildable = True,+                                                                                                              cSources = [],+                                                                                                              ccOptions = [],+                                                                                                              cmmOptions = [],+                                                                                                              cmmSources = [],+                                                                                                              cppOptions = [],+                                                                                                              customFieldsBI = [],+                                                                                                              cxxOptions = [],+                                                                                                              cxxSources = [],+                                                                                                              defaultExtensions = [],+                                                                                                              defaultLanguage = Nothing,+                                                                                                              extraBundledLibs = [],+                                                                                                              extraDynLibFlavours = [],+                                                                                                              extraFrameworkDirs = [],+                                                                                                              extraGHCiLibs = [],+                                                                                                              extraLibDirs = [],+                                                                                                              extraLibFlavours = [],+                                                                                                              extraLibs = [],+                                                                                                              frameworks = [],+                                                                                                              hsSourceDirs = [],+                                                                                                              includeDirs = [],+                                                                                                              includes = [],+                                                                                                              installIncludes = [],+                                                                                                              jsSources = [],+                                                                                                              ldOptions = [],+                                                                                                              mixins = [],+                                                                                                              oldExtensions = [],+                                                                                                              options = PerCompilerFlavor+                                                                                                                          []+                                                                                                                          [],+                                                                                                              otherExtensions = [],+                                                                                                              otherLanguages = [],+                                                                                                              otherModules = [],+                                                                                                              pkgconfigDepends = [],+                                                                                                              profOptions = PerCompilerFlavor+                                                                                                                              []+                                                                                                                              [],+                                                                                                              sharedOptions = PerCompilerFlavor+                                                                                                                                []+                                                                                                                                [],+                                                                                                              staticOptions = PerCompilerFlavor+                                                                                                                                []+                                                                                                                                [],+                                                                                                              targetBuildDepends = [Dependency+                                                                                                                                      (PackageName+                                                                                                                                         "unix")+                                                                                                                                      (OrLaterVersion+                                                                                                                                         (mkVersion+                                                                                                                                            [0]))+                                                                                                                                      mainLibSet],+                                                                                                              virtualModules = []},+                                                                                           testInterface = TestSuiteUnsupported+                                                                                                             (TestTypeUnknown+                                                                                                                ""+                                                                                                                (mkVersion+                                                                                                                   [])),+                                                                                           testName = UnqualComponentName+                                                                                                        ""}}}],+                          condTreeConstraints = [Dependency+                                                   (PackageName "base")+                                                   (IntersectVersionRanges+                                                      (OrLaterVersion (mkVersion [4]))+                                                      (EarlierVersion (mkVersion [5])))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "directory")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "hashable")+                                                   (OrLaterVersion (mkVersion [1, 1, 2, 3]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "binary")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "filepath")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "process")+                                                   (OrLaterVersion (mkVersion [1, 1]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "unordered-containers")+                                                   (OrLaterVersion (mkVersion [0, 2, 1]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "bytestring")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "utf8-string")+                                                   (OrLaterVersion (mkVersion [0, 3]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "time")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "random")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "js-jquery")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "js-flot")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "transformers")+                                                   (OrLaterVersion (mkVersion [0, 2]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "deepseq")+                                                   (OrLaterVersion (mkVersion [1, 1]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "extra")+                                                   (OrLaterVersion (mkVersion [1, 4, 8]))+                                                   mainLibSet,+                                                 Dependency+                                                   (PackageName "QuickCheck")+                                                   (OrLaterVersion (mkVersion [2, 0]))+                                                   mainLibSet],+                          condTreeData = TestSuite+                                           {testBuildInfo = BuildInfo+                                                              {asmOptions = [],+                                                               asmSources = [],+                                                               autogenIncludes = [],+                                                               autogenModules = [],+                                                               buildToolDepends = [],+                                                               buildTools = [],+                                                               buildable = True,+                                                               cSources = [],+                                                               ccOptions = [],+                                                               cmmOptions = [],+                                                               cmmSources = [],+                                                               cppOptions = [],+                                                               customFieldsBI = [],+                                                               cxxOptions = [],+                                                               cxxSources = [],+                                                               defaultExtensions = [],+                                                               defaultLanguage = Just Haskell2010,+                                                               extraBundledLibs = [],+                                                               extraDynLibFlavours = [],+                                                               extraFrameworkDirs = [],+                                                               extraGHCiLibs = [],+                                                               extraLibDirs = [],+                                                               extraLibFlavours = [],+                                                               extraLibs = [],+                                                               frameworks = [],+                                                               hsSourceDirs = ["src"],+                                                               includeDirs = [],+                                                               includes = [],+                                                               installIncludes = [],+                                                               jsSources = [],+                                                               ldOptions = [],+                                                               mixins = [],+                                                               oldExtensions = [],+                                                               options = PerCompilerFlavor+                                                                           ["-main-is",+                                                                            "Test.main",+                                                                            "-rtsopts"]+                                                                           [],+                                                               otherExtensions = [],+                                                               otherLanguages = [],+                                                               otherModules = [ModuleName+                                                                                 "Development.Make.All",+                                                                               ModuleName+                                                                                 "Development.Make.Env",+                                                                               ModuleName+                                                                                 "Development.Make.Parse",+                                                                               ModuleName+                                                                                 "Development.Make.Rules",+                                                                               ModuleName+                                                                                 "Development.Make.Type",+                                                                               ModuleName+                                                                                 "Development.Ninja.All",+                                                                               ModuleName+                                                                                 "Development.Ninja.Env",+                                                                               ModuleName+                                                                                 "Development.Ninja.Lexer",+                                                                               ModuleName+                                                                                 "Development.Ninja.Parse",+                                                                               ModuleName+                                                                                 "Development.Ninja.Type",+                                                                               ModuleName+                                                                                 "Development.Shake",+                                                                               ModuleName+                                                                                 "Development.Shake.Args",+                                                                               ModuleName+                                                                                 "Development.Shake.ByteString",+                                                                               ModuleName+                                                                                 "Development.Shake.Classes",+                                                                               ModuleName+                                                                                 "Development.Shake.CmdOption",+                                                                               ModuleName+                                                                                 "Development.Shake.Command",+                                                                               ModuleName+                                                                                 "Development.Shake.Config",+                                                                               ModuleName+                                                                                 "Development.Shake.Core",+                                                                               ModuleName+                                                                                 "Development.Shake.Database",+                                                                               ModuleName+                                                                                 "Development.Shake.Demo",+                                                                               ModuleName+                                                                                 "Development.Shake.Derived",+                                                                               ModuleName+                                                                                 "Development.Shake.Errors",+                                                                               ModuleName+                                                                                 "Development.Shake.FileInfo",+                                                                               ModuleName+                                                                                 "Development.Shake.FilePath",+                                                                               ModuleName+                                                                                 "Development.Shake.FilePattern",+                                                                               ModuleName+                                                                                 "Development.Shake.Forward",+                                                                               ModuleName+                                                                                 "Development.Shake.Monad",+                                                                               ModuleName+                                                                                 "Development.Shake.Pool",+                                                                               ModuleName+                                                                                 "Development.Shake.Profile",+                                                                               ModuleName+                                                                                 "Development.Shake.Progress",+                                                                               ModuleName+                                                                                 "Development.Shake.Resource",+                                                                               ModuleName+                                                                                 "Development.Shake.Rule",+                                                                               ModuleName+                                                                                 "Development.Shake.Rules.Directory",+                                                                               ModuleName+                                                                                 "Development.Shake.Rules.File",+                                                                               ModuleName+                                                                                 "Development.Shake.Rules.Files",+                                                                               ModuleName+                                                                                 "Development.Shake.Rules.Oracle",+                                                                               ModuleName+                                                                                 "Development.Shake.Rules.OrderOnly",+                                                                               ModuleName+                                                                                 "Development.Shake.Rules.Rerun",+                                                                               ModuleName+                                                                                 "Development.Shake.Shake",+                                                                               ModuleName+                                                                                 "Development.Shake.Special",+                                                                               ModuleName+                                                                                 "Development.Shake.Storage",+                                                                               ModuleName+                                                                                 "Development.Shake.Types",+                                                                               ModuleName+                                                                                 "Development.Shake.Util",+                                                                               ModuleName+                                                                                 "Development.Shake.Value",+                                                                               ModuleName+                                                                                 "General.Bilist",+                                                                               ModuleName+                                                                                 "General.Binary",+                                                                               ModuleName+                                                                                 "General.Cleanup",+                                                                               ModuleName+                                                                                 "General.Concurrent",+                                                                               ModuleName+                                                                                 "General.Extra",+                                                                               ModuleName+                                                                                 "General.FileLock",+                                                                               ModuleName+                                                                                 "General.Intern",+                                                                               ModuleName+                                                                                 "General.Process",+                                                                               ModuleName+                                                                                 "General.String",+                                                                               ModuleName+                                                                                 "General.Template",+                                                                               ModuleName+                                                                                 "General.Timing",+                                                                               ModuleName+                                                                                 "Paths_shake",+                                                                               ModuleName "Run",+                                                                               ModuleName+                                                                                 "Test.Assume",+                                                                               ModuleName+                                                                                 "Test.Basic",+                                                                               ModuleName+                                                                                 "Test.Benchmark",+                                                                               ModuleName "Test.C",+                                                                               ModuleName+                                                                                 "Test.Cache",+                                                                               ModuleName+                                                                                 "Test.Command",+                                                                               ModuleName+                                                                                 "Test.Config",+                                                                               ModuleName+                                                                                 "Test.Digest",+                                                                               ModuleName+                                                                                 "Test.Directory",+                                                                               ModuleName+                                                                                 "Test.Docs",+                                                                               ModuleName+                                                                                 "Test.Errors",+                                                                               ModuleName+                                                                                 "Test.FileLock",+                                                                               ModuleName+                                                                                 "Test.FilePath",+                                                                               ModuleName+                                                                                 "Test.FilePattern",+                                                                               ModuleName+                                                                                 "Test.Files",+                                                                               ModuleName+                                                                                 "Test.Forward",+                                                                               ModuleName+                                                                                 "Test.Journal",+                                                                               ModuleName+                                                                                 "Test.Lint",+                                                                               ModuleName+                                                                                 "Test.Live",+                                                                               ModuleName+                                                                                 "Test.Makefile",+                                                                               ModuleName+                                                                                 "Test.Manual",+                                                                               ModuleName+                                                                                 "Test.Match",+                                                                               ModuleName+                                                                                 "Test.Monad",+                                                                               ModuleName+                                                                                 "Test.Ninja",+                                                                               ModuleName+                                                                                 "Test.Oracle",+                                                                               ModuleName+                                                                                 "Test.OrderOnly",+                                                                               ModuleName+                                                                                 "Test.Parallel",+                                                                               ModuleName+                                                                                 "Test.Pool",+                                                                               ModuleName+                                                                                 "Test.Progress",+                                                                               ModuleName+                                                                                 "Test.Random",+                                                                               ModuleName+                                                                                 "Test.Resources",+                                                                               ModuleName+                                                                                 "Test.Self",+                                                                               ModuleName+                                                                                 "Test.Tar",+                                                                               ModuleName+                                                                                 "Test.Tup",+                                                                               ModuleName+                                                                                 "Test.Type",+                                                                               ModuleName+                                                                                 "Test.Unicode",+                                                                               ModuleName+                                                                                 "Test.Util",+                                                                               ModuleName+                                                                                 "Test.Verbosity",+                                                                               ModuleName+                                                                                 "Test.Version"],+                                                               pkgconfigDepends = [],+                                                               profOptions = PerCompilerFlavor+                                                                               [] [],+                                                               sharedOptions = PerCompilerFlavor+                                                                                 [] [],+                                                               staticOptions = PerCompilerFlavor+                                                                                 [] [],+                                                               targetBuildDepends = [Dependency+                                                                                       (PackageName+                                                                                          "base")+                                                                                       (IntersectVersionRanges+                                                                                          (OrLaterVersion+                                                                                             (mkVersion+                                                                                                [4]))+                                                                                          (EarlierVersion+                                                                                             (mkVersion+                                                                                                [5])))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "directory")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "hashable")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [1,+                                                                                              1,+                                                                                              2,+                                                                                              3]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "binary")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "filepath")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "process")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [1,+                                                                                              1]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "unordered-containers")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0,+                                                                                              2,+                                                                                              1]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "bytestring")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "utf8-string")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0,+                                                                                              3]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "time")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "random")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "js-jquery")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "js-flot")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "transformers")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0,+                                                                                              2]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "deepseq")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [1,+                                                                                              1]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "extra")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [1,+                                                                                              4,+                                                                                              8]))+                                                                                       mainLibSet,+                                                                                     Dependency+                                                                                       (PackageName+                                                                                          "QuickCheck")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [2,+                                                                                              0]))+                                                                                       mainLibSet],+                                                               virtualModules = []},+                                            testInterface = TestSuiteExeV10+                                                              (mkVersion [1, 0]) "Test.hs",+                                            testName = UnqualComponentName ""}}],+   genPackageFlags = [MkPackageFlag+                        {flagDefault = False,+                         flagDescription = "Obtain FileTime using portable functions",+                         flagManual = True,+                         flagName = FlagName "portable"}],+   gpdScannedVersion = Nothing,+   packageDescription = PackageDescription+                          {author = "Neil Mitchell <ndmitchell@gmail.com>",+                           benchmarks = [],+                           bugReports = "https://github.com/ndmitchell/shake/issues",+                           buildTypeRaw = Just Simple,+                           category = "Development, Shake",+                           copyright = "Neil Mitchell 2011-2017",+                           customFieldsPD = [],+                           dataDir = ".",+                           dataFiles = ["html/viz.js",+                                        "html/profile.html",+                                        "html/progress.html",+                                        "html/shake.js",+                                        "docs/manual/build.bat",+                                        "docs/manual/Build.hs",+                                        "docs/manual/build.sh",+                                        "docs/manual/constants.c",+                                        "docs/manual/constants.h",+                                        "docs/manual/main.c"],+                           description = concat+                                           ["Shake is a Haskell library for writing build systems - designed as a\n",+                                            "replacement for @make@. See \"Development.Shake\" for an introduction,\n",+                                            "including an example. Further examples are included in the Cabal tarball,\n",+                                            "under the @Examples@ directory. The homepage contains links to a user\n",+                                            "manual, an academic paper and further information:\n",+                                            "<http://shakebuild.com>\n",+                                            "\n",+                                            "To use Shake the user writes a Haskell program\n",+                                            "that imports \"Development.Shake\", defines some build rules, and calls\n",+                                            "the 'Development.Shake.shakeArgs' function. Thanks to do notation and infix\n",+                                            "operators, a simple Shake build system\n",+                                            "is not too dissimilar from a simple Makefile. However, as build systems\n",+                                            "get more complex, Shake is able to take advantage of the excellent\n",+                                            "abstraction facilities offered by Haskell and easily support much larger\n",+                                            "projects. The Shake library provides all the standard features available in other\n",+                                            "build systems, including automatic parallelism and minimal rebuilds.\n",+                                            "Shake also provides more accurate dependency tracking, including seamless\n",+                                            "support for generated files, and dependencies on system information\n",+                                            "(e.g. compiler version)."],+                           executables = [],+                           extraDocFiles = ["CHANGES.txt", "README.md"],+                           extraSrcFiles = ["src/Test/C/constants.c",+                                            "src/Test/C/constants.h",+                                            "src/Test/C/main.c",+                                            "src/Test/MakeTutor/Makefile",+                                            "src/Test/MakeTutor/hellofunc.c",+                                            "src/Test/MakeTutor/hellomake.c",+                                            "src/Test/MakeTutor/hellomake.h",+                                            "src/Test/Tar/list.txt",+                                            "src/Test/Ninja/*.ninja",+                                            "src/Test/Ninja/subdir/*.ninja",+                                            "src/Test/Ninja/*.output",+                                            "src/Test/Progress/*.prog",+                                            "src/Test/Tup/hello.c",+                                            "src/Test/Tup/root.cfg",+                                            "src/Test/Tup/newmath/root.cfg",+                                            "src/Test/Tup/newmath/square.c",+                                            "src/Test/Tup/newmath/square.h",+                                            "src/Paths.hs",+                                            "docs/Manual.md",+                                            "docs/shake-progress.png"],+                           extraTmpFiles = [],+                           foreignLibs = [],+                           homepage = "http://shakebuild.com",+                           library = Nothing,+                           licenseFiles = ["LICENSE"],+                           licenseRaw = Right BSD3,+                           maintainer = "Neil Mitchell <ndmitchell@gmail.com>",+                           package = PackageIdentifier+                                       {pkgName = PackageName "shake",+                                        pkgVersion = mkVersion [0, 15, 11]},+                           pkgUrl = "",+                           setupBuildInfo = Nothing,+                           sourceRepos = [SourceRepo+                                            {repoBranch = Nothing,+                                             repoKind = RepoHead,+                                             repoLocation = Just+                                                              "https://github.com/ndmitchell/shake.git",+                                             repoModule = Nothing,+                                             repoSubdir = Nothing,+                                             repoTag = Nothing,+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV1_18,+                           stability = "",+                           subLibraries = [],+                           synopsis = "Build system library, like Make, but more accurate dependencies.",+                           testSuites = [],+                           testedWith = [_×_ GHC (ThisVersion (mkVersion [8, 0, 1])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 10, 3])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 8, 4])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 6, 3])),+                                         _×_ GHC (ThisVersion (mkVersion [7, 4, 2]))]}}
tests/ParserTests/regressions/shake.format view
@@ -1,4 +1,4 @@-cabal-version:      >=1.18+cabal-version:      1.18 name:               shake version:            0.15.11 license:            BSD3@@ -95,7 +95,7 @@         Development.Shake.Rule         Development.Shake.Util -    hs-source-dirs:   src+    hs-source-dirs:   . src     other-modules:         Development.Ninja.Env         Development.Ninja.Lexer@@ -143,18 +143,18 @@     default-language: Haskell2010     build-depends:         base >=4.5,-        directory -any,+        directory,         hashable >=1.1.2.3,-        binary -any,-        filepath -any,+        binary,+        filepath,         process >=1.1,         unordered-containers >=0.2.1,-        bytestring -any,+        bytestring,         utf8-string >=0.3,-        time -any,-        random -any,-        js-jquery -any,-        js-flot -any,+        time,+        random,+        js-jquery,+        js-flot,         transformers >=0.2,         extra >=1.4.8,         deepseq >=1.1@@ -163,14 +163,14 @@         cpp-options: -DPORTABLE          if impl(ghc <7.6)-            build-depends: old-time -any+            build-depends: old-time      else         if !os(windows)             build-depends: unix >=2.5.1      if !os(windows)-        build-depends: unix -any+        build-depends: unix  executable shake     main-is:          Run.hs@@ -235,23 +235,23 @@     default-language: Haskell2010     ghc-options:      -main-is Run.main -rtsopts     build-depends:-        base ==4.*,-        directory -any,+        base >=4 && <5,+        directory,         hashable >=1.1.2.3,-        binary -any,-        filepath -any,+        binary,+        filepath,         process >=1.1,         unordered-containers >=0.2.1,-        bytestring -any,+        bytestring,         utf8-string >=0.3,-        time -any,-        random -any,-        js-jquery -any,-        js-flot -any,+        time,+        random,+        js-jquery,+        js-flot,         transformers >=0.2,         extra >=1.4.8,         deepseq >=1.1,-        primitive -any+        primitive      if impl(ghc >=7.8)         ghc-options: -threaded "-with-rtsopts=-I0 -qg -qb"@@ -260,14 +260,14 @@         cpp-options: -DPORTABLE          if impl(ghc <7.6)-            build-depends: old-time -any+            build-depends: old-time      else         if !os(windows)             build-depends: unix >=2.5.1      if !os(windows)-        build-depends: unix -any+        build-depends: unix  test-suite shake-test     type:             exitcode-stdio-1.0@@ -374,19 +374,19 @@     default-language: Haskell2010     ghc-options:      -main-is Test.main -rtsopts     build-depends:-        base ==4.*,-        directory -any,+        base >=4 && <5,+        directory,         hashable >=1.1.2.3,-        binary -any,-        filepath -any,+        binary,+        filepath,         process >=1.1,         unordered-containers >=0.2.1,-        bytestring -any,+        bytestring,         utf8-string >=0.3,-        time -any,-        random -any,-        js-jquery -any,-        js-flot -any,+        time,+        random,+        js-jquery,+        js-flot,         transformers >=0.2,         deepseq >=1.1,         extra >=1.4.8,@@ -402,11 +402,11 @@         cpp-options: -DPORTABLE          if impl(ghc <7.6)-            build-depends: old-time -any+            build-depends: old-time      else         if !os(windows)             build-depends: unix >=2.5.1      if !os(windows)-        build-depends: unix -any+        build-depends: unix
tests/ParserTests/regressions/spdx-1.expr view
@@ -60,6 +60,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -82,12 +83,11 @@                            licenseRaw = Right BSD3,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "spdx"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "spdx", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [2,0]`,+                           specVersion = CabalSpecV2_0,                            stability = "",                            subLibraries = [],                            synopsis = "testing positive parsing of spdx identifiers",
tests/ParserTests/regressions/spdx-2.expr view
@@ -60,6 +60,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -83,12 +84,11 @@                                           (License (ELicense (ELicenseId AGPL_1_0) Nothing)),                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "spdx"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "spdx", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [2,2]`,+                           specVersion = CabalSpecV2_2,                            stability = "",                            subLibraries = [],                            synopsis = "testing positive parsing of spdx identifiers",
tests/ParserTests/regressions/spdx-3.expr view
@@ -60,6 +60,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -83,12 +84,11 @@                                           (License (ELicense (ELicenseId AGPL_1_0_only) Nothing)),                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "spdx"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "spdx", pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [2,4]`,+                           specVersion = CabalSpecV2_4,                            stability = "",                            subLibraries = [],                            synopsis = "testing positive parsing of spdx identifiers",
tests/ParserTests/regressions/th-lift-instances.expr view
@@ -6,45 +6,45 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`+                                               (PackageName "base")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [4,4]`)-                                                  (EarlierVersion `mkVersion [5]`))-                                               (Set.fromList [LMainLibName]),+                                                  (OrLaterVersion (mkVersion [4, 4]))+                                                  (EarlierVersion (mkVersion [5])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "template-haskell"`-                                               (EarlierVersion `mkVersion [2,10]`)-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "template-haskell")+                                               (EarlierVersion (mkVersion [2, 10]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "th-lift"`-                                               AnyVersion-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "th-lift")+                                               (OrLaterVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "containers"`+                                               (PackageName "containers")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [0,4]`)-                                                  (EarlierVersion `mkVersion [0,6]`))-                                               (Set.fromList [LMainLibName]),+                                                  (OrLaterVersion (mkVersion [0, 4]))+                                                  (EarlierVersion (mkVersion [0, 6])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "vector"`+                                               (PackageName "vector")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [0,9]`)-                                                  (EarlierVersion `mkVersion [0,11]`))-                                               (Set.fromList [LMainLibName]),+                                                  (OrLaterVersion (mkVersion [0, 9]))+                                                  (EarlierVersion (mkVersion [0, 11])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "text"`+                                               (PackageName "text")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [0,11]`)-                                                  (EarlierVersion `mkVersion [1,3]`))-                                               (Set.fromList [LMainLibName]),+                                                  (OrLaterVersion (mkVersion [0, 11]))+                                                  (EarlierVersion (mkVersion [1, 3])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "bytestring"`+                                               (PackageName "bytestring")                                                (IntersectVersionRanges-                                                  (OrLaterVersion `mkVersion [0,9]`)-                                                  (EarlierVersion `mkVersion [0,11]`))-                                               (Set.fromList [LMainLibName])],+                                                  (OrLaterVersion (mkVersion [0, 9]))+                                                  (EarlierVersion (mkVersion [0, 11])))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["Instances","TH","Lift"]`],+                                       {exposedModules = [ModuleName "Instances.TH.Lift"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -90,61 +90,76 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [4,4]`)+                                                                                        (mkVersion+                                                                                           [4, 4]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [5]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [5])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "template-haskell"`+                                                                                  (PackageName+                                                                                     "template-haskell")                                                                                   (EarlierVersion-                                                                                     `mkVersion [2,10]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                     (mkVersion+                                                                                        [2, 10]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "th-lift"`-                                                                                  AnyVersion-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                  (PackageName+                                                                                     "th-lift")+                                                                                  (OrLaterVersion+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "containers"`+                                                                                  (PackageName+                                                                                     "containers")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [0,4]`)+                                                                                        (mkVersion+                                                                                           [0, 4]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [0,6]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [0, 6])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "vector"`+                                                                                  (PackageName+                                                                                     "vector")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [0,9]`)+                                                                                        (mkVersion+                                                                                           [0, 9]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [0,11]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [0,+                                                                                            11])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "text"`+                                                                                  (PackageName+                                                                                     "text")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [0,11]`)+                                                                                        (mkVersion+                                                                                           [0, 11]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [1,3]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [1, 3])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "bytestring"`+                                                                                  (PackageName+                                                                                     "bytestring")                                                                                   (IntersectVersionRanges                                                                                      (OrLaterVersion-                                                                                        `mkVersion [0,9]`)+                                                                                        (mkVersion+                                                                                           [0, 9]))                                                                                      (EarlierVersion-                                                                                        `mkVersion [0,11]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                        (mkVersion+                                                                                           [0,+                                                                                            11])))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -153,51 +168,51 @@                                         signatures = []}},    condSubLibraries = [],    condTestSuites = [_×_-                       `UnqualComponentName "tests"`+                       (UnqualComponentName "tests")                        CondNode                          {condTreeComponents = [],                           condTreeConstraints = [Dependency-                                                   `PackageName "base"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "base")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "template-haskell"`-                                                   (EarlierVersion `mkVersion [2,10]`)-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "template-haskell")+                                                   (EarlierVersion (mkVersion [2, 10]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "containers"`+                                                   (PackageName "containers")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [0,4]`)-                                                      (EarlierVersion `mkVersion [0,6]`))-                                                   (Set.fromList [LMainLibName]),+                                                      (OrLaterVersion (mkVersion [0, 4]))+                                                      (EarlierVersion (mkVersion [0, 6])))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "vector"`+                                                   (PackageName "vector")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [0,9]`)-                                                      (EarlierVersion `mkVersion [0,11]`))-                                                   (Set.fromList [LMainLibName]),+                                                      (OrLaterVersion (mkVersion [0, 9]))+                                                      (EarlierVersion (mkVersion [0, 11])))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "text"`+                                                   (PackageName "text")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [0,11]`)-                                                      (EarlierVersion `mkVersion [1,2]`))-                                                   (Set.fromList [LMainLibName]),+                                                      (OrLaterVersion (mkVersion [0, 11]))+                                                      (EarlierVersion (mkVersion [1, 2])))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "bytestring"`+                                                   (PackageName "bytestring")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [0,9]`)-                                                      (EarlierVersion `mkVersion [0,11]`))-                                                   (Set.fromList [LMainLibName]),+                                                      (OrLaterVersion (mkVersion [0, 9]))+                                                      (EarlierVersion (mkVersion [0, 11])))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "th-lift-instances"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "th-lift-instances")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "QuickCheck"`+                                                   (PackageName "QuickCheck")                                                    (IntersectVersionRanges-                                                      (OrLaterVersion `mkVersion [2,6]`)-                                                      (EarlierVersion `mkVersion [2,8]`))-                                                   (Set.fromList [LMainLibName])],+                                                      (OrLaterVersion (mkVersion [2, 6]))+                                                      (EarlierVersion (mkVersion [2, 8])))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],@@ -237,7 +252,7 @@                                                                otherExtensions = [EnableExtension                                                                                     TemplateHaskell],                                                                otherLanguages = [],-                                                               otherModules = [`ModuleName ["Data"]`],+                                                               otherModules = [ModuleName "Data"],                                                                pkgconfigDepends = [],                                                                profOptions = PerCompilerFlavor                                                                                [] [],@@ -246,72 +261,98 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "base"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                       (PackageName+                                                                                          "base")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "template-haskell"`+                                                                                       (PackageName+                                                                                          "template-haskell")                                                                                        (EarlierVersion-                                                                                          `mkVersion [2,10]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                          (mkVersion+                                                                                             [2,+                                                                                              10]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "containers"`+                                                                                       (PackageName+                                                                                          "containers")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [0,4]`)+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 4]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [0,6]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 6])))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "vector"`+                                                                                       (PackageName+                                                                                          "vector")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [0,9]`)+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 9]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [0,11]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 11])))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "text"`+                                                                                       (PackageName+                                                                                          "text")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [0,11]`)+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 11]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [1,2]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                             (mkVersion+                                                                                                [1,+                                                                                                 2])))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "bytestring"`+                                                                                       (PackageName+                                                                                          "bytestring")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [0,9]`)+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 9]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [0,11]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                             (mkVersion+                                                                                                [0,+                                                                                                 11])))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "th-lift-instances"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                       (PackageName+                                                                                          "th-lift-instances")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "QuickCheck"`+                                                                                       (PackageName+                                                                                          "QuickCheck")                                                                                        (IntersectVersionRanges                                                                                           (OrLaterVersion-                                                                                             `mkVersion [2,6]`)+                                                                                             (mkVersion+                                                                                                [2,+                                                                                                 6]))                                                                                           (EarlierVersion-                                                                                             `mkVersion [2,8]`))-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                             (mkVersion+                                                                                                [2,+                                                                                                 8])))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "Main.hs",-                                            testName = `UnqualComponentName ""`}},+                                                              (mkVersion [1, 0]) "Main.hs",+                                            testName = UnqualComponentName ""}},                      _×_-                       `UnqualComponentName "doctests"`+                       (UnqualComponentName "doctests")                        CondNode                          {condTreeComponents = [CondBranch                                                   {condBranchCondition = `Var (Impl GHC (EarlierVersion (mkVersion [7,6,1])))`,@@ -375,24 +416,26 @@                                                                                            testInterface = TestSuiteUnsupported                                                                                                              (TestTypeUnknown                                                                                                                 ""-                                                                                                                `mkVersion []`),-                                                                                           testName = `UnqualComponentName ""`}}}],+                                                                                                                (mkVersion+                                                                                                                   [])),+                                                                                           testName = UnqualComponentName+                                                                                                        ""}}}],                           condTreeConstraints = [Dependency-                                                   `PackageName "base"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "base")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "directory"`-                                                   (OrLaterVersion `mkVersion [1,0]`)-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "directory")+                                                   (OrLaterVersion (mkVersion [1, 0]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "doctest"`-                                                   (OrLaterVersion `mkVersion [0,9,1]`)-                                                   (Set.fromList [LMainLibName]),+                                                   (PackageName "doctest")+                                                   (OrLaterVersion (mkVersion [0, 9, 1]))+                                                   mainLibSet,                                                  Dependency-                                                   `PackageName "filepath"`-                                                   AnyVersion-                                                   (Set.fromList [LMainLibName])],+                                                   (PackageName "filepath")+                                                   (OrLaterVersion (mkVersion [0]))+                                                   mainLibSet],                           condTreeData = TestSuite                                            {testBuildInfo = BuildInfo                                                               {asmOptions = [],@@ -442,32 +485,42 @@                                                                staticOptions = PerCompilerFlavor                                                                                  [] [],                                                                targetBuildDepends = [Dependency-                                                                                       `PackageName "base"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                       (PackageName+                                                                                          "base")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "directory"`+                                                                                       (PackageName+                                                                                          "directory")                                                                                        (OrLaterVersion-                                                                                          `mkVersion [1,0]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                          (mkVersion+                                                                                             [1,+                                                                                              0]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "doctest"`+                                                                                       (PackageName+                                                                                          "doctest")                                                                                        (OrLaterVersion-                                                                                          `mkVersion [0,9,1]`)-                                                                                       (Set.fromList-                                                                                          [LMainLibName]),+                                                                                          (mkVersion+                                                                                             [0,+                                                                                              9,+                                                                                              1]))+                                                                                       mainLibSet,                                                                                      Dependency-                                                                                       `PackageName "filepath"`-                                                                                       AnyVersion-                                                                                       (Set.fromList-                                                                                          [LMainLibName])],+                                                                                       (PackageName+                                                                                          "filepath")+                                                                                       (OrLaterVersion+                                                                                          (mkVersion+                                                                                             [0]))+                                                                                       mainLibSet],                                                                virtualModules = []},                                             testInterface = TestSuiteExeV10-                                                              `mkVersion [1,0]` "doctests.hs",-                                            testName = `UnqualComponentName ""`}}],+                                                              (mkVersion [1, 0]) "doctests.hs",+                                            testName = UnqualComponentName ""}}],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "Benno F\252nfst\252ck",                            benchmarks = [],@@ -496,8 +549,8 @@                            licenseRaw = Right BSD3,                            maintainer = "Benno F\252nfst\252ck <benno.fuenfstueck@gmail.com>",                            package = PackageIdentifier-                                       {pkgName = `PackageName "th-lift-instances"`,-                                        pkgVersion = `mkVersion [0,1,4]`},+                                       {pkgName = PackageName "th-lift-instances",+                                        pkgVersion = mkVersion [0, 1, 4]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [SourceRepo@@ -508,8 +561,8 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [1,10]`),+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV1_10,                            stability = "experimental",                            subLibraries = [],                            synopsis = "Lift instances for template-haskell for common data types.",
tests/ParserTests/regressions/th-lift-instances.format view
@@ -38,7 +38,7 @@     build-depends:         base >=4.4 && <5,         template-haskell <2.10,-        th-lift -any,+        th-lift,         containers >=0.4 && <0.6,         vector >=0.9 && <0.11,         text >=0.11 && <1.3,@@ -52,13 +52,13 @@     default-language: Haskell2010     other-extensions: TemplateHaskell     build-depends:-        base -any,+        base,         template-haskell <2.10,         containers >=0.4 && <0.6,         vector >=0.9 && <0.11,         text >=0.11 && <1.2,         bytestring >=0.9 && <0.11,-        th-lift-instances -any,+        th-lift-instances,         QuickCheck >=2.6 && <2.8  test-suite doctests@@ -68,10 +68,10 @@     default-language: Haskell2010     ghc-options:      -Wall -threaded     build-depends:-        base -any,+        base,         directory >=1.0,         doctest >=0.9.1,-        filepath -any+        filepath      if impl(ghc <7.6.1)         ghc-options: -Werror
tests/ParserTests/regressions/version-sets.expr view
@@ -6,59 +6,59 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "network"`-                                               (MajorBoundVersion `mkVersion [0]`)-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "network")+                                               (MajorBoundVersion (mkVersion [0]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "base"`-                                               (ThisVersion `mkVersion [1]`)-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "base")+                                               (ThisVersion (mkVersion [1]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "base"`-                                               (ThisVersion `mkVersion [1]`)-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "base")+                                               (ThisVersion (mkVersion [1]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "base"`+                                               (PackageName "base")                                                (UnionVersionRanges-                                                  (ThisVersion `mkVersion [1]`)-                                                  (ThisVersion `mkVersion [2]`))-                                               (Set.fromList [LMainLibName]),+                                                  (ThisVersion (mkVersion [1]))+                                                  (ThisVersion (mkVersion [2])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "base"`-                                               (ThisVersion `mkVersion [1,2]`)-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "base")+                                               (ThisVersion (mkVersion [1, 2]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "base"`+                                               (PackageName "base")                                                (UnionVersionRanges-                                                  (ThisVersion `mkVersion [1,2]`)-                                                  (ThisVersion `mkVersion [3,4]`))-                                               (Set.fromList [LMainLibName]),+                                                  (ThisVersion (mkVersion [1, 2]))+                                                  (ThisVersion (mkVersion [3, 4])))+                                               mainLibSet,                                              Dependency-                                               `PackageName "ghc"`+                                               (PackageName "ghc")                                                (UnionVersionRanges-                                                  (ThisVersion `mkVersion [8,6,3]`)+                                                  (ThisVersion (mkVersion [8, 6, 3]))                                                   (UnionVersionRanges-                                                     (ThisVersion `mkVersion [8,4,4]`)+                                                     (ThisVersion (mkVersion [8, 4, 4]))                                                      (UnionVersionRanges-                                                        (ThisVersion `mkVersion [8,2,2]`)+                                                        (ThisVersion (mkVersion [8, 2, 2]))                                                         (UnionVersionRanges-                                                           (ThisVersion `mkVersion [8,0,2]`)+                                                           (ThisVersion (mkVersion [8, 0, 2]))                                                            (UnionVersionRanges-                                                              (ThisVersion `mkVersion [7,10,3]`)+                                                              (ThisVersion (mkVersion [7, 10, 3]))                                                               (UnionVersionRanges-                                                                 (ThisVersion `mkVersion [7,8,4]`)+                                                                 (ThisVersion (mkVersion [7, 8, 4]))                                                                  (UnionVersionRanges                                                                     (ThisVersion-                                                                       `mkVersion [7,6,3]`)+                                                                       (mkVersion [7, 6, 3]))                                                                     (ThisVersion-                                                                       `mkVersion [7,4,2]`))))))))-                                               (Set.fromList [LMainLibName]),+                                                                       (mkVersion [7, 4, 2])))))))))+                                               mainLibSet,                                              Dependency-                                               `PackageName "Cabal"`+                                               (PackageName "Cabal")                                                (UnionVersionRanges-                                                  (MajorBoundVersion `mkVersion [2,4,1,1]`)-                                                  (MajorBoundVersion `mkVersion [2,2,0,0]`))-                                               (Set.fromList [LMainLibName])],+                                                  (MajorBoundVersion (mkVersion [2, 4, 1, 1]))+                                                  (MajorBoundVersion (mkVersion [2, 2, 0, 0])))+                                               mainLibSet],                       condTreeData = Library                                        {exposedModules = [],                                         libBuildInfo = BuildInfo@@ -104,83 +104,123 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "network"`+                                                                                  (PackageName+                                                                                     "network")                                                                                   (MajorBoundVersion-                                                                                     `mkVersion [0]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                     (mkVersion+                                                                                        [0]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (ThisVersion-                                                                                     `mkVersion [1]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                     (mkVersion+                                                                                        [1]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (ThisVersion-                                                                                     `mkVersion [1]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                     (mkVersion+                                                                                        [1]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (UnionVersionRanges                                                                                      (ThisVersion-                                                                                        `mkVersion [1]`)+                                                                                        (mkVersion+                                                                                           [1]))                                                                                      (ThisVersion-                                                                                        `mkVersion [2]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [2])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (ThisVersion-                                                                                     `mkVersion [1,2]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                     (mkVersion+                                                                                        [1, 2]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (UnionVersionRanges                                                                                      (ThisVersion-                                                                                        `mkVersion [1,2]`)+                                                                                        (mkVersion+                                                                                           [1, 2]))                                                                                      (ThisVersion-                                                                                        `mkVersion [3,4]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                        (mkVersion+                                                                                           [3, 4])))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "ghc"`+                                                                                  (PackageName+                                                                                     "ghc")                                                                                   (UnionVersionRanges                                                                                      (ThisVersion-                                                                                        `mkVersion [8,6,3]`)+                                                                                        (mkVersion+                                                                                           [8,+                                                                                            6,+                                                                                            3]))                                                                                      (UnionVersionRanges                                                                                         (ThisVersion-                                                                                           `mkVersion [8,4,4]`)+                                                                                           (mkVersion+                                                                                              [8,+                                                                                               4,+                                                                                               4]))                                                                                         (UnionVersionRanges                                                                                            (ThisVersion-                                                                                              `mkVersion [8,2,2]`)+                                                                                              (mkVersion+                                                                                                 [8,+                                                                                                  2,+                                                                                                  2]))                                                                                            (UnionVersionRanges                                                                                               (ThisVersion-                                                                                                 `mkVersion [8,0,2]`)+                                                                                                 (mkVersion+                                                                                                    [8,+                                                                                                     0,+                                                                                                     2]))                                                                                               (UnionVersionRanges                                                                                                  (ThisVersion-                                                                                                    `mkVersion [7,10,3]`)+                                                                                                    (mkVersion+                                                                                                       [7,+                                                                                                        10,+                                                                                                        3]))                                                                                                  (UnionVersionRanges                                                                                                     (ThisVersion-                                                                                                       `mkVersion [7,8,4]`)+                                                                                                       (mkVersion+                                                                                                          [7,+                                                                                                           8,+                                                                                                           4]))                                                                                                     (UnionVersionRanges                                                                                                        (ThisVersion-                                                                                                          `mkVersion [7,6,3]`)+                                                                                                          (mkVersion+                                                                                                             [7,+                                                                                                              6,+                                                                                                              3]))                                                                                                        (ThisVersion-                                                                                                          `mkVersion [7,4,2]`))))))))-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                                          (mkVersion+                                                                                                             [7,+                                                                                                              4,+                                                                                                              2])))))))))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "Cabal"`+                                                                                  (PackageName+                                                                                     "Cabal")                                                                                   (UnionVersionRanges                                                                                      (MajorBoundVersion-                                                                                        `mkVersion [2,4,1,1]`)+                                                                                        (mkVersion+                                                                                           [2,+                                                                                            4,+                                                                                            1,+                                                                                            1]))                                                                                      (MajorBoundVersion-                                                                                        `mkVersion [2,2,0,0]`))-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                        (mkVersion+                                                                                           [2,+                                                                                            2,+                                                                                            0,+                                                                                            0])))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -190,6 +230,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "",                            benchmarks = [],@@ -212,12 +253,12 @@                            licenseRaw = Left NONE,                            maintainer = "",                            package = PackageIdentifier-                                       {pkgName = `PackageName "version-sets"`,-                                        pkgVersion = `mkVersion [0]`},+                                       {pkgName = PackageName "version-sets",+                                        pkgVersion = mkVersion [0]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [],-                           specVersionRaw = Left `mkVersion [3,0]`,+                           specVersion = CabalSpecV3_0,                            stability = "",                            subLibraries = [],                            synopsis = "version set notation",@@ -225,18 +266,18 @@                            testedWith = [_×_                                            GHC                                            (UnionVersionRanges-                                              (ThisVersion `mkVersion [8,6,3]`)+                                              (ThisVersion (mkVersion [8, 6, 3]))                                               (UnionVersionRanges-                                                 (ThisVersion `mkVersion [8,4,4]`)+                                                 (ThisVersion (mkVersion [8, 4, 4]))                                                  (UnionVersionRanges-                                                    (ThisVersion `mkVersion [8,2,2]`)+                                                    (ThisVersion (mkVersion [8, 2, 2]))                                                     (UnionVersionRanges-                                                       (ThisVersion `mkVersion [8,0,2]`)+                                                       (ThisVersion (mkVersion [8, 0, 2]))                                                        (UnionVersionRanges-                                                          (ThisVersion `mkVersion [7,10,3]`)+                                                          (ThisVersion (mkVersion [7, 10, 3]))                                                           (UnionVersionRanges-                                                             (ThisVersion `mkVersion [7,8,4]`)+                                                             (ThisVersion (mkVersion [7, 8, 4]))                                                              (UnionVersionRanges-                                                                (ThisVersion `mkVersion [7,6,3]`)+                                                                (ThisVersion (mkVersion [7, 6, 3]))                                                                 (ThisVersion-                                                                   `mkVersion [7,4,2]`))))))))]}}+                                                                   (mkVersion [7, 4, 2])))))))))]}}
tests/ParserTests/regressions/wl-pprint-indef.expr view
@@ -1,21 +1,21 @@ GenericPackageDescription   {condBenchmarks = [],    condExecutables = [_×_-                        `UnqualComponentName "wl-pprint-string-example"`+                        (UnqualComponentName "wl-pprint-string-example")                         CondNode                           {condTreeComponents = [],                            condTreeConstraints = [Dependency-                                                    `PackageName "base"`-                                                    (EarlierVersion `mkVersion [5]`)-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "base")+                                                    (EarlierVersion (mkVersion [5]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "str-string"`-                                                    (OrLaterVersion `mkVersion [0,1,0,0]`)-                                                    (Set.fromList [LMainLibName]),+                                                    (PackageName "str-string")+                                                    (OrLaterVersion (mkVersion [0, 1, 0, 0]))+                                                    mainLibSet,                                                   Dependency-                                                    `PackageName "wl-pprint-indef"`-                                                    AnyVersion-                                                    (Set.fromList [LMainLibName])],+                                                    (PackageName "wl-pprint-indef")+                                                    (OrLaterVersion (mkVersion [0]))+                                                    mainLibSet],                            condTreeData = Executable                                             {buildInfo = BuildInfo                                                            {asmOptions = [],@@ -54,30 +54,39 @@                                                             options = PerCompilerFlavor [] [],                                                             otherExtensions = [],                                                             otherLanguages = [],-                                                            otherModules = [`ModuleName ["StringImpl"]`],+                                                            otherModules = [ModuleName+                                                                              "StringImpl"],                                                             pkgconfigDepends = [],                                                             profOptions = PerCompilerFlavor [] [],                                                             sharedOptions = PerCompilerFlavor [] [],                                                             staticOptions = PerCompilerFlavor [] [],                                                             targetBuildDepends = [Dependency-                                                                                    `PackageName "base"`+                                                                                    (PackageName+                                                                                       "base")                                                                                     (EarlierVersion-                                                                                       `mkVersion [5]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                       (mkVersion+                                                                                          [5]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "str-string"`+                                                                                    (PackageName+                                                                                       "str-string")                                                                                     (OrLaterVersion-                                                                                       `mkVersion [0,1,0,0]`)-                                                                                    (Set.fromList-                                                                                       [LMainLibName]),+                                                                                       (mkVersion+                                                                                          [0,+                                                                                           1,+                                                                                           0,+                                                                                           0]))+                                                                                    mainLibSet,                                                                                   Dependency-                                                                                    `PackageName "wl-pprint-indef"`-                                                                                    AnyVersion-                                                                                    (Set.fromList-                                                                                       [LMainLibName])],+                                                                                    (PackageName+                                                                                       "wl-pprint-indef")+                                                                                    (OrLaterVersion+                                                                                       (mkVersion+                                                                                          [0]))+                                                                                    mainLibSet],                                                             virtualModules = []},-                                             exeName = `UnqualComponentName "wl-pprint-string-example"`,+                                             exeName = UnqualComponentName+                                                         "wl-pprint-string-example",                                              exeScope = ExecutablePublic,                                              modulePath = "Main.hs"}}],    condForeignLibs = [],@@ -85,15 +94,15 @@                    CondNode                      {condTreeComponents = [],                       condTreeConstraints = [Dependency-                                               `PackageName "base"`-                                               (EarlierVersion `mkVersion [5]`)-                                               (Set.fromList [LMainLibName]),+                                               (PackageName "base")+                                               (EarlierVersion (mkVersion [5]))+                                               mainLibSet,                                              Dependency-                                               `PackageName "str-sig"`-                                               (OrLaterVersion `mkVersion [0,1,0,0]`)-                                               (Set.fromList [LMainLibName])],+                                               (PackageName "str-sig")+                                               (OrLaterVersion (mkVersion [0, 1, 0, 0]))+                                               mainLibSet],                       condTreeData = Library-                                       {exposedModules = [`ModuleName ["Text","PrettyPrint","Leijen"]`],+                                       {exposedModules = [ModuleName "Text.PrettyPrint.Leijen"],                                         libBuildInfo = BuildInfo                                                          {asmOptions = [],                                                           asmSources = [],@@ -137,17 +146,22 @@                                                           sharedOptions = PerCompilerFlavor [] [],                                                           staticOptions = PerCompilerFlavor [] [],                                                           targetBuildDepends = [Dependency-                                                                                  `PackageName "base"`+                                                                                  (PackageName+                                                                                     "base")                                                                                   (EarlierVersion-                                                                                     `mkVersion [5]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName]),+                                                                                     (mkVersion+                                                                                        [5]))+                                                                                  mainLibSet,                                                                                 Dependency-                                                                                  `PackageName "str-sig"`+                                                                                  (PackageName+                                                                                     "str-sig")                                                                                   (OrLaterVersion-                                                                                     `mkVersion [0,1,0,0]`)-                                                                                  (Set.fromList-                                                                                     [LMainLibName])],+                                                                                     (mkVersion+                                                                                        [0,+                                                                                         1,+                                                                                         0,+                                                                                         0]))+                                                                                  mainLibSet],                                                           virtualModules = []},                                         libExposed = True,                                         libName = LMainLibName,@@ -157,6 +171,7 @@    condSubLibraries = [],    condTestSuites = [],    genPackageFlags = [],+   gpdScannedVersion = Nothing,    packageDescription = PackageDescription                           {author = "Daan Leijen",                            benchmarks = [],@@ -182,8 +197,8 @@                            licenseRaw = Right BSD3,                            maintainer = "Noam Lewis <jones.noamle@gmail.com>",                            package = PackageIdentifier-                                       {pkgName = `PackageName "wl-pprint-indef"`,-                                        pkgVersion = `mkVersion [1,2]`},+                                       {pkgName = PackageName "wl-pprint-indef",+                                        pkgVersion = mkVersion [1, 2]},                            pkgUrl = "",                            setupBuildInfo = Nothing,                            sourceRepos = [SourceRepo@@ -194,8 +209,8 @@                                              repoModule = Nothing,                                              repoSubdir = Nothing,                                              repoTag = Nothing,-                                             repoType = Just Git}],-                           specVersionRaw = Right (OrLaterVersion `mkVersion [1,6]`),+                                             repoType = Just (KnownRepoType Git)}],+                           specVersion = CabalSpecV1_6,                            stability = "",                            subLibraries = [],                            synopsis = "The Wadler/Leijen Pretty Printer",
tests/ParserTests/regressions/wl-pprint-indef.format view
@@ -34,4 +34,4 @@     build-depends:         base <5,         str-string >=0.1.0.0,-        wl-pprint-indef -any+        wl-pprint-indef
tests/ParserTests/warnings/bom.cabal view
@@ -1,6 +1,6 @@ name: bom version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  library     build-depends: base >= 4.9 && <4.10
tests/ParserTests/warnings/bool.cabal view
@@ -1,6 +1,6 @@ name: bool version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  flag foo   manual: true
tests/ParserTests/warnings/deprecatedfield.cabal view
@@ -1,6 +1,6 @@ name: deprecatedfield version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  library     build-depends: base >= 4.9 && <4.10
tests/ParserTests/warnings/doubledash.cabal view
@@ -1,6 +1,6 @@ name: bool version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8 extra-source-files:   README.md -- we include it 
tests/ParserTests/warnings/multiplesingular.cabal view
@@ -1,7 +1,7 @@ name: multiplesingular name: multiplesingular2 version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  library     build-depends: base >= 4.9 && <4.10
tests/ParserTests/warnings/nbsp.cabal view
@@ -1,6 +1,6 @@ name: nbsp version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  library     build-depends: base >= 4.9 && <4.10
tests/ParserTests/warnings/newsyntax.cabal view
@@ -2,5 +2,5 @@ version: 1  library-    build-depends: base >= 4.9 && <4.10+    build-depends: base     hs-source-dirs: .
tests/ParserTests/warnings/oldsyntax.cabal view
@@ -1,6 +1,6 @@ name: oldsyntax version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  build-depends: base >= 4.9 && <4.10 hs-source-dirs: .
+ tests/ParserTests/warnings/operator.cabal view
@@ -0,0 +1,7 @@+name: version-operator+version: 1+cabal-version: >= 1.6++library+    build-depends: base >= 4.9 && <4.10+    hs-source-dirs: .
+ tests/ParserTests/warnings/specversion-a.cabal view
@@ -0,0 +1,7 @@+name:    specversion+version: 1+cabal-version: >= 1.12++library+    build-depends: base >= 4.9 && <4.10+    hs-source-dirs: .
+ tests/ParserTests/warnings/specversion-b.cabal view
@@ -0,0 +1,7 @@+name:    specversion+version: 1+cabal-version: >= 1.10 && <1.11++library+    build-depends: base >= 4.9 && <4.10+    hs-source-dirs: .
+ tests/ParserTests/warnings/specversion-c.cabal view
@@ -0,0 +1,7 @@+name:    specversion+version: 1+cabal-version: 1.10++library+    build-depends: base >= 4.9 && <4.10+    hs-source-dirs: .
tests/ParserTests/warnings/subsection.cabal view
@@ -1,6 +1,6 @@ name: subsection version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  library     build-depends: base >= 4.9 && <4.10
tests/ParserTests/warnings/tab.cabal view
@@ -1,6 +1,6 @@ name: tab version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  library 		 	build-depends: 		{ 	 base >= 4.9 	&& <4.10 } 
tests/ParserTests/warnings/trailingfield.cabal view
@@ -1,6 +1,6 @@ name: trailingfield version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  library     build-depends: base >= 4.9 && <4.10
tests/ParserTests/warnings/unknownfield.cabal view
@@ -1,6 +1,6 @@ name: unknownfield version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  library     build-depends: base >= 4.9 && <4.10
tests/ParserTests/warnings/unknownsection.cabal view
@@ -1,6 +1,6 @@ name: unknownsection version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  library     build-depends: base >= 4.9 && <4.10
tests/ParserTests/warnings/utf8.cabal view
@@ -1,7 +1,7 @@ name: utf8 author: Oleg Grönroos version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  library     build-depends: base >= 4.9 && <4.10
tests/ParserTests/warnings/versiontag.cabal view
@@ -1,6 +1,6 @@ name: versiontag version: 1-cabal-version: >= 1.6+cabal-version: >= 1.8  library     build-depends: base >= 4.9 && <4.10-rc1
+ tests/ParserTests/warnings/wildcard.cabal view
@@ -0,0 +1,7 @@+name: version-wildcard+version: 1+cabal-version: >= 1.4++library+    build-depends: base == 4.*+    hs-source-dirs: .
tests/UnitTests.hs view
@@ -21,6 +21,7 @@ import qualified UnitTests.Distribution.Simple.Program.Internal import qualified UnitTests.Distribution.Simple.Utils import qualified UnitTests.Distribution.System+import qualified UnitTests.Distribution.Utils.CharSet import qualified UnitTests.Distribution.Utils.Generic import qualified UnitTests.Distribution.Utils.NubList import qualified UnitTests.Distribution.Utils.ShortText@@ -28,6 +29,8 @@ import qualified UnitTests.Distribution.Version (versionTests) import qualified UnitTests.Distribution.PkgconfigVersion (pkgconfigVersionTests) import qualified UnitTests.Distribution.SPDX (spdxTests)+import qualified UnitTests.Distribution.Described+import qualified UnitTests.Distribution.CabalSpecVersion import qualified UnitTests.Distribution.Types.GenericPackageDescription  tests :: Int -> TestTree@@ -68,7 +71,10 @@         UnitTests.Distribution.PkgconfigVersion.pkgconfigVersionTests     , testGroup "Distribution.SPDX"         UnitTests.Distribution.SPDX.spdxTests+    , UnitTests.Distribution.Utils.CharSet.tests     , UnitTests.Distribution.Utils.Structured.tests+    , UnitTests.Distribution.Described.tests+    , UnitTests.Distribution.CabalSpecVersion.tests     ]  extraOptions :: [OptionDescription]
+ tests/UnitTests/Distribution/CabalSpecVersion.hs view
@@ -0,0 +1,42 @@+{-# LANGUAGE CPP #-}+{-# OPTIONS_GHC -fno-warn-deprecations #-}+module UnitTests.Distribution.CabalSpecVersion (tests) where++import Distribution.Compat.Prelude.Internal+import Prelude ()++import Distribution.CabalSpecVersion+import Distribution.FieldGrammar.Newtypes (SpecVersion (..))+import Distribution.Parsec                (eitherParsec)+import Distribution.Pretty                (prettyShow)++import Test.Tasty+import Test.Tasty.QuickCheck++-- instances+import Test.QuickCheck.Instances.Cabal ()++tests :: TestTree+tests = testGroup "Distribution.CabalSpecVersion"+    [ testProperty "roundtrip" propRoundtrip+    , testProperty "fromVersionDigits . toVersionDigits = Just" propViaVersionDigits+    ]+  where+    -- we test roundtrip here,+    -- because Described instance is a small simplification.+    propRoundtrip :: SpecVersion -> Property+    propRoundtrip x = counterexample (show (res, str)) $ case res of+        Right y -> x == y+        Left _  -> False+      where+        str = prettyShow x+        res = eitherParsec str++    propViaVersionDigits :: CabalSpecVersion -> Property+    propViaVersionDigits csv =+        counterexample (show digits) $+        lhs === rhs+      where+        digits = cabalSpecToVersionDigits csv+        lhs    = cabalSpecFromVersionDigits digits+        rhs    = Just csv
tests/UnitTests/Distribution/Compat/CreatePipe.hs view
@@ -1,19 +1,56 @@ module UnitTests.Distribution.Compat.CreatePipe (tests) where +import Control.Concurrent.Async (async, wait)+import Control.DeepSeq          (force)+import Control.Exception        (evaluate)+import System.IO                (hClose, hGetContents, hPutStr, hSetEncoding, localeEncoding)+import Test.Tasty               (TestTree)+import Test.Tasty.HUnit         (Assertion, assertEqual, testCase)++import qualified Data.ByteString as BS+ import Distribution.Compat.CreatePipe-import System.IO (hClose, hGetContents, hPutStr, hSetEncoding, localeEncoding)-import Test.Tasty-import Test.Tasty.HUnit  tests :: [TestTree]-tests = [testCase "Locale Encoding" case_Locale_Encoding]+tests =+    [ testCase "Locale Encoding" case_Locale_Encoding+    , testCase "Binary ByteStrings are not affected" case_ByteString+    ]  case_Locale_Encoding :: Assertion case_Locale_Encoding = do-    let str = "\0252"+    let str = "\0252foobar"     (r, w) <- createPipe     hSetEncoding w localeEncoding-    out <- hGetContents r-    hPutStr w str-    hClose w+    hSetEncoding r localeEncoding++    ra <- async $ do+        out <- hGetContents r+        evaluate (force out)++    wa <- async $ do+        hPutStr w str+        hClose w++    out <- wait ra+    wait wa+     assertEqual "createPipe should support Unicode roundtripping" str out++case_ByteString :: Assertion+case_ByteString = do+    let bs = BS.pack[ 1..255]+    (r, w) <- createPipe++    ra <- async $ do+        out <- BS.hGetContents r+        evaluate (force out)++    wa <- async $ do+        BS.hPutStr w bs+        hClose w++    out <- wait ra+    wait wa++    assertEqual "createPipe should support Unicode roundtripping" bs out
+ tests/UnitTests/Distribution/Described.hs view
@@ -0,0 +1,49 @@+{-# LANGUAGE OverloadedStrings   #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# OPTIONS_GHC -fno-warn-deprecations #-}+module UnitTests.Distribution.Described where++import Distribution.Compat.Prelude.Internal+import Prelude ()++import Distribution.Described (testDescribed)+import Test.Tasty             (TestTree, testGroup)++import Distribution.Compiler                       (CompilerFlavor, CompilerId)+import Distribution.ModuleName                     (ModuleName)+import Distribution.System                         (Arch, OS)+import Distribution.Types.Dependency               (Dependency)+import Distribution.Types.Flag                     (FlagAssignment, FlagName)+import Distribution.Types.IncludeRenaming          (IncludeRenaming)+import Distribution.Types.Mixin                    (Mixin)+import Distribution.Types.ModuleRenaming           (ModuleRenaming)+import Distribution.Types.PackageId                (PackageIdentifier)+import Distribution.Types.PackageName              (PackageName)+import Distribution.Types.PackageVersionConstraint (PackageVersionConstraint)+import Distribution.Types.Version                  (Version)+import Distribution.Types.VersionRange             (VersionRange)+import Distribution.Verbosity                      (Verbosity)++-- instances+import Test.QuickCheck.Instances.Cabal ()++tests :: TestTree+tests = testGroup "Described"+    [ testDescribed (Proxy :: Proxy Dependency)+    , testDescribed (Proxy :: Proxy PackageName)+    , testDescribed (Proxy :: Proxy PackageIdentifier)+    , testDescribed (Proxy :: Proxy PackageVersionConstraint)+    , testDescribed (Proxy :: Proxy Version)+    , testDescribed (Proxy :: Proxy VersionRange)+    , testDescribed (Proxy :: Proxy FlagName)+    , testDescribed (Proxy :: Proxy FlagAssignment)+    , testDescribed (Proxy :: Proxy ModuleName)+    , testDescribed (Proxy :: Proxy OS)+    , testDescribed (Proxy :: Proxy Arch)+    , testDescribed (Proxy :: Proxy CompilerFlavor)+    , testDescribed (Proxy :: Proxy CompilerId)+    , testDescribed (Proxy :: Proxy ModuleRenaming)+    , testDescribed (Proxy :: Proxy IncludeRenaming)+    , testDescribed (Proxy :: Proxy Mixin)+    , testDescribed (Proxy :: Proxy Verbosity)+    ]
tests/UnitTests/Distribution/PkgconfigVersion.hs view
@@ -1,23 +1,16 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE StandaloneDeriving #-}-{-# OPTIONS_GHC -fno-warn-orphans-                -fno-warn-deprecations-                -fno-warn-incomplete-patterns #-} module UnitTests.Distribution.PkgconfigVersion (pkgconfigVersionTests) where -import Distribution.Compat.Prelude.Internal-import Prelude ()- import Test.Tasty import Test.Tasty.QuickCheck -import qualified Data.ByteString.Char8 as BS8- import Distribution.Parsec                      (eitherParsec) import Distribution.Pretty-import Distribution.Types.PkgconfigVersion import Distribution.Types.PkgconfigVersionRange +import Test.QuickCheck.Instances.Cabal ()+ pkgconfigVersionTests :: [TestTree] pkgconfigVersionTests =     [ testProperty "simpleParsec . prettyShow = Just" prop_parse_disp@@ -26,47 +19,3 @@ prop_parse_disp :: PkgconfigVersionRange -> Property prop_parse_disp vr = counterexample (show (prettyShow vr)) $     eitherParsec (prettyShow vr) === Right vr------------------------------------------------------------------------------------ Arbitrary instances----------------------------------------------------------------------------------instance Arbitrary PkgconfigVersion where-    arbitrary = PkgconfigVersion . BS8.pack . dropDash . concat <$> listOf1 elems where-        elems = frequency-            [ (2, pure ".")-            , (1, pure "-")-            , (5, listOf1 $ elements ['0' .. '9'])-            , (1, listOf1 $ elements ['A' .. 'Z'])-            , (1, listOf1 $ elements ['a' .. 'z'])-            ]--        -- disallow versions starting with dash-        dropDash = notEmpty . dropWhile (== '-')-        notEmpty x-            | null x    = "0"-            | otherwise = x--instance Arbitrary PkgconfigVersionRange where-  arbitrary = sized verRangeExp-    where-      verRangeExp n = frequency $-        [ (2, return PcAnyVersion)-        , (1, liftM PcThisVersion arbitrary)-        , (1, liftM PcLaterVersion arbitrary)-        , (1, liftM PcOrLaterVersion arbitrary)-        , (1, liftM orLaterVersion' arbitrary)-        , (1, liftM PcEarlierVersion arbitrary)-        , (1, liftM PcOrEarlierVersion arbitrary)-        , (1, liftM orEarlierVersion' arbitrary)-        ] ++ if n == 0 then [] else-        [ (2, liftM2 PcUnionVersionRanges     verRangeExp2 verRangeExp2)-        , (2, liftM2 PcIntersectVersionRanges verRangeExp2 verRangeExp2)-        ]-        where-          verRangeExp2 = verRangeExp (n `div` 2)--      orLaterVersion'   v =-        PcUnionVersionRanges (PcLaterVersion v)   (PcThisVersion v)-      orEarlierVersion' v =-        PcUnionVersionRanges (PcEarlierVersion v) (PcThisVersion v)
tests/UnitTests/Distribution/SPDX.hs view
@@ -1,5 +1,5 @@ {-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-deprecations #-}+{-# OPTIONS_GHC -fno-warn-deprecations #-} module UnitTests.Distribution.SPDX (spdxTests) where  import Distribution.Compat.Prelude.Internal@@ -20,6 +20,8 @@ import GHC.Generics (to, from) #endif +import Test.QuickCheck.Instances.Cabal ()+ spdxTests :: [TestTree] spdxTests =     [ testProperty "LicenseId roundtrip" licenseIdRoundtrip@@ -176,46 +178,3 @@ shouldRejectProp :: Property shouldRejectProp = conjoin $     map (\l -> counterexample (prettyShow l) (not $ isAcceptableLicense l)) shouldReject------------------------------------------------------------------------------------ Instances----------------------------------------------------------------------------------instance Arbitrary LicenseId where-    arbitrary = elements $ licenseIdList LicenseListVersion_3_6--instance Arbitrary LicenseExceptionId where-    arbitrary = elements $ licenseExceptionIdList LicenseListVersion_3_6--instance Arbitrary LicenseRef where-    arbitrary = mkLicenseRef' <$> ids' <*> ids-      where-        ids = listOf1 $ elements $ ['a'..'z'] ++ ['A' .. 'Z'] ++ ['0'..'9'] ++ "_-"-        ids' = oneof [ pure Nothing, Just <$> ids ]--instance Arbitrary SimpleLicenseExpression where-    arbitrary = oneof-        [ ELicenseId <$> arbitrary-        , ELicenseIdPlus <$> arbitrary-        , ELicenseRef <$> arbitrary-        ]--instance Arbitrary LicenseExpression where-    arbitrary = sized arb-      where-        arb n-            | n <= 0     = ELicense <$> arbitrary <*> pure Nothing-            | otherwise = oneof-                [ ELicense <$> arbitrary <*> arbitrary-                , EAnd <$> arbA <*> arbB-                , EOr <$> arbA <*> arbB-                ]-              where-                m = n `div` 2-                arbA = arb m-                arbB = arb (n - m)--    shrink (EAnd a b) = a : b : map (uncurry EAnd) (shrink (a, b))-    shrink (EOr a b)  = a : b : map (uncurry EOr) (shrink (a, b))-    shrink _          = []-
tests/UnitTests/Distribution/Simple/Glob.hs view
@@ -9,7 +9,7 @@ import Data.Maybe (mapMaybe) import Distribution.Simple.Glob import qualified Distribution.Verbosity as Verbosity-import Distribution.Version+import Distribution.CabalSpecVersion import System.Directory (createDirectoryIfMissing) import System.FilePath ((</>), splitFileName, normalise) import System.IO.Temp (withSystemTempDirectory)@@ -49,7 +49,7 @@   createDirectoryIfMissing True (dir </> dir')   writeFile (dir </> dir' </> name) $ "This is " ++ filename -compatibilityTests :: Version -> [TestTree]+compatibilityTests :: CabalSpecVersion -> [TestTree] compatibilityTests version =   [ testCase "literal match" $       testMatches "foo/a" [GlobMatch "foo/a"]@@ -91,7 +91,7 @@ -- -- TODO: Work out how to construct the sample tree once for all tests, -- rather than once for each test.-testMatchesVersion :: Version -> FilePath -> [GlobResult FilePath] -> Assertion+testMatchesVersion :: CabalSpecVersion -> FilePath -> [GlobResult FilePath] -> Assertion testMatchesVersion version pat expected = do   globPat <- case parseFileGlob version pat of     Left _ -> assertFailure "Couldn't compile the pattern."@@ -111,7 +111,7 @@         unless (isEqual actual expected) $           assertFailure $ "Unexpected result (impure matcher): " ++ show actual -testFailParseVersion :: Version -> FilePath -> GlobSyntaxError -> Assertion+testFailParseVersion :: CabalSpecVersion -> FilePath -> GlobSyntaxError -> Assertion testFailParseVersion version pat expected =   case parseFileGlob version pat of     Left err -> unless (expected == err) $@@ -121,7 +121,7 @@ globstarTests :: [TestTree] globstarTests =   [ testCase "fails to parse on early spec version" $-      testFailParseVersion (mkVersion [2,2]) "**/*.html" VersionDoesNotSupportGlobStar+      testFailParseVersion CabalSpecV2_2 "**/*.html" VersionDoesNotSupportGlobStar   , testCase "out-of-place double star" $       testFailParse "blah/**/blah/*.foo" StarInDirectory   , testCase "multiple double star" $@@ -134,13 +134,13 @@       testMatches "foo/**/*.html" [GlobMatch "foo/a.html", GlobMatch "foo/b.html", GlobMatch "foo/bar/a.html", GlobMatch "foo/bar/b.html"]   ]   where-    testFailParse = testFailParseVersion (mkVersion [2,4])-    testMatches = testMatchesVersion (mkVersion [2,4])+    testFailParse = testFailParseVersion CabalSpecV2_4+    testMatches = testMatchesVersion CabalSpecV2_4  multiDotTests :: [TestTree] multiDotTests =   [ testCase "pre-2.4 single extension not matching multiple" $-      testMatchesVersion (mkVersion [2,2]) "foo/*.gz" [GlobWarnMultiDot "foo/a.html.gz", GlobWarnMultiDot "foo/a.tex.gz", GlobWarnMultiDot "foo/b.html.gz", GlobMatch "foo/x.gz"]+      testMatchesVersion CabalSpecV2_2 "foo/*.gz" [GlobWarnMultiDot "foo/a.html.gz", GlobWarnMultiDot "foo/a.tex.gz", GlobWarnMultiDot "foo/b.html.gz", GlobMatch "foo/x.gz"]   , testCase "doesn't match literal" $       testMatches "foo/a.tex" [GlobMatch "foo/a.tex"]   , testCase "works" $@@ -149,16 +149,16 @@       testMatches "foo/**/*.gz" [GlobMatch "foo/a.html.gz", GlobMatch "foo/a.tex.gz", GlobMatch "foo/b.html.gz", GlobMatch "foo/x.gz", GlobMatch "foo/bar/a.html.gz", GlobMatch "foo/bar/a.tex.gz", GlobMatch "foo/bar/b.html.gz"]   ]   where-    testMatches = testMatchesVersion (mkVersion [2,4])+    testMatches = testMatchesVersion CabalSpecV2_4  tests :: [TestTree] tests =   [ testGroup "pre-2.4 compatibility" $-      compatibilityTests (mkVersion [2,2])+      compatibilityTests CabalSpecV2_2   , testGroup "post-2.4 compatibility" $-      compatibilityTests (mkVersion [2,4])+      compatibilityTests CabalSpecV2_4   , testGroup "globstar" globstarTests   , testCase "pre-1.6 rejects globbing" $-      testFailParseVersion (mkVersion [1,4]) "foo/*.bar" VersionDoesNotSupportGlob+      testFailParseVersion CabalSpecV1_4 "foo/*.bar" VersionDoesNotSupportGlob   , testGroup "multi-dot globbing" multiDotTests   ]
tests/UnitTests/Distribution/Simple/Program/GHC.hs view
@@ -1,12 +1,12 @@ module UnitTests.Distribution.Simple.Program.GHC (tests) where -import Test.Tasty       (TestTree, testGroup)-import Test.Tasty.HUnit import Data.Algorithm.Diff (PolyDiff (..), getDiff)+import Test.Tasty          (TestTree, testGroup)+import Test.Tasty.HUnit -import Distribution.Simple.Program.GHC (normaliseGhcArgs) import Distribution.PackageDescription (emptyPackageDescription)-import Distribution.Version (mkVersion)+import Distribution.Simple.Program.GHC (normaliseGhcArgs)+import Distribution.Version            (mkVersion)  tests :: TestTree tests = testGroup "Distribution.Simple.Program.GHC"@@ -19,6 +19,7 @@                     options_8_8_all              assertListEquals flags options_8_8_affects+         , testCase "options added in GHC-8.10" $ do             let flags :: [String]                 flags = normaliseGhcArgs@@ -27,6 +28,15 @@                     options_8_10_all              assertListEquals flags options_8_10_affects++        , testCase "options added in GHC-9.0" $ do+            let flags :: [String]+                flags = normaliseGhcArgs+                    (Just $ mkVersion [9,0,1])+                    emptyPackageDescription+                    options_9_0_all++            assertListEquals flags options_9_0_affects         ]     ] @@ -139,4 +149,24 @@     , "-fplugin-trustworthy"     , "-include-cpp-deps"     , "-optcxx"+    ]++-------------------------------------------------------------------------------+-- GHC-9.0+-------------------------------------------------------------------------------++options_9_0_all :: [String]+options_9_0_all =+    [ "-ddump-cmm-opt"+    , "-ddump-cpranal"+    , "-ddump-cpr-signatures"+    , "-ddump-hie"+    -- NOTE: we filter out -dlinear-core-lint+    -- we filter, -dcore-lint, -dstg-lint etc.+    , "-dlinear-core-lint"+    ] ++ options_9_0_affects++options_9_0_affects :: [String]+options_9_0_affects =+    [ "-fcmm-static-pred"     ]
+ tests/UnitTests/Distribution/Utils/CharSet.hs view
@@ -0,0 +1,27 @@+{-# LANGUAGE CPP #-}+-- isAlpha and isAlphaNum definitions change from base to base+#if MIN_VERSION_base(4,12,0) && !MIN_VERSION_base(4,13,0)+#define HAS_TESTS+#endif+module UnitTests.Distribution.Utils.CharSet where++import Data.Char        (isAlpha, isAlphaNum)+import Data.List        (foldl')+import Test.Tasty       (TestTree, testGroup)+import Test.Tasty.HUnit (testCase, (@?=))++import qualified Distribution.Utils.CharSet as CS++tests :: TestTree+tests = testGroup "Distribution.Utils.CharSet"+    [ testCase "alphanum" $+        CS.alphanum @?= foldl' (flip CS.insert) CS.empty+            [ c | c <- [ minBound .. maxBound ], isAlphaNum c ]++    , testCase "alpha" $+        CS.alpha @?= foldl' (flip CS.insert) CS.empty+            [ c | c <- [ minBound .. maxBound ], isAlpha c ]++    , testCase "alpha is subset of alphanum" $+        CS.union CS.alpha CS.alphanum @?= CS.alphanum+    ]
tests/UnitTests/Distribution/Utils/Structured.hs view
@@ -2,8 +2,8 @@ module UnitTests.Distribution.Utils.Structured (tests) where  import Data.Proxy                    (Proxy (..))+import Distribution.Utils.MD5        (md5FromInteger) import Distribution.Utils.Structured (structureHash)-import GHC.Fingerprint               (Fingerprint (..)) import Test.Tasty                    (TestTree, testGroup) import Test.Tasty.HUnit              (testCase, (@?=)) @@ -11,7 +11,8 @@ import Distribution.Types.VersionRange (VersionRange)  #if MIN_VERSION_base(4,7,0)-import Distribution.Types.LocalBuildInfo (LocalBuildInfo)+import Distribution.Types.GenericPackageDescription (GenericPackageDescription)+import Distribution.Types.LocalBuildInfo            (LocalBuildInfo) #endif  import UnitTests.Orphans ()@@ -19,10 +20,11 @@ tests :: TestTree tests = testGroup "Distribution.Utils.Structured"     -- This test also verifies that structureHash doesn't loop.-    [ testCase "VersionRange"   $ structureHash (Proxy :: Proxy VersionRange)   @?= Fingerprint 0x3827faffd22242bf 0xfd0c337e60fc808b-    , testCase "SPDX.License"   $ structureHash (Proxy :: Proxy License)        @?= Fingerprint 0xd3d4a09f517f9f75 0xbc3d16370d5a853a+    [ testCase "VersionRange"              $ structureHash (Proxy :: Proxy VersionRange)               @?= md5FromInteger 0x39396fc4f2d751aaa1f94e6d843f03bd+    , testCase "SPDX.License"              $ structureHash (Proxy :: Proxy License)                    @?= md5FromInteger 0xd3d4a09f517f9f75bc3d16370d5a853a     -- The difference is in encoding of newtypes #if MIN_VERSION_base(4,7,0)-    , testCase "LocalBuildInfo" $ structureHash (Proxy :: Proxy LocalBuildInfo) @?= Fingerprint 0xb48ff44b0e5d96ff 0xfc099544337e90ab+    , testCase "GenericPackageDescription" $ structureHash (Proxy :: Proxy GenericPackageDescription)  @?= md5FromInteger 0x2f869c09d0cd2288d55b0455830e5a61+    , testCase "LocalBuildInfo"            $ structureHash (Proxy :: Proxy LocalBuildInfo)             @?= md5FromInteger 0x2d64c99467083bef4a894162a121c467 #endif     ]
tests/UnitTests/Distribution/Version.hs view
@@ -1,6 +1,5 @@ {-# LANGUAGE StandaloneDeriving, DeriveDataTypeable #-}-{-# OPTIONS_GHC -fno-warn-orphans-                -fno-warn-incomplete-patterns+{-# OPTIONS_GHC -fno-warn-incomplete-patterns                 -fno-warn-deprecations                 -fno-warn-unused-binds #-} --FIXME module UnitTests.Distribution.Version (versionTests) where@@ -16,16 +15,15 @@  import Data.Typeable (typeOf) import Math.NumberTheory.Logarithms (intLog2)-import Text.PrettyPrint as Disp (text, render, parens, hcat-                                ,punctuate, int, char, (<+>))+import Text.PrettyPrint as Disp (text, render, hcat+                                ,punctuate, int, char) import Test.Tasty import Test.Tasty.QuickCheck import qualified Test.Laws as Laws -import Test.QuickCheck.Utils+import Test.QuickCheck.Instances.Cabal ()  import Data.Maybe (fromJust)-import Data.Function (on)  versionTests :: [TestTree] versionTests =@@ -131,24 +129,6 @@ --     -- , property prop_parse_disp5 --   ] -instance Arbitrary Version where-  arbitrary = do-      branch <- smallListOf1 $-                  frequency [(3, return 0)-                            ,(3, return 1)-                            ,(2, return 2)-                            ,(2, return 3)-                            ,(1, return 0xfffd)-                            ,(1, return 0xfffe) -- max fitting into packed W64-                            ,(1, return 0xffff)-                            ,(1, return 0x10000)]-      return (mkVersion branch)-    where-      smallListOf1 = adjustSize (\n -> min 6 (n `div` 3)) . listOf1--  shrink ver = [ mkVersion ns | ns <- shrink (versionNumbers ver)-                              , not (null ns) ]- newtype VersionArb = VersionArb [Int]                    deriving (Eq,Ord,Show) @@ -170,45 +150,6 @@     , all (>=0) xs'     ] -instance Arbitrary VersionRange where-  arbitrary = sized verRangeExp-    where-      verRangeExp n = frequency $-        [ (2, return anyVersion)-        , (1, liftM thisVersion arbitrary)-        , (1, liftM laterVersion arbitrary)-        , (1, liftM orLaterVersion arbitrary)-        , (1, liftM orLaterVersion' arbitrary)-        , (1, liftM earlierVersion arbitrary)-        , (1, liftM orEarlierVersion arbitrary)-        , (1, liftM orEarlierVersion' arbitrary)-        , (1, liftM withinVersion arbitrary)-        , (1, liftM majorBoundVersion arbitrary)-        , (2, liftM VersionRangeParens arbitrary)-        ] ++ if n == 0 then [] else-        [ (2, liftM2 unionVersionRanges     verRangeExp2 verRangeExp2)-        , (2, liftM2 intersectVersionRanges verRangeExp2 verRangeExp2)-        ]-        where-          verRangeExp2 = verRangeExp (n `div` 2)--      orLaterVersion'   v =-        unionVersionRanges (LaterVersion v)   (ThisVersion v)-      orEarlierVersion' v =-        unionVersionRanges (EarlierVersion v) (ThisVersion v)--  shrink AnyVersion                   = []-  shrink (ThisVersion v)              = map ThisVersion (shrink v)-  shrink (LaterVersion v)             = map LaterVersion (shrink v)-  shrink (EarlierVersion v)           = map EarlierVersion (shrink v)-  shrink (OrLaterVersion v)           = LaterVersion v : map OrLaterVersion (shrink v)-  shrink (OrEarlierVersion v)         = EarlierVersion v : map OrEarlierVersion (shrink v)-  shrink (WildcardVersion v)          = map WildcardVersion ( shrink v)-  shrink (MajorBoundVersion v)        = map MajorBoundVersion (shrink v)-  shrink (VersionRangeParens vr)      = vr : map VersionRangeParens (shrink vr)-  shrink (UnionVersionRanges a b)     = a : b : map (uncurry UnionVersionRanges) (shrink (a, b))-  shrink (IntersectVersionRanges a b) = a : b : map (uncurry IntersectVersionRanges) (shrink (a, b))- --------------------- -- Version properties --@@ -313,10 +254,11 @@      withinRange v' (invertVersionRange vr)   == not (withinRange v' vr) -prop_withinVersion :: Version -> Version -> Bool+prop_withinVersion :: Version -> Version -> Property prop_withinVersion v v' =-     withinRange v' (withinVersion v)-  == (v' >= v && v' < upper v)+    withinRange v' (withinVersion v)+    ===+    (v' >= v && v' < upper v)   where     upper = alterVersion $ \numbers -> case unsnoc numbers of       Nothing      -> []@@ -330,8 +272,6 @@                       unionVersionRanges intersectVersionRanges                       range   where-    expandVR (WildcardVersion v) =-        intersectVersionRanges (expandVR (orLaterVersion v)) (earlierVersion (wildcardUpperBound v))     expandVR (MajorBoundVersion v) =         intersectVersionRanges (expandVR (orLaterVersion v)) (earlierVersion (majorUpperBound v))     expandVR (OrEarlierVersion v) =@@ -342,7 +282,6 @@       UnionVersionRanges (expandVR v1) (expandVR v2)     expandVR (IntersectVersionRanges v1 v2) =       IntersectVersionRanges (expandVR v1) (expandVR v2)-    expandVR (VersionRangeParens v) = expandVR v     expandVR v = v      upper = alterVersion $ \numbers -> case unsnoc numbers of@@ -415,43 +354,6 @@     || isNoVersion r     || isNoVersion r' ------------------------ VersionIntervals------- | Generating VersionIntervals------ This is a tad tricky as VersionIntervals is an abstract type, so we first--- make a local type for generating the internal representation. Then we check--- that this lets us construct valid 'VersionIntervals'.-----instance Arbitrary VersionIntervals where-  arbitrary = fmap mkVersionIntervals' arbitrary-    where-      mkVersionIntervals' :: [(Version, Bound)] -> VersionIntervals-      mkVersionIntervals' = mkVersionIntervals . go version0-        where-          go :: Version -> [(Version, Bound)] -> [VersionInterval]-          go _ [] = []-          go v [(lv, lb)] =-              [(LowerBound (addVersion lv v) lb, NoUpperBound)]-          go v ((lv, lb) : (uv, ub) : rest) =-              (LowerBound lv' lb, UpperBound uv' ub) : go uv' rest-            where-              lv' = addVersion v lv-              uv' = addVersion lv' uv--          addVersion :: Version -> Version -> Version-          addVersion xs ys = mkVersion $  z (versionNumbers xs) (versionNumbers ys)-            where-              z [] ys' = ys'-              z xs' [] = xs'-              z (x : xs') (y : ys') = x + y : z xs' ys'--instance Arbitrary Bound where-  arbitrary = elements [ExclusiveBound, InclusiveBound]- -- | Check that our VersionIntervals' arbitrary instance generates intervals -- that satisfies the invariant. --@@ -693,15 +595,7 @@  prop_parse_disp1 :: VersionRange -> Bool prop_parse_disp1 vr =-    fmap stripParens (simpleParsec (prettyShow vr)) == Just (normaliseVersionRange vr)-  where-    stripParens :: VersionRange -> VersionRange-    stripParens (VersionRangeParens v) = stripParens v-    stripParens (UnionVersionRanges v1 v2) =-      UnionVersionRanges (stripParens v1) (stripParens v2)-    stripParens (IntersectVersionRanges v1 v2) =-      IntersectVersionRanges (stripParens v1) (stripParens v2)-    stripParens v = v+    simpleParsec (prettyShow vr) == Just (normaliseVersionRange vr)  prop_parse_disp2 :: VersionRange -> Property prop_parse_disp2 vr =@@ -747,18 +641,14 @@      -- precedence:     -- All the same as the usual pretty printer, except for the parens-    alg AnyVersionF                     = Disp.text "-any"     alg (ThisVersionF v)                = Disp.text "==" <<>> pretty v     alg (LaterVersionF v)               = Disp.char '>'  <<>> pretty v     alg (EarlierVersionF v)             = Disp.char '<'  <<>> pretty v     alg (OrLaterVersionF v)             = Disp.text ">=" <<>> pretty v     alg (OrEarlierVersionF v)           = Disp.text "<=" <<>> pretty v-    alg (WildcardVersionF v)            = Disp.text "==" <<>> dispWild v     alg (MajorBoundVersionF v)          = Disp.text "^>=" <<>> pretty v     alg (UnionVersionRangesF r1 r2)     = r1 <+> Disp.text "||" <+> r2     alg (IntersectVersionRangesF r1 r2) = r1 <+> Disp.text "&&" <+> r2-    alg (VersionRangeParensF r)         = Disp.parens r -- parens-      dispWild v =            Disp.hcat (Disp.punctuate (Disp.char '.')
tests/custom-setup/CabalDoctestSetup.hs view
@@ -450,7 +450,7 @@                       ++ show dbstack      -- GHC >= 7.6 uses the '-package-db' flag. See-    -- https://ghc.haskell.org/trac/ghc/ticket/5977.+    -- https://gitlab.haskell.org/ghc/ghc/-/issues/5977     packageDbArgsDb :: [PackageDB] -> [String]     -- special cases to make arguments prettier in common scenarios     packageDbArgsDb dbstack = case dbstack of